From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web12.3528.1668502470794815259 for ; Tue, 15 Nov 2022 00:54:30 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=N7Xd6Biw; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: ray.ni@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668502470; x=1700038470; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=i6pKJSRrihEw9KEU2+Z1MBcUVMicf7ryBswoVJDYcL8=; b=N7Xd6BiwxhXjr4U9WlN9Wkrw+NYLfjED3lqeK47TxnYIzke48hqqXrCG sFYn7vDDnUi98TujemgOcEEdwlW2SxkfG1vEEpztzLArAsH0iNJvBNwEH nPPszlaDCV2csBekS5R3ZR2vKBIqjuctGIBQ2uw1NFrJ3K0jUe9IeOyBf /5r+W06SSuVMOAnvY3smyonfK90s6wK8Q8j/JyaUrl89CKZECin9FpoQU UeqBcGL7VAW16nxULigUxXMCVrSMsGRXTmiMHKhoorGh3qlwMWKSXhCjS zunH0h1TT9q2ODuqrP7MAodP1vncZaeHgdmU2lFPCYswBn6wk6GCLXvpA Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10531"; a="398491223" X-IronPort-AV: E=Sophos;i="5.96,165,1665471600"; d="scan'208";a="398491223" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Nov 2022 00:54:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10531"; a="638870028" X-IronPort-AV: E=Sophos;i="5.96,165,1665471600"; d="scan'208";a="638870028" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga002.jf.intel.com with ESMTP; 15 Nov 2022 00:54:27 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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; Tue, 15 Nov 2022 00:54:25 -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; Tue, 15 Nov 2022 00:54:25 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.169) 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; Tue, 15 Nov 2022 00:54:23 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NaUFN8O1AAH2tz33WLgrngFNQWyU19s0MY14umlpzP0HAlfnCvSJzu++kQlLheEBXSDiRp/MPZSgG3O52/Jl2XagyC15XD1k8futS3i8mzvkpf6Hbx/qaIUAatW211HPhdTtZx5p1a+GgAVjRsQObbB+ZugErpX9jZeqt4y/i7ktfpX8zNzQbx5UZovLqc7xl+/+Cgsm9+VeZ+7iVYbh1cWiCrEr+Ku0080CQETeNDqok/rGP9Czsox6nbH1jCDD3Q+BmkUfVij5+9tvTaeitAoM/CwG8jWwDDPvlEn1FIp2KGZjp4pSBCWLKGkZ4bcoMn5lRhcrbCZ9AuizPyTubQ== 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=i6pKJSRrihEw9KEU2+Z1MBcUVMicf7ryBswoVJDYcL8=; b=h90epyPyfOHCPCfJsrqJ1GEWWtp/EL6J1HukhHEEmwFMXzTVbrpWVK7WUADYOV0Y1My1Qgx3xgEuq9QKFdZK3B8SkUA98Ugvm3PVbUNiE08OJTWArN2St42WeSZsdSjoMbtUY6yps4QfNP9xdhbAGHAcUSMeF+vyD+cq6uIOEyaKld8hYUVpnyr9i4PXZT62VrMssvYwTxKJx6qi2ZOd2qME9hW5GPYYPCxqDSgRJm//hjMldZIed+6fj9iJ3YBF20J1mqoISib7z5VJ8RnZEcGYYcsAx0FuDME6YfkVctI0vdPUSAmNsvwXMRwYQjoxUlFXqX4KmeWIw6YMGS9sVg== 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 MWHPR11MB1631.namprd11.prod.outlook.com (2603:10b6:301:10::10) by DM8PR11MB5606.namprd11.prod.outlook.com (2603:10b6:8:3c::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.18; Tue, 15 Nov 2022 08:53:47 +0000 Received: from MWHPR11MB1631.namprd11.prod.outlook.com ([fe80::2c28:e02b:3dc0:b817]) by MWHPR11MB1631.namprd11.prod.outlook.com ([fe80::2c28:e02b:3dc0:b817%12]) with mapi id 15.20.5813.018; Tue, 15 Nov 2022 08:53:47 +0000 From: "Ni, Ray" To: "devel@edk2.groups.io" , "Chen, Christine" 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/rR2g Date: Tue, 15 Nov 2022 08:53:46 +0000 Message-ID: References: <20221115084539.331-1-yuwei.chen@intel.com> In-Reply-To: <20221115084539.331-1-yuwei.chen@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MWHPR11MB1631:EE_|DM8PR11MB5606:EE_ x-ms-office365-filtering-correlation-id: 4bef7243-f4f3-4391-8502-08dac6e6e7ed 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: 5dSF+eK7dH+LOMAMhaFhDvH6jBvFeoNKNlu7xNy+SjIkyYOsw54ClBD8z/NNNP/K9BA8jrw93mzi/eCOHkkFLjqwkxgws72n8eUxA/+Q6qIGCOtL/wVjynlF6Z+Y/6Q27ALgYjbhodpjzqcpRxpJT6g58N5dCv23IuVuTx/7SYKD5QwjLmsuM5AEDY6hVbSIHll+A/++vSNjJAc7zQKT0dAlfYggRmSilZJzNiaVHsxzBdPYQvCDB6tAxT+7LAcj/mm0coPmeK7FyZIHDpN+maR5TUphMUqgg+0oedNMG8p1+FouMrHlN+Va3Qr0n5efcy77wUWMcuvxN9RiatMr9JBG2MKStJhm+zB9+nsXHxN3kzfZ1HNH2dpEanDlzV+U04jzmuYG4wqUkp4XhTEHo7XczRWNl+aAfCvsxlovQdKAzxJOZo5xcJ71BhYCdjP6z6xBobEPflfba4/NplyfRuw4gUFFuHI+tfpxR6igo6J/nOIrHo1lwO3V7pGjbw/t7gXwx0jLnTZ5jr7qM+KrPMGoXwk1GpxPGZ7LK8MJm9I+UBkpuu3Fdn7dLg1mvVnuPWHas4A58xj9hxQaxb3pLyilcAuij+xnW2Pun0AR3mMAAnX7cI7Ouh/XZ9l/1r1W5a8EFaDnOTvcvO6yEpo5js9MYzuJcZIR7kM52KWNblk4BiWC+SgPs4KNqL0kDvdh5JqYuyHrWZPfX3L+DESxfyrY2AkdrZePmC8AR6LKH5pMMW6lM6XLhowyzVO6pm9f0FLwvA17WiB2shyJ892OBOB75GGrxM5zRKdCrtrB9VgcRZBH6zF9kidKjLCWx9QEkRm5R9m6SO4jUnVqz6D/1w== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1631.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(366004)(346002)(396003)(39860400002)(376002)(451199015)(478600001)(71200400001)(7696005)(110136005)(6506007)(53546011)(38070700005)(66899015)(966005)(6636002)(54906003)(86362001)(19627235002)(9686003)(26005)(82960400001)(55016003)(316002)(38100700002)(8676002)(4326008)(8936002)(41300700001)(76116006)(66556008)(64756008)(66446008)(66946007)(66476007)(52536014)(122000001)(5660300002)(186003)(83380400001)(30864003)(33656002)(2906002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?blZUZ0NSUnFSOXZDUitXTGlaNXN1eUEzazNKVHpyd0Q5dk1rdFlYaVlZWnIz?= =?utf-8?B?aXRZNkM2TXR3VzluNXc0YlhoODdhQXhsUUJyaXNqQVB5U0RFMUl2emdGdEY0?= =?utf-8?B?d01sSnE4Nlc2T25CYXY4MW1TdHdtdDRERmlsT2lIZHpKVUZQQm1ONFB0RnBw?= =?utf-8?B?L21wYUZxWHo2UmQxZEp1dHNCcXEzbjdwRlFUTitUYVdYemhYd1l1aWtjZ0xs?= =?utf-8?B?cG9jb2xyZ1ZHMHNqM21MNll6bWFkYW1ZL014ZGNTVHhPSVkyN3BmOHdUK20z?= =?utf-8?B?alBIelNaZ05uZkduZTRXZEF3dFZlV3ZOd1BZNENQekJwRElWaXRoekJ0NlFZ?= =?utf-8?B?K01DamtIbDJpUmtSMm5CMEhLemd5aVZoVzQ2bDE0Sk1Cd1dxL3k5MlNkeVdO?= =?utf-8?B?czJ1dnErWjJXWGNUTlRvY01LMXdLZkZwRXcxd3k1N2loR0lxQVh2bktNMFhR?= =?utf-8?B?NStZRkw4QzRlU2NPR3owZ2Ntbmw3KzcwQzhPWFVBSnd0aEhPU1JvYU1ZSFlT?= =?utf-8?B?NU5BRU5Ea0l1R1g3SVRHM2p1cU9SQ0NObWJXdHBWaER1YTNUbkRpVmRRMEM4?= =?utf-8?B?Q0Z1UjdKSFZMTU9xT0ViQXVKWjdZY0wzSXpjMEdoS3UyNWNaWE8za2ZBT1lS?= =?utf-8?B?b3JGTXllR3ZZM3l3QWZTZXJHOTJEOFQzSnZtSXFxSnU0eWFXQmw4TVV2U29u?= =?utf-8?B?akVBa1JYeG41TkxBcU9helJudE5KMUZEMjN1WkVZNit1ZGM0S2lPLzhzUW4r?= =?utf-8?B?L1ZTV2luYnl0d2h3bDQybkxhaXE1SkVMS1NIY1Q0REwrQmlqTmt5cXhpcGhE?= =?utf-8?B?UUI1ZUNYWlJPYUhDc0NPOVdkbXJWd3V0WGVHb01SZ1dwMHVyRnk3cHBTV2ZF?= =?utf-8?B?TnZKblZsYitHQ052allzVDJ5TTJNMnhWVzFKeVBYS2h6S3pKN2kwbWZTTGc4?= =?utf-8?B?K2tuWHo3ZW04UFhtVW1vTU5tUjBsY1J4dVJnWGRodXBDM1J3cVdaOWpseHVY?= =?utf-8?B?U0ZvY1V3YWt2RXBKcHlEUStkUkhoS0x1NEFHMkh1dkFuVWhBNFlUT3c5bTJw?= =?utf-8?B?cnpxQzhTYjVRd2tzcWpqTnIraUxlUXVwUG5zRUZEd2htWVNjVGJORnhtUmtt?= =?utf-8?B?Rit1U3hPYWhIdEF4MEN5bndnM1FvQU1RM1FzZkcxYWw4QWRrcHhURDZySVFE?= =?utf-8?B?RkRicld2eldRTWFrUEpHOTFiWFl3Wllob0FoU1pvaVFBZHplRHBaL0dySk52?= =?utf-8?B?STQyK21lLzlUNjlqbFRjU1hwVHJyTnFyRGxNaEM5SkZ3NkpTQ2VOeXVVZEE5?= =?utf-8?B?V2doMFdueC9NYXVpdDhiQklNd3JOV1dtdzdncUw4ejcxeDVTMHgxaS83MVVC?= =?utf-8?B?dnd6emt6UEJoWEEyWkt0RE9iVHpMaEZ0RnhXbEprcG45cS9KU1JwVDBFUjlB?= =?utf-8?B?Tm1oaWJ5Ritqdk5ISGE3Zk96OThSaFE4OTNjYVVvd3FXTE9WNkh0YlpsT3Rt?= =?utf-8?B?eWZkR0I0elY1c29uSUpYbFhjQ0hMMlY2NWNQVHJFZThDOEZTWEQzTmJZZGZR?= =?utf-8?B?L3lwTlFCQjU2SjJiVU9iUG5IeWN1RjFodXBVZEdnQW9GWXR2d1RrQ1hWY2JR?= =?utf-8?B?Ylc5L3VRc3h0Zlp4amc5RGZPc050blJueVpmRForWXFtdWtjejVCUlVXdG91?= =?utf-8?B?MG04YS9RaU9OMjYrZllKVXZocnlXVUtHVUhJVDdEUlRqcE5BYzJGOTU1QS9r?= =?utf-8?B?YlVpQzBhSjRqUmpPYkh5N0F1Y1RkdmxOdTkweCtMc3ZPV0tjcWNKQVlQb3Y4?= =?utf-8?B?WktVTVVRK2d0a2pySjlrRjBjTnovYS8vL2ZGWSthTmdNZ3B1UnNZSUdTa0xp?= =?utf-8?B?ay9NKzFpbjArWVhNZndlajlucWswVHNEK0N4dERGaW5rOFZpYUhrZGVyeFBu?= =?utf-8?B?RE1lQVByRUkrY1gvUGxoNUhlVUV6c3h2QlJ2MjZoOHI3VVFEMEFxOFJpVmta?= =?utf-8?B?bTlrUU5KcEQvdVR4SDVIei9KdjBFN1hrSUlUazl2Vm5nSTd4S1Mwa2VKbHJP?= =?utf-8?B?RUdhSnY2dm0vei9WUjNIK0lsZUdOZVZwZ0hwTG5zcWNBdUZMZkhFeG5yNXMx?= =?utf-8?Q?0+zo=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1631.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4bef7243-f4f3-4391-8502-08dac6e6e7ed X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Nov 2022 08:53:46.1602 (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: rbkBHE9bLxSilmJ3ND/u9VatQj0SaAS1wDlaJHUp04jz1cDVFq81tw7MKy0gejF/EBwYkKQZHHQDtwMptjNMpA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR11MB5606 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 V293ISBDdXJpb3VzIGhvdyBsb25nIGRvZXMgaXQgdGFrZSB0byBkZXZlbG9wIHRoZSBweXRob24g dmVyc2lvbiBvZiBWZnJDb21waWxlcj8NCkFuZCB3aGF0IHRlc3RzIGhhdmUgYmVlbiBkb25lIHRv IGd1YXJhbnRlZSBpdCBwcm92aWRlcyB0aGUgZXhhY3RseSBzYW1lIGZ1bmN0aW9uYWxpdHkgYXMg b2xkIGMgdmVyc2lvbj8NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBZ dXdlaQ0KPiBDaGVuDQo+IFNlbnQ6IFR1ZXNkYXksIE5vdmVtYmVyIDE1LCAyMDIyIDQ6NDYgUE0N Cj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBZYW5nLCBZdXRpbmcyIDx5dXRpbmcy LnlhbmdAaW50ZWwuY29tPjsgRmVuZywgQm9iIEMNCj4gPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsg R2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gU3ViamVjdDogW2VkazIt ZGV2ZWxdIFtQYXRjaCBWMiAxLzNdIFtlZGsyLXN0YWdpbmddQmFzZVRvb2xzOiBBZGQgUHl0aG9u DQo+IFZmckNvbXBpbGVyIHRvb2wNCj4gDQo+IEZyb206IFl1dGluZyBZYW5nIDx5dXRpbmcyLnlh bmdAaW50ZWwuY29tPg0KPiANCj4gVGhpcyBpcyB0aGUgcHl0aG9uIGltcGxlbWVudGF0aW9uIG9m IHRoZSBDIFZmckNvbXBpbGVyIHRvb2wuDQo+IEN1cnJlbnRseSwgdGhpcyBweXRob24gdG9vbCB3 aWxsIGdlbmVyYXRlIHlhbWwvanNvbiBmaWxlcw0KPiBmb3IgYmV0dGVyIHZhcmlhYmxlIHJlbGF0 ZWQgaW5mb3JtYXRpb24gcHJlc2VudGF0aW9uLg0KPiBJbiBmdXR1cmUsIGl0IHdpbGwgY292ZXIg dGhlIHNhbWUgdXNhZ2UgYXMgdGhlIEMgdG9vbC4NCj4gDQo+IENjOiBCb2IgRmVuZyA8Ym9iLmMu ZmVuZ0BpbnRlbC5jb20+DQo+IENjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20u Y24+DQo+IENjOiBZdXdlaSBDaGVuIDx5dXdlaS5jaGVuQGludGVsLmNvbT4NCj4gU2lnbmVkLW9m Zi1ieTogWXV0aW5nIFlhbmcgPHl1dGluZzIueWFuZ0BpbnRlbC5jb20+DQo+IC0tLQ0KPiAgQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvQ29tbW9uQ3R5cGVzLnB5ICAgICB8ICAx Mzk0DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysNCj4gKysrKysrDQo+ICBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxl ci9SRUFETUUubWQgICAgICAgICAgIHwgICAgMjAgKw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRo b24vVmZyQ29tcGlsZXIvVmZyRXJyb3IucHkgICAgICAgICB8ICAgMTYyICsrKysrKysrDQo+ICBC YXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJGb3JtUGtnLnB5ICAgICAgIHwg IDI3MzgNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKw0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrDQo+ICsrKysrKysrKw0KPiAgQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvVmZyU3ludGF4Lmc0ICAgICAgICB8ICAxODg3DQo+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysNCj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBp bGVyL1ZmclN5bnRheExleGVyLnB5ICAgfCAgMTcwOQ0KPiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICsrKysrKysrKysrKysrKysr KysrDQo+ICBCYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhQYXJz ZXIucHkgIHwgMjA0NjANCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKw0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKw0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKw0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiArKysrKysNCj4gIEJhc2VU b29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheFZpc2l0b3IucHkgfCAgNTEw Ng0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrDQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQo+ICsNCj4gIEJhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1Zm ckNvbXBpbGVyL1ZmclRyZWUucHkgICAgICAgICAgfCAgICA4OCArKysrKw0KPiAgQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyVXRpbGl0eS5weSAgICAgICB8ICAxOTkxDQo+ ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBCYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9WZnJDb21waWxlci9tYWluLnB5ICAgICAgICAgICAgIHwgICAgMjcgKysNCj4g IDExIGZpbGVzIGNoYW5nZWQsIDM1NTgyIGluc2VydGlvbnMoKykNCj4gDQo+IGRpZmYgLS1naXQg YS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9Db21tb25DdHlwZXMucHkNCj4g Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9Db21tb25DdHlwZXMucHkNCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uNzMxYWUxNTYwOQ0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVy L0NvbW1vbkN0eXBlcy5weQ0KPiBAQCAtMCwwICsxLDEzOTQgQEANCj4gK2Zyb20gY3R5cGVzIGlt cG9ydCAqDQo+IA0KPiArZnJvbSByZSBpbXBvcnQgQSwgWA0KPiANCj4gK2Zyb20gdGVsbmV0bGli IGltcG9ydCBYM1BBRA0KPiANCj4gK2Zyb20gdGtpbnRlciBpbXBvcnQgWVZpZXcNCj4gDQo+ICtp bXBvcnQgdXVpZA0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyRXJyb3IgaW1wb3J0ICoNCj4g DQo+ICtmcm9tIHN0cnVjdCBpbXBvcnQgKg0KPiANCj4gKw0KPiANCj4gK0VGSV9TVFJJTkdfSURf SU5WQUxJRCA9IDB4MA0KPiANCj4gK0VGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCA9IDB4 MDAwMA0KPiANCj4gK0VGSV9ISUlfREVGQVVMVF9DTEFTU19NQU5VRkFDVFVSSU5HID0gMHgwMDAx DQo+IA0KPiArRUZJX0lGUl9NQVhfTEVOR1RIID0gMHhGRg0KPiANCj4gK0VGSV9WQVJTVE9SRV9J RF9JTlZBTElEID0gMA0KPiANCj4gK0VGSV9WQVJTVE9SRV9JRF9TVEFSVCA9IDB4MjANCj4gDQo+ ICtFRklfVkFST0ZGU0VUX0lOVkFMSUQgPSAweEZGRkYNCj4gDQo+ICtFRklfSU1BR0VfSURfSU5W QUxJRCA9IDB4RkZGRg0KPiANCj4gKw0KPiANCj4gK0VGSV9OT05fREVWSUNFX0NMQVNTID0gMHgw MA0KPiANCj4gK0VGSV9ESVNLX0RFVklDRV9DTEFTUyA9IDB4MDENCj4gDQo+ICtFRklfVklERU9f REVWSUNFX0NMQVNTID0gMHgwMg0KPiANCj4gK0VGSV9ORVRXT1JLX0RFVklDRV9DTEFTUyA9IDB4 MDQNCj4gDQo+ICtFRklfSU5QVVRfREVWSUNFX0NMQVNTID0gMHgwOA0KPiANCj4gK0VGSV9PTl9C T0FSRF9ERVZJQ0VfQ0xBU1MgPSAweDEwDQo+IA0KPiArRUZJX09USEVSX0RFVklDRV9DTEFTUyA9 IDB4MjANCj4gDQo+ICsNCj4gDQo+ICtFRklfU0VUVVBfQVBQTElDQVRJT05fU1VCQ0xBU1MgPSAw eDAwDQo+IA0KPiArRUZJX0dFTkVSQUxfQVBQTElDQVRJT05fU1VCQ0xBU1MgPSAweDAxDQo+IA0K PiArRUZJX0ZST05UX1BBR0VfU1VCQ0xBU1MgPSAweDAyDQo+IA0KPiArRUZJX1NJTkdMRV9VU0Vf U1VCQ0xBU1MgPSAweDAzDQo+IA0KPiArDQo+IA0KPiArIyBFRklfSElJX1BBQ0tBR0VfVFlQRV94 Lg0KPiANCj4gKw0KPiANCj4gK0VGSV9ISUlfUEFDS0FHRV9UWVBFX0FMTCA9IDB4MDANCj4gDQo+ ICtFRklfSElJX1BBQ0tBR0VfVFlQRV9HVUlEID0gMHgwMQ0KPiANCj4gK0VGSV9ISUlfUEFDS0FH RV9GT1JNID0gMHgwMg0KPiANCj4gK0VGSV9ISUlfUEFDS0FHRV9LRVlCT0FSRF9MQVlPVVQgPSAw eDAzDQo+IA0KPiArRUZJX0hJSV9QQUNLQUdFX1NUUklOR1MgPSAweDA0DQo+IA0KPiArRUZJX0hJ SV9QQUNLQUdFX0ZPTlRTID0gMHgwNQ0KPiANCj4gK0VGSV9ISUlfUEFDS0FHRV9JTUFHRVMgPSAw eDA2DQo+IA0KPiArRUZJX0hJSV9QQUNLQUdFX1NJTVBMRV9GT05UUyA9IDB4MDcNCj4gDQo+ICtF RklfSElJX1BBQ0tBR0VfREVWSUNFX1BBVEggPSAweDA4DQo+IA0KPiArRUZJX0hJSV9QQUNLQUdF X0VORCA9IDB4REYNCj4gDQo+ICtFRklfSElJX1BBQ0tBR0VfVFlQRV9TWVNURU1fQkVHSU4gPSAw eEUwDQo+IA0KPiArRUZJX0hJSV9QQUNLQUdFX1RZUEVfU1lTVEVNX0VORCA9IDB4RkYNCj4gDQo+ ICsNCj4gDQo+ICtFRklfSUZSX0VYVEVORF9PUF9MQUJFTCA9IDB4MA0KPiANCj4gK0VGSV9JRlJf RVhURU5EX09QX0JBTk5FUiA9IDB4MQ0KPiANCj4gK0VGSV9JRlJfRVhURU5EX09QX1RJTUVPVVQg PSAweDINCj4gDQo+ICtFRklfSUZSX0VYVEVORF9PUF9DTEFTUyA9IDB4Mw0KPiANCj4gK0VGSV9J RlJfRVhURU5EX09QX1NVQkNMQVNTID0gMHg0DQo+IA0KPiArDQo+IA0KPiArTUFYX0lGUl9FWFBS RVNTSU9OX0RFUFRIID0gMHg5DQo+IA0KPiArDQo+IA0KPiArSU5WQUxJRF9BUlJBWV9JTkRFWCA9 IDB4RkZGRkZGRkYNCj4gDQo+ICsNCj4gDQo+ICtFRklfSUZSX1RZUEVfTlVNX1NJWkVfOCA9IDB4 MDANCj4gDQo+ICtFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYgPSAweDAxDQo+IA0KPiArRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzMyID0gMHgwMg0KPiANCj4gK0VGSV9JRlJfVFlQRV9OVU1fU0laRV82 NCA9IDB4MDMNCj4gDQo+ICtFRklfSUZSX1RZUEVfQk9PTEVBTiA9IDB4MDQNCj4gDQo+ICtFRklf SUZSX1RZUEVfVElNRSA9IDB4MDUNCj4gDQo+ICtFRklfSUZSX1RZUEVfREFURSA9IDB4MDYNCj4g DQo+ICtFRklfSUZSX1RZUEVfU1RSSU5HID0gMHgwNw0KPiANCj4gK0VGSV9JRlJfVFlQRV9PVEhF UiA9IDB4MDgNCj4gDQo+ICtFRklfSUZSX1RZUEVfVU5ERUZJTkVEID0gMHgwOQ0KPiANCj4gK0VG SV9JRlJfVFlQRV9BQ1RJT04gPSAweDBBDQo+IA0KPiArRUZJX0lGUl9UWVBFX0JVRkZFUiA9IDB4 MEINCj4gDQo+ICtFRklfSUZSX1RZUEVfUkVGID0gMHgwQw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK0VGSV9JRlJfRkxBR1NfSE9SSVpPTlRBTCA9IDB4MDENCj4gDQo+ICsNCj4gDQo+ICtFRklf SUZSX0ZMQUdfUkVBRF9PTkxZID0gMHgwMQ0KPiANCj4gK0VGSV9JRlJfRkxBR19DQUxMQkFDSyA9 IDB4MDQNCj4gDQo+ICtFRklfSUZSX0ZMQUdfUkVTRVRfUkVRVUlSRUQgPSAweDEwDQo+IA0KPiAr RUZJX0lGUl9GTEFHX1JFU1RfU1RZTEUgPSAweDIwDQo+IA0KPiArRUZJX0lGUl9GTEFHX1JFQ09O TkVDVF9SRVFVSVJFRCA9IDB4NDANCj4gDQo+ICtFRklfSUZSX0ZMQUdfT1BUSU9OU19PTkxZID0g MHg4MA0KPiANCj4gKw0KPiANCj4gK0VGSV9JRlJfU1RSSU5HX01VTFRJX0xJTkUgPSAweDAxDQo+ IA0KPiArDQo+IA0KPiArRURLSUlfSUZSX0RJU1BMQVlfQklUID0gMHhDMA0KPiANCj4gK0VES0lJ X0lGUl9ESVNQTEFZX0lOVF9ERUNfQklUID0gMHgwMA0KPiANCj4gK0VES0lJX0lGUl9ESVNQTEFZ X1VJTlRfREVDX0JJVCA9IDB4NDANCj4gDQo+ICtFREtJSV9JRlJfRElTUExBWV9VSU5UX0hFWF9C SVQgPSAweDgwDQo+IA0KPiArDQo+IA0KPiArRURLSUlfSUZSX05VTUVSSUNfU0laRV9CSVQgPSAw eDNGDQo+IA0KPiArDQo+IA0KPiArRUZJX0lGUl9NQVhfREVGQVVMVF9UWVBFID0gMHgxMA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9HVUlEKFN0cnVjdHVyZSk6DQo+IA0KPiAr ICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAo J0RhdGExJywgY191aW50MzIpLA0KPiANCj4gKyAgICAgICAgKCdEYXRhMicsIGNfdWludDE2KSwN Cj4gDQo+ICsgICAgICAgICgnRGF0YTMnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ0Rh dGE0JywgY191Ynl0ZSAqIDgpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBmcm9tX2xpc3Qoc2VsZiwgbGlzdGZvcm1hdDogbGlzdCkgLT4gTm9uZToNCj4gDQo+ICsgICAg ICAgIHNlbGYuRGF0YTEgPSBsaXN0Zm9ybWF0WzBdDQo+IA0KPiArICAgICAgICBzZWxmLkRhdGEy ID0gbGlzdGZvcm1hdFsxXQ0KPiANCj4gKyAgICAgICAgc2VsZi5EYXRhMyA9IGxpc3Rmb3JtYXRb Ml0NCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDgpOg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuRGF0YTRbaV0gPSBsaXN0Zm9ybWF0W2kgKyAzXQ0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgX19jbXBfXyhzZWxmLCBvdGhlcmd1aWQpIC0+IGJvb2w6DQo+IA0KPiArICAgICAgICBpZiBu b3QgaXNpbnN0YW5jZShvdGhlcmd1aWQsIEVGSV9HVUlEKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gJ0lucHV0IGlzIG5vdCB0aGUgR1VJRCBpbnN0YW5jZSEnDQo+IA0KPiArICAgICAgICBy dCA9IEZhbHNlDQo+IA0KPiArICAgICAgICBpZiBzZWxmLkRhdGExID09IG90aGVyZ3VpZC5EYXRh MSBhbmQgc2VsZi5EYXRhMiA9PSBvdGhlcmd1aWQuRGF0YTIgYW5kDQo+IHNlbGYuRGF0YTMgPT0g b3RoZXJndWlkLkRhdGEzOg0KPiANCj4gKyAgICAgICAgICAgIHJ0ID0gVHJ1ZQ0KPiANCj4gKyAg ICAgICAgICAgIGZvciBpIGluIHJhbmdlKDgpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBydCA9 IHJ0ICYgKHNlbGYuRGF0YTRbaV0gPT0gb3RoZXJndWlkLkRhdGE0W2ldKQ0KPiANCj4gKyAgICAg ICAgcmV0dXJuIHJ0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArR3VpZEFycmF5ID0gY191Ynl0 ZSAqIDgNCj4gDQo+ICtFRklfSElJX1BMQVRGT1JNX1NFVFVQX0ZPUk1TRVRfR1VJRCA9IEVGSV9H VUlEKA0KPiANCj4gKyAgICAweDkzMDM5OTcxLCAweDg1NDUsIDB4NGIwNCwNCj4gDQo+ICsgICAg R3VpZEFycmF5KDB4YjQsIDB4NWUsIDB4MzIsIDB4ZWIsIDB4ODMsIDB4MjYsIDB4NCwgMHhlKSkN Cj4gDQo+ICsNCj4gDQo+ICtFRklfSUZSX1RJQU5PX0dVSUQgPSBFRklfR1VJRCgNCj4gDQo+ICsg ICAgMHhmMGIxNzM1LCAweDg3YTAsIDB4NDE5MywNCj4gDQo+ICsgICAgR3VpZEFycmF5KDB4YjIs IDB4NjYsIDB4NTMsIDB4OGMsIDB4MzgsIDB4YWYsIDB4NDgsIDB4Y2UpKQ0KPiANCj4gKw0KPiAN Cj4gK0VES0lJX0lGUl9CSVRfVkFSU1RPUkVfR1VJRCA9ICgweDgyRERENjhCLCAweDkxNjMsIDB4 NDE4NywNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3VpZEFycmF5KDB4 OUIsIDB4MjcsIDB4MjAsIDB4QTgsIDB4RkQsIDB4NjAsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweEE3LCAweDFEKSkNCj4gDQo+ICsNCj4gDQo+ICtF RklfSUZSX0ZSQU1FV09SS19HVUlEID0gKDB4MzFjYTVkMWEsIDB4ZDUxMSwgMHg0OTMxLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgR3VpZEFycmF5KDB4YjcsIDB4ODIsIDB4YWUs IDB4NmIsIDB4MmIsIDB4MTcsIDB4OGMsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHhkNykpDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9PUF9IRUFE RVIoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRz XyA9IFsNCj4gDQo+ICsgICAgICAgICgnT3BDb2RlJywgY191Ynl0ZSksDQo+IA0KPiArICAgICAg ICAoJ0xlbmd0aCcsIGNfdWJ5dGUsIDcpLCAgIw0KPiANCj4gKyAgICAgICAgKCdTY29wZScsIGNf dWJ5dGUsIDEpLCAgIw0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgRUZJX0lGUl9GT1JNX1NFVChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+ IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZS X09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQo+IA0KPiAr ICAgICAgICAoJ0Zvcm1TZXRUaXRsZScsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgnSGVs cCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCj4gDQo+ ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfR1VJRF9DTEFT UyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNf ID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0K PiArICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQo+IA0KPiArICAgICAgICAoJ0V4dGVuZE9w Q29kZScsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCdDbGFzcycsIGNfdWludDE2KSwNCj4g DQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfR1VJRF9T VUJDTEFTUyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9m aWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiks DQo+IA0KPiArICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQo+IA0KPiArICAgICAgICAoJ0V4 dGVuZE9wQ29kZScsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCdTdWJDbGFzcycsIGNfdWlu dDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9J RlJfREVGQVVMVFNUT1JFKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgnRGVmYXVsdE5hbWUnLCBjX3VpbnQxNiksDQo+IA0K PiArICAgICAgICAoJ0RlZmF1bHRJZCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfVkFSU1RPUkUoU3RydWN0dXJlKToNCj4g DQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAg ICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdHdWlk JywgRUZJX0dVSUQpLA0KPiANCj4gKyAgICAgICAgKCdWYXJTdG9yZUlkJywgY191aW50MTYpLA0K PiANCj4gKyAgICAgICAgKCdTaXplJywgY191aW50MTYpLA0KPiANCj4gKyAgICAgICAgKCdOYW1l JywgY193Y2hhcl9wKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIEVGSV9JRlJfVkFSU1RPUkVfRUZJKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9 IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgnR3VpZCcsIEVGSV9HVUlEKSwNCj4g DQo+ICsgICAgICAgICgnVmFyU3RvcmVJZCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgn QXR0cmlidXRlcycsIGNfdWludDMyKSwNCj4gDQo+ICsgICAgICAgICgnU2l6ZScsIGNfdWludDE2 KSwNCj4gDQo+ICsgICAgICAgICgnTmFtZScsIGNfd2NoYXJfcCksDQo+IA0KPiArICAgIF0NCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0dVSUQoU3RydWN0dXJlKToNCj4g DQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAg ICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdHdWlk JywgRUZJX0dVSUQpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgRUZJX0hJSV9QQUNLQUdFX0hFQURFUihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18g PSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdMZW5ndGgnLCBj X3VpbnQzMiwgMjQpLA0KPiANCj4gKyAgICAgICAgKCdUeXBlJywgY191aW50MzIsIDgpLA0KPiAN Cj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0hJSV9TVFJJTkdf UEFDS0FHRV9IRFIoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAg ICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0hJSV9QQUNLQUdF X0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ0hkclNpemUnLCBjX3VpbnQzMiksDQo+IA0KPiAr ICAgICAgICAoJ1N0cmluZ0luZm9PZmZzZXQnLCBjX3VpbnQzMiksDQo+IA0KPiArICAgICAgICAo J0xhbmd1YWdlV2luZG93JywgY191c2hvcnQgKiAxNiksDQo+IA0KPiArICAgICAgICAoJ0xhbmd1 YWdlTmFtZScsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgnTGFuZ3VhZ2UnLCBjX2NoYXIg KiAyKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9J RlJfVkFSU1RPUkVfTkFNRV9WQUxVRShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAx DQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklf SUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ1ZhclN0b3JlSWQnLCBjX3VpbnQxNiks DQo+IA0KPiArICAgICAgICAoJ0d1aWQnLCBFRklfR1VJRCksDQo+IA0KPiArICAgIF0NCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0ZPUk0oU3RydWN0dXJlKToNCj4gDQo+ ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdGb3JtSWQn LCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ0Zvcm1UaXRsZScsIGNfdWludDE2KSwNCj4g DQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfR1VJRF9C QU5ORVIoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmll bGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0K PiANCj4gKyAgICAgICAgKCdHdWlkJywgRUZJX0dVSUQpLA0KPiANCj4gKyAgICAgICAgKCdFeHRl bmRPcENvZGUnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgICAgICgnVGl0bGUnLCBjX3VpbnQxNiks DQo+IA0KPiArICAgICAgICAoJ0xpbmVOdW1iZXInLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAg ICAoJ0FsaWdubWVudCcsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgRUZJX0lGUl9HVUlEX1RJTUVPVVQoU3RydWN0dXJlKToNCj4gDQo+ICsg ICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgn SGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdHdWlkJywgRUZJ X0dVSUQpLA0KPiANCj4gKyAgICAgICAgKCdFeHRlbmRPcENvZGUnLCBjX3VieXRlKSwNCj4gDQo+ ICsgICAgICAgICgnVGltZU91dCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfR1VJRF9MQUJFTChTdHJ1Y3R1cmUpOg0KPiAN Cj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAg ICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ0d1aWQn LCBFRklfR1VJRCksDQo+IA0KPiArICAgICAgICAoJ0V4dGVuZE9wQ29kZScsIGNfdWJ5dGUpLA0K PiANCj4gKyAgICAgICAgKCdOdW1iZXInLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1JVTEUoU3RydWN0dXJlKToNCj4gDQo+ ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAg ICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdSdWxlSWQn LCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IEVGSV9JRlJfU1RBVEVNRU5UX0hFQURFUihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18g PSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdQcm9tcHQnLCBj X3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ0hlbHAnLCBjX3VpbnQxNiksDQo+IA0KPiArICAg IF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1NVQlRJVExFKFN0cnVj dHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+ IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAg ICAgICgnU3RhdGVtZW50JywgRUZJX0lGUl9TVEFURU1FTlRfSEVBREVSKSwNCj4gDQo+ICsgICAg ICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIEVGSV9JRlJfVEVYVChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18g PSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBF RklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ1N0YXRlbWVudCcsIEVGSV9JRlJf U1RBVEVNRU5UX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ1RleHRUd28nLCBjX3VpbnQxNiks DQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0lN QUdFKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxk c18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4g DQo+ICsgICAgICAgICgnSWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBWYXJTdG9yZUluZm9Ob2RlKFVuaW9uKToNCj4gDQo+ICsgICAg X3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnVmFy TmFtZScsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgnVmFyT2Zmc2V0JywgY191aW50MTYp LA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9R VUVTVElPTl9IRUFERVIoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4g KyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9TVEFU RU1FTlRfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgnUXVlc3Rpb25JZCcsIGNfdWludDE2KSwN Cj4gDQo+ICsgICAgICAgICgnVmFyU3RvcmVJZCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAg ICgnVmFyU3RvcmVJbmZvJywgVmFyU3RvcmVJbmZvTm9kZSksDQo+IA0KPiArICAgICAgICAoJ0Zs YWdzJywgY191Ynl0ZSksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtj bGFzcyB1OE5vZGUoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAg ICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnTWluVmFsdWUnLCBjX3VieXRlKSwNCj4g DQo+ICsgICAgICAgICgnTWF4VmFsdWUnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgICAgICgnU3Rl cCcsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgdTE2Tm9kZShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAg IF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdNaW5WYWx1ZScsIGNfdWludDE2KSwNCj4g DQo+ICsgICAgICAgICgnTWF4VmFsdWUnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ1N0 ZXAnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtj bGFzcyB1MzJOb2RlKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsg ICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ01pblZhbHVlJywgY191aW50MzIpLA0K PiANCj4gKyAgICAgICAgKCdNYXhWYWx1ZScsIGNfdWludDMyKSwNCj4gDQo+ICsgICAgICAgICgn U3RlcCcsIGNfdWludDMyKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2NsYXNzIHU2NE5vZGUoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4g KyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnTWluVmFsdWUnLCBjX3VpbnQ2NCks DQo+IA0KPiArICAgICAgICAoJ01heFZhbHVlJywgY191aW50NjQpLA0KPiANCj4gKyAgICAgICAg KCdTdGVwJywgY191aW50NjQpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgTUlOTUFYU1RFUF9EQVRBKFVuaW9uKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0K PiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgndTgnLCB1OE5vZGUpLA0K PiANCj4gKyAgICAgICAgKCd1MTYnLCB1MTZOb2RlKSwNCj4gDQo+ICsgICAgICAgICgndTMyJywg dTMyTm9kZSksDQo+IA0KPiArICAgICAgICAoJ3U2NCcsIHU2NE5vZGUpLA0KPiANCj4gKyAgICBd DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArRUZJX0lGUl9OVU1FUklDX1NJWkUgPSAweDAzDQo+ IA0KPiArRUZJX0lGUl9OVU1FUklDX1NJWkVfMSA9IDB4MDANCj4gDQo+ICtFRklfSUZSX05VTUVS SUNfU0laRV8yID0gMHgwMQ0KPiANCj4gK0VGSV9JRlJfTlVNRVJJQ19TSVpFXzQgPSAweDAyDQo+ IA0KPiArRUZJX0lGUl9OVU1FUklDX1NJWkVfOCA9IDB4MDMNCj4gDQo+ICsNCj4gDQo+ICtFRklf SUZSX0RJU1BMQVkgPSAweDMwDQo+IA0KPiArRUZJX0lGUl9ESVNQTEFZX0lOVF9ERUMgPSAweDAw DQo+IA0KPiArRUZJX0lGUl9ESVNQTEFZX1VJTlRfREVDID0gMHgxMA0KPiANCj4gK0VGSV9JRlJf RElTUExBWV9VSU5UX0hFWCA9IDB4MjANCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX09O RV9PRihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVs ZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ IA0KPiArICAgICAgICAoJ1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiAN Cj4gKyAgICAgICAgKCdGbGFncycsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCdkYXRhJywg TUlOTUFYU1RFUF9EQVRBKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K0VGSV9JRlJfQ0hFQ0tCT1hfREVGQVVMVCA9IDB4MDENCj4gDQo+ICtFRklfSUZSX0NIRUNLQk9Y X0RFRkFVTFRfTUZHID0gMHgwMg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9J RlJfQ0hFQ0tCT1goU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAg ICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFE RVIpLA0KPiANCj4gKyAgICAgICAgKCdRdWVzdGlvbicsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVS KSwNCj4gDQo+ICsgICAgICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfTlVNRVJJQyhTdHJ1Y3R1cmUpOg0K PiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAg ICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ1F1 ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdGbGFn cycsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCdEYXRhJywgTUlOTUFYU1RFUF9EQVRBKSwN Cj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUEFT U1dPUkQoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmll bGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0K PiANCj4gKyAgICAgICAgKCdRdWVzdGlvbicsIEVGSV9JRlJfUVVFU1RJT05fSEVBREVSKSwNCj4g DQo+ICsgICAgICAgICgnTWluU2l6ZScsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgnTWF4 U2l6ZScsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2NsYXNzIEVGSV9ISUlfVElNRShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+ IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIb3VyJywgY191Ynl0ZSks DQo+IA0KPiArICAgICAgICAoJ01pbnV0ZScsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCdT ZWNvbmQnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2NsYXNzIEVGSV9ISUlfREFURShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+ IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdZZWFyJywgY191aW50MTYp LA0KPiANCj4gKyAgICAgICAgKCdNb250aCcsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICAgICAgKCdE YXknLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIEVGSV9ISUlfUkVGKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ1F1ZXN0aW9uSWQnLCBjX3VpbnQx NiksDQo+IA0KPiArICAgICAgICAoJ0Zvcm1JZCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAg ICgnRm9ybVNldEd1aWQnLCBFRklfR1VJRCksDQo+IA0KPiArICAgICAgICAoJ0RldmljZVBhdGgn LCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBFRklfSUZSX1RZUEVfVkFMVUUoVW5pb24pOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0K PiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCd1OCcsIGNfdWJ5dGUpLA0KPiAN Cj4gKyAgICAgICAgKCd1MTYnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ3UzMicsIGNf dWludDMyKSwNCj4gDQo+ICsgICAgICAgICgndTY0JywgY191aW50NjQpLA0KPiANCj4gKyAgICAg ICAgKCdiJywgY19ib29sKSwNCj4gDQo+ICsgICAgICAgICgndGltZScsIEVGSV9ISUlfVElNRSks DQo+IA0KPiArICAgICAgICAoJ2RhdGUnLCBFRklfSElJX0RBVEUpLA0KPiANCj4gKyAgICAgICAg KCdzdHJpbmcnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ3JlZicsIEVGSV9ISUlfUkVG KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJf T05FX09GX09QVElPTihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiAr ICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hF QURFUiksDQo+IA0KPiArICAgICAgICAoJ09wdGlvbicsIGNfdWludDE2KSwNCj4gDQo+ICsgICAg ICAgICgnRmxhZ3MnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgICAgICgnVHlwZScsIGNfdWJ5dGUp LA0KPiANCj4gKyAgICAgICAgKCdWYWx1ZScsIEVGSV9JRlJfVFlQRV9WQUxVRSksDQo+IA0KPiAr ICAgIF0NCj4gDQo+ICsNCj4gDQo+ICtkZWYgUmVmaW5lX0VGSV9JRlJfT05FX09GX09QVElPTihO dW1zKToNCj4gDQo+ICsgICAgY2xhc3MgRUZJX0lGUl9PTkVfT0ZfT1BUSU9OKFN0cnVjdHVyZSk6 DQo+IA0KPiArICAgICAgICBfcGFja18gPSAxDQo+IA0KPiArICAgICAgICBfZmllbGRzXyA9IFsN Cj4gDQo+ICsgICAgICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ ICsgICAgICAgICAgICAoJ09wdGlvbicsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICAgICAo J0ZsYWdzJywgY191Ynl0ZSksDQo+IA0KPiArICAgICAgICAgICAgKCdUeXBlJywgY191Ynl0ZSks DQo+IA0KPiArICAgICAgICAgICAgKCdWYWx1ZScsIEVGSV9JRlJfVFlQRV9WQUxVRSAqIE51bXMp LA0KPiANCj4gKyAgICAgICAgXQ0KPiANCj4gKyAgICByZXR1cm4gRUZJX0lGUl9PTkVfT0ZfT1BU SU9ODQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArRUZJX0lGUl9PUFRJT05fREVGQVVMVCA9IDB4 MTANCj4gDQo+ICtFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRyA9IDB4MjANCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1NVUFBSRVNTX0lGKFN0cnVjdHVyZSk6DQo+IA0K PiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAg ICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfTE9DS0VEKFN0cnVjdHVyZSk6DQo+IA0KPiAr ICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAo J0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfQUNUSU9OKFN0cnVjdHVyZSk6DQo+IA0KPiArICAg IF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hl YWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgnUXVlc3Rpb24nLCBF RklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ1F1ZXN0aW9uQ29uZmln JywgY191aW50MTYpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgRUZJX0lGUl9SRUYoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4g KyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9I RUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdRdWVzdGlvbicsIEVGSV9JRlJfUVVFU1RJT05fSEVB REVSKSwNCj4gDQo+ICsgICAgICAgICgnRm9ybUlkJywgY191aW50MTYpLA0KPiANCj4gKyAgICBd DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9SRUYyKFN0cnVjdHVyZSk6 DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiAr ICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgn UXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ0Zv cm1JZCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgnUXVlc3Rpb25JZCcsIGNfdWludDE2 KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJf UkVGMyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVs ZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ IA0KPiArICAgICAgICAoJ1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiAN Cj4gKyAgICAgICAgKCdGb3JtSWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ1F1ZXN0 aW9uSWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ0Zvcm1TZXRJZCcsIEVGSV9HVUlE KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJf UkVGNChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVs ZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ IA0KPiArICAgICAgICAoJ1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiAN Cj4gKyAgICAgICAgKCdGb3JtSWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ1F1ZXN0 aW9uSWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ0Zvcm1TZXRJZCcsIEVGSV9HVUlE KSwNCj4gDQo+ICsgICAgICAgICgnRGV2aWNlUGF0aCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAg XQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUkVGNShTdHJ1Y3R1cmUp Og0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4g KyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAo J1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9SRVNFVF9CVVRUT04oU3RydWN0dXJl KToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAg KCdTdGF0ZW1lbnQnLCBFRklfSUZSX1NUQVRFTUVOVF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAg KCdEZWZhdWx0SWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICtjbGFzcyBFRklfSUZSX05PX1NVQk1JVF9JRihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAg ICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdI ZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ0Vycm9yJywgY191 aW50MTYpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJ X0lGUl9JTkNPTlNJU1RFTlRfSUYoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0K PiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdFcnJvcicsIGNfdWludDE2KSwNCj4gDQo+ ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfRVFfSURfVkFM KFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18g PSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ ICsgICAgICAgICgnUXVlc3Rpb25JZCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgnVmFs dWUnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtj bGFzcyBFRklfSUZSX0VRX0lEX0lEKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDEN Cj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9J RlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgnUXVlc3Rpb25JZDEnLCBjX3VpbnQxNiks DQo+IA0KPiArICAgICAgICAoJ1F1ZXN0aW9uSWQyJywgY191aW50MTYpLA0KPiANCj4gKyAgICBd DQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9FUV9JRF9WQUxfTElTVChTdHJ1Y3R1cmUp Og0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4g KyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAo J1F1ZXN0aW9uSWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ0xpc3RMZW5ndGgnLCBj X3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ1ZhbHVlTGlzdCcsIGNfdWludDE2KSwgICMNCj4g DQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2RlZiBSZWZpbmVfRUZJX0lGUl9F UV9JRF9WQUxfTElTVChOdW1zKToNCj4gDQo+ICsgICAgY2xhc3MgRUZJX0lGUl9FUV9JRF9WQUxf TElTVChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICAgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICAg ICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQo+IA0KPiArICAgICAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYpLA0K PiANCj4gKyAgICAgICAgICAgICgnTGlzdExlbmd0aCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAg ICAgICAgICAoJ1ZhbHVlTGlzdCcsIGNfdWludDE2ICogTnVtcyksICAjDQo+IA0KPiArICAgICAg ICBdDQo+IA0KPiArICAgIHJldHVybiBFRklfSUZSX0VRX0lEX1ZBTF9MSVNUDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9BTkQoU3RydWN0dXJlKToNCj4gDQo+ICsgICAg X3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgRUZJX0lGUl9PUihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18g PSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBF RklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBFRklfSUZSX05PVChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+ IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZS X09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBFRklfSUZSX0dSQVlfT1VUX0lGKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDEN Cj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9J RlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIEVGSV9JRlJfREFURShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0K PiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9I RUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdGbGFncycsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICBd DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArRUZJX1FGX0RBVEVfWUVBUl9TVVBQUkVTUyA9IDB4 MDENCj4gDQo+ICtFRklfUUZfREFURV9NT05USF9TVVBQUkVTUyA9IDB4MDINCj4gDQo+ICtFRklf UUZfREFURV9EQVlfU1VQUFJFU1MgPSAweDA0DQo+IA0KPiArDQo+IA0KPiArRUZJX1FGX0RBVEVf U1RPUkFHRSA9IDB4MzANCj4gDQo+ICtRRl9EQVRFX1NUT1JBR0VfTk9STUFMID0gMHgwMA0KPiAN Cj4gK1FGX0RBVEVfU1RPUkFHRV9USU1FID0gMHgxMA0KPiANCj4gK1FGX0RBVEVfU1RPUkFHRV9X QUtFVVAgPSAweDIwDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9USU1F KFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18g PSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ ICsgICAgICAgICgnUXVlc3Rpb24nLCBFRklfSUZSX1FVRVNUSU9OX0hFQURFUiksDQo+IA0KPiAr ICAgICAgICAoJ0ZsYWdzJywgY191Ynl0ZSksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICtRRl9USU1FX0hPVVJfU1VQUFJFU1MgPSAweDAxDQo+IA0KPiArUUZfVElNRV9N SU5VVEVfU1VQUFJFU1MgPSAweDAyDQo+IA0KPiArUUZfVElNRV9TRUNPTkRfU1VQUFJFU1MgPSAw eDA0DQo+IA0KPiArUUZfVElNRV9TVE9SQUdFID0gMHgzMA0KPiANCj4gK1FGX1RJTUVfU1RPUkFH RV9OT1JNQUwgPSAweDAwDQo+IA0KPiArUUZfVElNRV9TVE9SQUdFX1RJTUUgPSAweDEwDQo+IA0K PiArUUZfVElNRV9TVE9SQUdFX1dBS0VVUCA9IDB4MjANCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBFRklfSUZSX1NUUklORyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAx DQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklf SUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVT VElPTl9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdNaW5TaXplJywgY191Ynl0ZSksDQo+IA0K PiArICAgICAgICAoJ01heFNpemUnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgICAgICgnRmxhZ3Mn LCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IEVGSV9JRlJfUkVGUkVTSChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0K PiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09Q X0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ1JlZnJlc2hJbnRlcnZhbCcsIGNfdWJ5dGUpLA0K PiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9ESVNB QkxFX0lGKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2Zp ZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfVE9f TE9XRVIoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmll bGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0K PiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9UT19V UFBFUihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVs ZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX01BUChT dHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0g Ww0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiAr ICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX09SREVSRURfTElT VChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNf ID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0K PiArICAgICAgICAoJ1F1ZXN0aW9uJywgRUZJX0lGUl9RVUVTVElPTl9IRUFERVIpLA0KPiANCj4g KyAgICAgICAgKCdNYXhDb250YWluZXJzJywgY191Ynl0ZSksDQo+IA0KPiArICAgICAgICAoJ0Zs YWdzJywgY191Ynl0ZSksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtF RklfSUZSX1VOSVFVRV9TRVQgPSAweDAxDQo+IA0KPiArRUZJX0lGUl9OT19FTVBUWV9TRVQgPSAw eDAyDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9WQVJTVE9SRV9ERVZJ Q0UoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRz XyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiAN Cj4gKyAgICAgICAgKCdEZXZpY2VQYXRoJywgY191aW50MTYpLA0KPiANCj4gKyAgICBdDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9WRVJTSU9OKFN0cnVjdHVyZSk6DQo+ IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAg ICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfRU5EKFN0cnVjdHVyZSk6DQo+IA0KPiAr ICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAo J0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfTUFUQ0goU3RydWN0dXJlKToNCj4gDQo+ICsgICAg X3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVh ZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgRUZJX0lGUl9HRVQoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tf ID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywg RUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdWYXJTdG9yZUlkJywgY191aW50 MTYpLA0KPiANCj4gKyAgICAgICAgKCdWYXJTdG9yZUluZm8nLCBWYXJTdG9yZUluZm9Ob2RlKSwg ICMjIyMjIyMjIyMNCj4gDQo+ICsgICAgICAgICgnVmFyU3RvcmVUeXBlJywgY191Ynl0ZSksDQo+ IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1NFVChT dHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0g Ww0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiAr ICAgICAgICAoJ1ZhclN0b3JlSWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ1ZhclN0 b3JlSW5mbycsIFZhclN0b3JlSW5mb05vZGUpLCAgIyMjIyMjIyMjIw0KPiANCj4gKyAgICAgICAg KCdWYXJTdG9yZVR5cGUnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUkVBRChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFj a18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXIn LCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBFRklfSUZSX1dSSVRFKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9 IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g K2NsYXNzIEVGSV9JRlJfRVFVQUwoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0K PiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgRUZJX0lGUl9OT1RfRVFVQUwoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0K PiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lG Ul9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgRUZJX0lGUl9HUkVBVEVSX1RIQU4oU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0g MQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJ X0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgRUZJX0lGUl9HUkVBVEVSX0VRVUFMKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNr XyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcics IEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK2NsYXNzIEVGSV9JRlJfTEVTU19FUVVBTChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFj a18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXIn LCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBFRklfSUZSX0xFU1NfVEhBTihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFj a18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXIn LCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBFRklfSUZSX0JJVFdJU0VfQU5EKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9w YWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRl cicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIEVGSV9JRlJfQklUV0lTRV9PUihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBf cGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFk ZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICtjbGFzcyBFRklfSUZSX0JJVFdJU0VfTk9UKFN0cnVjdHVyZSk6DQo+IA0KPiArICAg IF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hl YWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfU0hJRlRfTEVGVChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAg ICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdI ZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1NISUZUX1JJR0hUKFN0cnVjdHVyZSk6DQo+IA0KPiAr ICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAo J0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfQUREKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9w YWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRl cicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIEVGSV9JRlJfU1VCVFJBQ1QoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3Bh Y2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVy JywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArY2xhc3MgRUZJX0lGUl9NVUxUSVBMWShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFj a18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXIn LCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBFRklfSUZSX0RJVklERShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18g PSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBF RklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBFRklfSUZSX01PRFVMTyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAx DQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklf SUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtj bGFzcyBFRklfSUZSX1JVTEVfUkVGKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDEN Cj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9J RlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgnUnVsZUlkJywgY191Ynl0ZSksDQo+IA0K PiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1FVRVNUSU9O X1JFRjEoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmll bGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0K PiANCj4gKyAgICAgICAgKCdRdWVzdGlvbklkJywgY191aW50MTYpLA0KPiANCj4gKyAgICBdDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9RVUVTVElPTl9SRUYyKFN0cnVj dHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+ IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAg XQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfUVVFU1RJT05fUkVGMyhT dHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0g Ww0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiAr ICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1FVRVNUSU9OX1JF RjNfMihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVs ZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+ IA0KPiArICAgICAgICAoJ0RldmljZVBhdGgnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1FVRVNUSU9OX1JFRjNfMyhTdHJ1 Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0K PiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAg ICAgICAoJ0RldmljZVBhdGgnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ0d1aWQnLCBF RklfR1VJRCksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBF RklfSUZSX1VJTlQ4KFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsg ICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVB REVSKSwNCj4gDQo+ICsgICAgICAgICgnVmFsdWUnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfVUlOVDE2KFN0cnVjdHVyZSk6 DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiAr ICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgn VmFsdWUnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBFRklfSUZSX1VJTlQzMihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAx DQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklf SUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ1ZhbHVlJywgY191aW50MzIpLA0KPiAN Cj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9VSU5UNjQo U3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9 IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4g KyAgICAgICAgKCdWYWx1ZScsIGNfdWludDY0KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfVFJVRShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBf cGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFk ZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICtjbGFzcyBFRklfSUZSX0ZBTFNFKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNr XyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcics IEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK2NsYXNzIEVGSV9JRlJfVE9fVUlOVChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18g PSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBF RklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBFRklfSUZSX1RPX1NUUklORyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18g PSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBF RklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ0Zvcm1hdCcsIGNfdWJ5dGUpLA0K PiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9UT19C T09MRUFOKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2Zp ZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfTUlE KFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18g PSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfRklORChTdHJ1 Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0K PiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAg ICAgICAoJ0Zvcm1hdCcsIGNfdWJ5dGUpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgRUZJX0lGUl9UT0tFTihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFj a18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXIn LCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBFRklfSUZSX1NUUklOR19SRUYxKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9w YWNrXyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRl cicsIEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgnU3RyaW5nSWQnLCBjX3Vp bnQxNiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklf SUZSX1NUUklOR19SRUYyKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVG SV9JRlJfQ09ORElUSU9OQUwoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiAN Cj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3Mg RUZJX0lGUl9aRVJPKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsg ICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVB REVSKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9J RlJfT05FKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ICsgICAgX2Zp ZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1BfSEVBREVSKSwN Cj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJfT05F UyhTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNf ID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0K PiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1VOREVGSU5F RChTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNf ID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0K PiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0xFTkdUSChT dHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0g Ww0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiAr ICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0RVUChTdHJ1Y3R1 cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiAN Cj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgIF0N Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX1RISVMoU3RydWN0dXJlKToN Cj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsg ICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArRUZJX0lGUl9GTEFHU19GSVJTVF9NQVRDSElORyA9IDB4MDAN Cj4gDQo+ICtFRklfSUZSX0ZMQUdTX0ZJUlNUX05PTl9NQVRDSElORyA9IDB4MDENCj4gDQo+ICsN Cj4gDQo+ICtjbGFzcyBFRklfSUZSX1NQQU4oU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tf ID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywg RUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdGbGFncycsIGNfdWJ5dGUpLA0K PiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9WQUxV RShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNf ID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0K PiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0RFRkFVTFQo U3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9 IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4g KyAgICAgICAgKCdEZWZhdWx0SWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ1R5cGUn LCBjX3VieXRlKSwNCj4gDQo+ICsgICAgICAgICgnVmFsdWUnLCBFRklfSUZSX1RZUEVfVkFMVUUp LA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArZGVmIFJlZmluZV9FRklfSUZSX0RFRkFV TFQoTnVtcyk6DQo+IA0KPiArICAgIGNsYXNzIEVGSV9JRlJfREVGQVVMVChTdHJ1Y3R1cmUpOg0K PiANCj4gKyAgICAgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICAgICAgX2ZpZWxkc18gPSBbDQo+ IA0KPiArICAgICAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiAr ICAgICAgICAgICAgKCdEZWZhdWx0SWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAgICAg KCdUeXBlJywgY191Ynl0ZSksDQo+IA0KPiArICAgICAgICAgICAgKCdWYWx1ZScsIEVGSV9JRlJf VFlQRV9WQUxVRSAqIE51bXMpLA0KPiANCj4gKyAgICAgICAgXQ0KPiANCj4gKyAgICByZXR1cm4g RUZJX0lGUl9ERUZBVUxUDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX0lGUl9E RUZBVUxUXzIoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4gKyAgICBf ZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9IRUFERVIp LA0KPiANCj4gKyAgICAgICAgKCdEZWZhdWx0SWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAg ICAoJ1R5cGUnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gK2NsYXNz IEVGSV9JRlJfRk9STV9NQVAoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiAN Cj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9P UF9IRUFERVIpLA0KPiANCj4gKyAgICAgICAgKCdGb3JtSWQnLCBjX3VpbnQxNiksDQo+IA0KPiAr ICAgIF0NCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfSUZSX0ZPUk1fTUFQX01FVEhPRChTdHJ1 Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0K PiANCj4gKyAgICAgICAgKCdNZXRob2RUaXRsZScsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAg ICgnTWV0aG9kSWRlbnRpZmllcicsIEVGSV9HVUlEKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0K PiANCj4gK2NsYXNzIEVGSV9JRlJfQ0FURU5BVEUoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3Bh Y2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVy JywgRUZJX0lGUl9PUF9IRUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArY2xhc3MgRUZJX0lGUl9TRUNVUklUWShTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFj a18gPSAxDQo+IA0KPiArICAgIF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXIn LCBFRklfSUZSX09QX0hFQURFUiksDQo+IA0KPiArICAgICAgICAoJ1Blcm1pc3Npb25zJywgRUZJ X0dVSUQpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJ X0lGUl9NT0RBTF9UQUcoU3RydWN0dXJlKToNCj4gDQo+ICsgICAgX3BhY2tfID0gMQ0KPiANCj4g KyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnSGVhZGVyJywgRUZJX0lGUl9PUF9I RUFERVIpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJ X0lGUl9SRUZSRVNIX0lEKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9IDENCj4gDQo+ ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVGSV9JRlJfT1Bf SEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgnUmVmcmVzaEV2ZW50R3JvdXBJZCcsIEVGSV9HVUlE KSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9JRlJf V0FSTklOR19JRihTdHJ1Y3R1cmUpOg0KPiANCj4gKyAgICBfcGFja18gPSAxDQo+IA0KPiArICAg IF9maWVsZHNfID0gWw0KPiANCj4gKyAgICAgICAgKCdIZWFkZXInLCBFRklfSUZSX09QX0hFQURF UiksDQo+IA0KPiArICAgICAgICAoJ1dhcm5pbmcnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAg ICAoJ1RpbWVPdXQnLCBjX3VieXRlKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIEVGSV9JRlJfTUFUQ0gyKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNr XyA9IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcics IEVGSV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgnU3ludGF4VHlwZScsIEVGSV9H VUlEKSwNCj4gDQo+ICsgICAgXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK0VGSV9JRlJfRk9S TV9PUCA9IDB4MDENCj4gDQo+ICtFRklfSUZSX1NVQlRJVExFX09QID0gMHgwMg0KPiANCj4gK0VG SV9JRlJfVEVYVF9PUCA9IDB4MDMNCj4gDQo+ICtFRklfSUZSX0lNQUdFX09QID0gMHgwNA0KPiAN Cj4gK0VGSV9JRlJfT05FX09GX09QID0gMHgwNQ0KPiANCj4gK0VGSV9JRlJfQ0hFQ0tCT1hfT1Ag PSAweDA2DQo+IA0KPiArRUZJX0lGUl9OVU1FUklDX09QID0gMHgwNw0KPiANCj4gK0VGSV9JRlJf UEFTU1dPUkRfT1AgPSAweDA4DQo+IA0KPiArRUZJX0lGUl9PTkVfT0ZfT1BUSU9OX09QID0gMHgw OQ0KPiANCj4gK0VGSV9JRlJfU1VQUFJFU1NfSUZfT1AgPSAweDBBDQo+IA0KPiArRUZJX0lGUl9M T0NLRURfT1AgPSAweDBCDQo+IA0KPiArRUZJX0lGUl9BQ1RJT05fT1AgPSAweDBDDQo+IA0KPiAr RUZJX0lGUl9SRVNFVF9CVVRUT05fT1AgPSAweDBEDQo+IA0KPiArRUZJX0lGUl9GT1JNX1NFVF9P UCA9IDB4MEUNCj4gDQo+ICtFRklfSUZSX1JFRl9PUCA9IDB4MEYNCj4gDQo+ICtFRklfSUZSX05P X1NVQk1JVF9JRl9PUCA9IDB4MTANCj4gDQo+ICtFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9PUCA9 IDB4MTENCj4gDQo+ICtFRklfSUZSX0VRX0lEX1ZBTF9PUCA9IDB4MTINCj4gDQo+ICtFRklfSUZS X0VRX0lEX0lEX09QID0gMHgxMw0KPiANCj4gK0VGSV9JRlJfRVFfSURfVkFMX0xJU1RfT1AgPSAw eDE0DQo+IA0KPiArRUZJX0lGUl9BTkRfT1AgPSAweDE1DQo+IA0KPiArRUZJX0lGUl9PUl9PUCA9 IDB4MTYNCj4gDQo+ICtFRklfSUZSX05PVF9PUCA9IDB4MTcNCj4gDQo+ICtFRklfSUZSX1JVTEVf T1AgPSAweDE4DQo+IA0KPiArRUZJX0lGUl9HUkFZX09VVF9JRl9PUCA9IDB4MTkNCj4gDQo+ICtF RklfSUZSX0RBVEVfT1AgPSAweDFBDQo+IA0KPiArRUZJX0lGUl9USU1FX09QID0gMHgxQg0KPiAN Cj4gK0VGSV9JRlJfU1RSSU5HX09QID0gMHgxQw0KPiANCj4gK0VGSV9JRlJfUkVGUkVTSF9PUCA9 IDB4MUQNCj4gDQo+ICtFRklfSUZSX0RJU0FCTEVfSUZfT1AgPSAweDFFDQo+IA0KPiArRUZJX0lG Ul9UT19MT1dFUl9PUCA9IDB4MjANCj4gDQo+ICtFRklfSUZSX1RPX1VQUEVSX09QID0gMHgyMQ0K PiANCj4gK0VGSV9JRlJfTUFQX09QID0gMHgyMg0KPiANCj4gK0VGSV9JRlJfT1JERVJFRF9MSVNU X09QID0gMHgyMw0KPiANCj4gK0VGSV9JRlJfVkFSU1RPUkVfT1AgPSAweDI0DQo+IA0KPiArRUZJ X0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFX09QID0gMHgyNQ0KPiANCj4gK0VGSV9JRlJfVkFSU1RP UkVfRUZJX09QID0gMHgyNg0KPiANCj4gK0VGSV9JRlJfVkFSU1RPUkVfREVWSUNFX09QID0gMHgy Nw0KPiANCj4gK0VGSV9JRlJfVkVSU0lPTl9PUCA9IDB4MjgNCj4gDQo+ICtFRklfSUZSX0VORF9P UCA9IDB4MjkNCj4gDQo+ICtFRklfSUZSX01BVENIX09QID0gMHgyQQ0KPiANCj4gK0VGSV9JRlJf R0VUX09QID0gMHgyQg0KPiANCj4gK0VGSV9JRlJfU0VUX09QID0gMHgyQw0KPiANCj4gK0VGSV9J RlJfUkVBRF9PUCA9IDB4MkQNCj4gDQo+ICtFRklfSUZSX1dSSVRFX09QID0gMHgyRQ0KPiANCj4g K0VGSV9JRlJfRVFVQUxfT1AgPSAweDJGDQo+IA0KPiArRUZJX0lGUl9OT1RfRVFVQUxfT1AgPSAw eDMwDQo+IA0KPiArRUZJX0lGUl9HUkVBVEVSX1RIQU5fT1AgPSAweDMxDQo+IA0KPiArRUZJX0lG Ul9HUkVBVEVSX0VRVUFMX09QID0gMHgzMg0KPiANCj4gK0VGSV9JRlJfTEVTU19USEFOX09QID0g MHgzMw0KPiANCj4gK0VGSV9JRlJfTEVTU19FUVVBTF9PUCA9IDB4MzQNCj4gDQo+ICtFRklfSUZS X0JJVFdJU0VfQU5EX09QID0gMHgzNQ0KPiANCj4gK0VGSV9JRlJfQklUV0lTRV9PUl9PUCA9IDB4 MzYNCj4gDQo+ICtFRklfSUZSX0JJVFdJU0VfTk9UX09QID0gMHgzNw0KPiANCj4gK0VGSV9JRlJf U0hJRlRfTEVGVF9PUCA9IDB4MzgNCj4gDQo+ICtFRklfSUZSX1NISUZUX1JJR0hUX09QID0gMHgz OQ0KPiANCj4gK0VGSV9JRlJfQUREX09QID0gMHgzQQ0KPiANCj4gK0VGSV9JRlJfU1VCVFJBQ1Rf T1AgPSAweDNCDQo+IA0KPiArRUZJX0lGUl9NVUxUSVBMWV9PUCA9IDB4M0MNCj4gDQo+ICtFRklf SUZSX0RJVklERV9PUCA9IDB4M0QNCj4gDQo+ICtFRklfSUZSX01PRFVMT19PUCA9IDB4M0UNCj4g DQo+ICtFRklfSUZSX1JVTEVfUkVGX09QID0gMHgzRg0KPiANCj4gK0VGSV9JRlJfUVVFU1RJT05f UkVGMV9PUCA9IDB4NDANCj4gDQo+ICtFRklfSUZSX1FVRVNUSU9OX1JFRjJfT1AgPSAweDQxDQo+ IA0KPiArRUZJX0lGUl9VSU5UOF9PUCA9IDB4NDINCj4gDQo+ICtFRklfSUZSX1VJTlQxNl9PUCA9 IDB4NDMNCj4gDQo+ICtFRklfSUZSX1VJTlQzMl9PUCA9IDB4NDQNCj4gDQo+ICtFRklfSUZSX1VJ TlQ2NF9PUCA9IDB4NDUNCj4gDQo+ICtFRklfSUZSX1RSVUVfT1AgPSAweDQ2DQo+IA0KPiArRUZJ X0lGUl9GQUxTRV9PUCA9IDB4NDcNCj4gDQo+ICtFRklfSUZSX1RPX1VJTlRfT1AgPSAweDQ4DQo+ IA0KPiArRUZJX0lGUl9UT19TVFJJTkdfT1AgPSAweDQ5DQo+IA0KPiArRUZJX0lGUl9UT19CT09M RUFOX09QID0gMHg0QQ0KPiANCj4gK0VGSV9JRlJfTUlEX09QID0gMHg0Qg0KPiANCj4gK0VGSV9J RlJfRklORF9PUCA9IDB4NEMNCj4gDQo+ICtFRklfSUZSX1RPS0VOX09QID0gMHg0RA0KPiANCj4g K0VGSV9JRlJfU1RSSU5HX1JFRjFfT1AgPSAweDRFDQo+IA0KPiArRUZJX0lGUl9TVFJJTkdfUkVG Ml9PUCA9IDB4NEYNCj4gDQo+ICtFRklfSUZSX0NPTkRJVElPTkFMX09QID0gMHg1MA0KPiANCj4g K0VGSV9JRlJfUVVFU1RJT05fUkVGM19PUCA9IDB4NTENCj4gDQo+ICtFRklfSUZSX1pFUk9fT1Ag PSAweDUyDQo+IA0KPiArRUZJX0lGUl9PTkVfT1AgPSAweDUzDQo+IA0KPiArRUZJX0lGUl9PTkVT X09QID0gMHg1NA0KPiANCj4gK0VGSV9JRlJfVU5ERUZJTkVEX09QID0gMHg1NQ0KPiANCj4gK0VG SV9JRlJfTEVOR1RIX09QID0gMHg1Ng0KPiANCj4gK0VGSV9JRlJfRFVQX09QID0gMHg1Nw0KPiAN Cj4gK0VGSV9JRlJfVEhJU19PUCA9IDB4NTgNCj4gDQo+ICtFRklfSUZSX1NQQU5fT1AgPSAweDU5 DQo+IA0KPiArRUZJX0lGUl9WQUxVRV9PUCA9IDB4NUENCj4gDQo+ICtFRklfSUZSX0RFRkFVTFRf T1AgPSAweDVCDQo+IA0KPiArRUZJX0lGUl9ERUZBVUxUU1RPUkVfT1AgPSAweDVDDQo+IA0KPiAr RUZJX0lGUl9GT1JNX01BUF9PUCA9IDB4NUQNCj4gDQo+ICtFRklfSUZSX0NBVEVOQVRFX09QID0g MHg1RQ0KPiANCj4gK0VGSV9JRlJfR1VJRF9PUCA9IDB4NUYNCj4gDQo+ICtFRklfSUZSX1NFQ1VS SVRZX09QID0gMHg2MA0KPiANCj4gK0VGSV9JRlJfTU9EQUxfVEFHX09QID0gMHg2MQ0KPiANCj4g K0VGSV9JRlJfUkVGUkVTSF9JRF9PUCA9IDB4NjINCj4gDQo+ICtFRklfSUZSX1dBUk5JTkdfSUZf T1AgPSAweDYzDQo+IA0KPiArRUZJX0lGUl9NQVRDSDJfT1AgPSAweDY0DQo+IA0KPiArDQo+IA0K PiArQ29uZGl0aW9uT3BzID0gW0VGSV9JRlJfTk9fU1VCTUlUX0lGX09QLCBFRklfSUZSX0RJU0FC TEVfSUZfT1AsDQo+IEVGSV9JRlJfU1VQUFJFU1NfSUZfT1AsIEVGSV9JRlJfR1JBWV9PVVRfSUZf T1AsDQo+IEVGSV9JRlJfSU5DT05TSVNURU5UX0lGX09QXQ0KPiANCj4gK0Jhc2ljRGF0YVR5cGVz ID0gWydVSU5UOCcsICdVSU5UMTYnLCAnVUlOVDMyJywgJ1VJTlQ2NCcsICdFRklfSElJX0RBVEUn LA0KPiAnRUZJX0hJSV9USU1FJywgJ0VGSV9ISUlfUkVGJ10NCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBFRklfSUZSX0dVSURfT1BUSU9OS0VZKFN0cnVjdHVyZSk6DQo+IA0KPiArICAgIF9wYWNrXyA9 IDENCj4gDQo+ICsgICAgX2ZpZWxkc18gPSBbDQo+IA0KPiArICAgICAgICAoJ0hlYWRlcicsIEVG SV9JRlJfT1BfSEVBREVSKSwNCj4gDQo+ICsgICAgICAgICgnR3VpZCcsIEVGSV9HVUlEKSwNCj4g DQo+ICsgICAgICAgICgnRXh0ZW5kT3BDb2RlJywgY191aW50OCksDQo+IA0KPiArICAgICAgICAo J1F1ZXN0aW9uSWQnLCBjX3VpbnQxNiksDQo+IA0KPiArICAgICAgICAoJ09wdGlvblZhbHVlJywg RUZJX0lGUl9UWVBFX1ZBTFVFKSwNCj4gDQo+ICsgICAgICAgICgnS2V5VmFsdWUnLCBjX3VpbnQx NiksDQo+IA0KPiArICAgIF0NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtFRklfSUZSX0VYVEVO RF9PUF9PUFRJT05LRVkgPSAweDANCj4gDQo+ICtFRklfSUZSX0VYVEVORF9PUF9WQVJFUU5BTUUg PSAweDENCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFRklfQ09NUEFSRV9UWVBFKEVudW0pOg0KPiAN Cj4gKyAgICBFUVVBTCA9IDANCj4gDQo+ICsgICAgTEVTU19FUVVBTCA9IDENCj4gDQo+ICsgICAg TEVTU19USEFOID0gMg0KPiANCj4gKyAgICBHUkVBVEVSX1RIQU4gPSAzDQo+IA0KPiArICAgIEdS RUFURVJfRVFVQUwgPSA0DQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiBkaWZmIC0t Z2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvUkVBRE1FLm1kDQo+IGIv QmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvUkVBRE1FLm1kDQo+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmNmNjAwNTgxYzkNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9SRUFETUUu bWQNCj4gQEAgLTAsMCArMSwyMCBAQA0KPiArIyBQeXRob24gVmZyQ29tcGlsZXIgVG9vbA0KPiAN Cj4gKyMjIE92ZXJ2aWV3DQo+IA0KPiArVGhpcyBweXRob24gVmZyQ29tcGlsZXIgdG9vbCBpcyB0 aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGVkazIgVmZyQ29tcGlsZXINCj4gdG9vbCB3aGljaCBs b2NhdGVzIGF0DQo+IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi90cmVlL21hc3Rl ci9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ28NCj4gbXBpbGUuDQo+IA0KPiArDQo+IA0KPiArIyMj IEludHJvZHVjdGlvbg0KPiANCj4gK1RoZSBjb3JlIGZ1bmN0aW9uIG9mIHRoZSBvcmlnaW5hbCBD IFZmckNvbXBpbGVyIHRvb2wgaXMgdG8gY29udmVydCB0aGUgdmZyIGZpbGUNCj4gaW50byBJRlIg YmluYXJ5IGFycmF5LiBIb3dldmVyLCB0aGUgdmZyIGZvcm1hdCBmaWxlIHN5bnRheCBpcyByZWxh dGl2ZWx5DQo+IHVuY29tbW9uIGFuZCBoYXMgcG9vciByZWFkYWJpbGl0eSBmb3IgdXNlcnMuIFdo YXQncyBtb3JlLCB0aGUgQyB0b29sIGRvZXMNCj4gbm90IGNvbGxlY3QgYW5kIHN0b3JlIGV4dHJh IGluZm9ybWF0aW9uIGV4Y2VwdCBmb3IgYmluYXJ5IGdlbmVyYXRpb24uIFdoZW4NCj4gYW55IG1v ZGlmaWNhdGlvbiBpcyBuZWVkZWQsIGRldmVsb3BlcnMgaGF2ZSB0byByZWFkIGFuZCBkZWFsIHdp dGggdGhlIElGUg0KPiBiaW5hcnksIHdoaWNoIGlzIHF1aXRlIGluZWZmaWNpZW50LiBUbyBzb2x2 ZSB0aGlzIGlzc3VlLCB0aGlzIHB5dGhvbiBWZnJDb21waWxlcg0KPiB0b29sIHByb3Bvc2VzIHRv IGdlbmVyYXRlIHRoZSB5YW1sIGZvcm1hdCBmaWxlIG9uIHRoZSBiYXNpcyBvZiB0aGUgdmZyIGZv cm1hdA0KPiBmaWxlLiBXaXRoIHRoZSB5YW1sIGZpbGUsICB0aGUgbGF5b3V0IGFuZCBoaWVyYXJj aHkgb2YgYWxsIE9wY29kZXMgaW4gdGhlIHZmciBmaWxlDQo+IHdpbGwgYmUgc2F2ZWQuIFRoZW4g bW9kaWZpY2F0aW9uIHdpbGwgYmUgbXVjaCBlYWlzZXIuIEluIGFkZGl0aW9uLCBhbiBleHRyYQ0K PiBqc29uIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIGJldHRlciB2YXJpYWJsZSByZWxhdGVk IGluZm9ybWF0aW9uDQo+IHByZXNlbnRhdGlvbi4gU28gdGhlIGxvbmctdGVybSBhaW0gb2YgdGhp cyB0b29sIGlzIHRvIGNvdmVyIHRoZSBzYW1lIHVzYWdlIGFzDQo+IHRoZSBlZGsyIEMgVmZyQ29t cGlsZXIgYW5kIGV4dGVuZCB0aGUgeWFtbC9qc29uIG91dHB1dCBmb3IgYmV0dGVyDQo+IHJlYWRh YmlsaXR5IGFuZCB2YXJpYWJpbGl0eS4NCj4gDQo+ICsNCj4gDQo+ICsjIyMgTWFpbiB1cGRhdGUg aW4gdGhpcyBjb21taXRtZW50DQo+IA0KPiArLSBVcGRhdGUgdGhlIHZmciBwYXJzZXIgZ2VuZXJh dG9yIGZyb20gQU5UTFIgdG8gQU5UTFIgdjQsIHdoaWNoIGlzIG1vcmUNCj4gcmVhZGFibGUgYW5k IGlzIGVhaXNlciB0byBhZGQgb24gbmV3IGZ1bmN0aW9ucy4NCj4gDQo+ICstIEdlbmVyYXRlIGEg eWFtbCBmaWxlIGZvciBlYWNoIHZmciBmaWxlLiBUaGUgeWFtbCBmaWxlIGRpc3BsYXlzIGFsbCB0 aGUgY29udGVudHMNCj4gaW4gdGhlIFZmciBmaWxlIGJ5IGRpZmZlcmVudCBPcGNvZGUgdHlwZXMg aW4gc2VxdWVuY2UuDQo+IA0KPiArLSBHZW5lcmF0ZSBhIGpzb24gZmlsZSBmb3IgZWFjaCB2ZnIg ZmlsZS4gVGhlIGpzb24gZmlsZSBjb250YWlucyBhbGwgdGhlIGRlZmF1bHQNCj4gdmFsdWVzIGZv ciBkaWZmZXJlbnQgT3Bjb2RlIHR5cGVzIGluIHZmciBmaWxlcy4NCj4gDQo+ICsNCj4gDQo+ICsj IyMgS25vd24gaXNzdWVzDQo+IA0KPiArDQo+IA0KPiArLSBUaGUgcHl0aG9uIFZmckNvbXBpbGVy IHRvb2wgYWltcyB0byBjb3ZlciB0aGUgc2FtZSB1c2FnZSBhcyB0aGUgZWRrMiBDDQo+IFZmckNv bXBpbGVyLiBCdXQgY3VycmVudGx5LCB0aGUgcHl0aG9uIFZmckNvbXBpbGVyIHRvb2wgZG9lcyBu b3Qgc3VwcG9ydCBJRlINCj4gYmluYXJ5IGdlbmVyYXRpb24gZmVhdHVyZSwgdGhpcyBmZWF0dXJl IHdpbGwgYmUgYWRkZWQgaW4gZnV0dXJlIHVwZGF0ZS4NCj4gDQo+ICstIFRoZSBweXRob24gVmZy Q29tcGlsZXIgdG9vbCB3aWxsIGV4dGVuZCBuZXcgZnVuY3Rpb25zLCB3aGljaCBpcyBhYmxlIHRv DQo+IGNvbXBpbGUgYm90aCB0aGUgdmZyIGFuZCB5YW1sIGZpbGVzLiBUaGlzIGZlYXR1cmUgd2ls bCBiZSBhZGRlZCBpbiBmdXR1cmUNCj4gdXBkYXRlLg0KPiANCj4gKw0KPiANCj4gKyMjIyBVc2Ug d2l0aCBCdWlsZCBTeXN0ZW0NCj4gDQo+ICstIFRvIHVzZSB0aGUgVmZyQ29tcGlsZXIgUHl0aG9u IFRvb2wgd2l0aCBCdWlsZCBTeXN0ZW0sICBwbGVhc2UgYWRkIHRoZQ0KPiAqKionLS12ZnIteWFt bC1lbmFibGUnKioqICBvcHRpb24gaW4gdGhlIGJ1aWxkIGNvbW1hbmQuDQo+IA0KPiArLSBGb3Ig RXhhbXBsZTogKioqYnVpbGQgLXAgT3ZtZlBrZ1xPdm1mUGtnSWEzMlg2NC5kc2MgLWEgSUEzMiAt YSBYNjQgLWoNCj4gYnVpbGQubG9nIC0tdmZyLXlhbWwtZW5hYmxlKioqDQo+IFwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24v VmZyQ29tcGlsZXIvVmZyRXJyb3IucHkNCj4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJD b21waWxlci9WZnJFcnJvci5weQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAw MDAwMDAwLi41M2I5NjBiNGUxDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyRXJyb3IucHkNCj4gQEAgLTAsMCArMSwxNjIgQEAN Cj4gK2ltcG9ydCBpbXANCj4gDQo+ICtpbXBvcnQgc3lzDQo+IA0KPiAraW1wb3J0IG9zDQo+IA0K PiArZnJvbSBlbnVtIGltcG9ydCBFbnVtDQo+IA0KPiArZnJvbSBDb21tb24uQnVpbGRUb29sRXJy b3IgaW1wb3J0ICoNCj4gDQo+ICtpbXBvcnQgQ29tbW9uLkVka0xvZ2dlciBhcyBFZGtMb2dnZXIN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBWZnJSZXR1cm5Db2RlKEVudW0pOg0KPiAN Cj4gKyAgICBWRlJfUkVUVVJOX1NVQ0NFU1MgPSAwDQo+IA0KPiArICAgIFZGUl9SRVRVUk5fRVJS T1JfU0tJUEVEID0gMQ0KPiANCj4gKyAgICBWRlJfUkVUVVJOX0ZBVEFMX0VSUk9SID0gMg0KPiAN Cj4gKyAgICBWRlJfUkVUVVJOX01JU01BVENIRUQgPSAzDQo+IA0KPiArICAgIFZGUl9SRVRVUk5f SU5WQUxJRF9QQVJBTUVURVIgPSA0DQo+IA0KPiArICAgIFZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNP VVJDRVMgPSA1DQo+IA0KPiArICAgIFZGUl9SRVRVUk5fVU5TVVBQT1JURUQgPSA2DQo+IA0KPiAr ICAgIFZGUl9SRVRVUk5fUkVERUZJTkVEID0gNw0KPiANCj4gKyAgICBWRlJfUkVUVVJOX0ZPUk1J RF9SRURFRklORUQgPSA4DQo+IA0KPiArICAgIFZGUl9SRVRVUk5fUVVFU1RJT05JRF9SRURFRklO RUQgPSA5DQo+IA0KPiArICAgIFZGUl9SRVRVUk5fVkFSU1RPUkVJRF9SRURFRklORUQgPSAxMA0K PiANCj4gKyAgICBWRlJfUkVUVVJOX1VOREVGSU5FRCA9IDExDQo+IA0KPiArICAgIFZGUl9SRVRV Uk5fVkFSX05PVERFRklORURfQllfUVVFU1RJT04gPSAxMg0KPiANCj4gKyAgICBWRlJfUkVUVVJO X1ZBUlNUT1JFX0RBVEFUWVBFX1JFREVGSU5FRF9FUlJPUiA9IDEzDQo+IA0KPiArICAgIFZGUl9S RVRVUk5fR0VUX0VGSVZBUlNUT1JFX0VSUk9SID0gMTQNCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9F RklWQVJTVE9SRV9VU0VfRVJST1IgPSAxNQ0KPiANCj4gKyAgICBWRlJfUkVUVVJOX0VGSVZBUlNU T1JFX1NJWkVfRVJST1IgPSAxNg0KPiANCj4gKyAgICBWRlJfUkVUVVJOX0dFVF9OVlZBUlNUT1JF X0VSUk9SID0gMTcNCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9RVkFSX1JFVVNFID0gMTgNCj4gDQo+ ICsgICAgVkZSX1JFVFVSTl9GTEFHU19VTlNVUFBPUlRFRCA9IDE5DQo+IA0KPiArICAgIFZGUl9S RVRVUk5fRVJST1JfQVJSQVJZX05VTSA9IDIwDQo+IA0KPiArICAgIFZGUl9SRVRVUk5fREFUQV9T VFJJTkdfRVJST1IgPSAyMQ0KPiANCj4gKyAgICBWRlJfUkVUVVJOX0RFRkFVTFRfVkFMVUVfUkVE RUZJTkVEID0gMjINCj4gDQo+ICsgICAgVkZSX1JFVFVSTl9DT05TVEFOVF9PTkxZID0gMjMNCj4g DQo+ICsgICAgVkZSX1JFVFVSTl9WQVJTVE9SRV9OQU1FX1JFREVGSU5FRF9FUlJPUiA9IDI0DQo+ IA0KPiArICAgIFZGUl9SRVRVUk5fQklUX1dJRFRIX0VSUk9SID0gMjUNCj4gDQo+ICsgICAgVkZS X1JFVFVSTl9TVFJJTkdfVE9fVUlOVF9PVkVSRkxPVyA9IDI2DQo+IA0KPiArICAgIFZGUl9SRVRV Uk5fQ09ERVVOREVGSU5FRCA9IDI3DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArdmZyRXJyb3JN ZXNzYWdlID0gew0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzog JycsDQo+IA0KPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9FUlJPUl9TS0lQRUQ6ICcn LA0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1I6ICdmYXRh bCBlcnJvciEhJywNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX01JU01BVENI RUQ6ICd1bmV4cGVjdGVkIHRva2VuJywNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0lOVkFMSURfUEFSQU1FVEVSOiAnaW52YWxpZCBwYXJhbWV0ZXInLA0KPiANCj4gKyAgICBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVM6ICdzeXN0ZW0gb3V0IG9m DQo+IG1lbW9yeScsDQo+IA0KPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBP UlRFRDogJ3Vuc3VwcG9ydGVkJywNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1JFREVGSU5FRDogJ2FscmVhZHkgZGVmaW5lZCcsDQo+IA0KPiArICAgIFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9GT1JNSURfUkVERUZJTkVEOiAnZm9ybSBpZCBhbHJlYWR5DQo+IGRlZmluZWQn LA0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUVVFU1RJT05JRF9SRURFRklO RUQ6DQo+IA0KPiArICAgICdxdWVzdGlvbiBpZCBhbHJlYWR5IGRlZmluZWQnLA0KPiANCj4gKyAg ICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVkFSU1RPUkVJRF9SRURFRklORUQ6DQo+IA0KPiAr ICAgICd2YXJzdG9yZSBpZCBhbHJlYWR5IGRlZmluZWQnLA0KPiANCj4gKyAgICBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fVU5ERUZJTkVEOiAndW5kZWZpbmVkJywNCj4gDQo+ICsgICAgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUl9OT1RERUZJTkVEX0JZX1FVRVNUSU9OOg0KPiANCj4gKyAg ICAnc29tZSB2YXJpYWJsZSBoYXMgbm90IGRlZmluZWQgYnkgYSBxdWVzdGlvbicsDQo+IA0KPiAr ICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9WQVJTVE9SRV9EQVRBVFlQRV9SRURFRklORURf RVJST1I6DQo+IA0KPiArICAgICdEYXRhIFN0cnVjdHVyZSBpcyBkZWZpbmVkIGJ5IG1vcmUgdGhh biBvbmUgdmFyc3RvcmVzOiBpdCBjYW5cJ3QgYmUNCj4gcmVmZXJyZWQgYXMgdmFyc3RvcmU6IG9u bHkgdmFyc3RvcmUgbmFtZSBjb3VsZCBiZSB1c2VkLicsDQo+IA0KPiArICAgIFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9HRVRfRUZJVkFSU1RPUkVfRVJST1I6ICdnZXQgZWZpDQo+IHZhcnN0b3Jl IGVycm9yJywNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VGSVZBUlNUT1JF X1VTRV9FUlJPUjoNCj4gDQo+ICsgICAgJ2NhbiBub3QgdXNlIHRoZSBlZmkgdmFyc3RvcmUgbGlr ZSB0aGlzJywNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VGSVZBUlNUT1JF X1NJWkVfRVJST1I6DQo+IA0KPiArICAgICd1bnN1cHBvcnQgZWZpIHZhcnN0b3JlIHNpemUgc2hv dWxkIGJlIDw9IDggYnl0ZXMnLA0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f R0VUX05WVkFSU1RPUkVfRVJST1I6DQo+IA0KPiArICAgICdnZXQgbmFtZSB2YWx1ZSB2YXJzdG9y ZSBlcnJvcicsDQo+IA0KPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9RVkFSX1JFVVNF Og0KPiANCj4gKyAgICAndmFyaWFibGUgcmV1c2VkIGJ5IG1vcmUgdGhhbiBvbmUgcXVlc3Rpb24n LA0KPiANCj4gKyAgICBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQ6 ICdmbGFncw0KPiB1bnN1cHBvcnRlZCcsDQo+IA0KPiArICAgIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9FUlJPUl9BUlJBUllfTlVNOg0KPiANCj4gKyAgICAnYXJyYXkgbnVtYmVyIGVycm9yOiB0 aGUgdmFsaWQgdmFsdWUgaXMgaW4gKDAgfiBNQVhfSU5ERVgtMSBmb3IgVUVGSSB2ZnINCj4gYW5k IGluICgxIH4gTUFYX0lOREVYIGZvciBGcmFtZXdvcmsgVmZyJywNCj4gDQo+ICsgICAgVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX0RBVEFfU1RSSU5HX0VSUk9SOg0KPiANCj4gKyAgICAnZGF0YSBm aWVsZCBzdHJpbmcgZXJyb3Igb3Igbm90IHN1cHBvcnQnLA0KPiANCj4gKyAgICBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fREVGQVVMVF9WQUxVRV9SRURFRklORUQ6DQo+IA0KPiArICAgICdkZWZh dWx0IHZhbHVlIHJlLWRlZmluZWQgd2l0aCBkaWZmZXJlbnQgdmFsdWUnLA0KPiANCj4gKyAgICBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fQ09OU1RBTlRfT05MWToNCj4gDQo+ICsgICAgJ29ubHkg Y29uc3RhbnQgaXMgYWxsb3dlZCBpbiB0aGUgZXhwcmVzc2lvbicsDQo+IA0KPiArICAgIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9WQVJTVE9SRV9OQU1FX1JFREVGSU5FRF9FUlJPUjoNCj4gDQo+ ICsgICAgJ1ZhcnN0b3JlIG5hbWUgaXMgZGVmaW5lZCBieSBtb3JlIHRoYW4gb25lIHZhcnN0b3Jl czogaXQgY2FuXCd0IGJlDQo+IHJlZmVycmVkIGFzIHZhcnN0b3JlOiBvbmx5IHZhcnN0b3JlIHN0 cnVjdHVyZSBuYW1lIGNvdWxkIGJlIHVzZWQuJywNCj4gDQo+ICsgICAgVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX0JJVF9XSURUSF9FUlJPUjoNCj4gDQo+ICsgICAgJ2JpdCB3aWR0aCBtdXN0IGJl IDw9IHNpemVvZiAodHlwZSAqIDggYW5kIHRoZSBtYXggd2lkdGggY2FuIG5vdCA+IDMyJywNCj4g DQo+ICsgICAgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NUUklOR19UT19VSU5UX09WRVJGTE9X Og0KPiANCj4gKyAgICAnU3RyaW5nIHRvIFVJTlQqIE92ZXJmbG93JywNCj4gDQo+ICsgICAgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0NPREVVTkRFRklORUQ6ICd1bmRlZmluZWQgRXJyb3IgQ29k ZScNCj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRUZJX1ZGUl9XQVJO SU5HX0NPREUoRW51bSk6DQo+IA0KPiArICAgIFZGUl9XQVJOSU5HX0RFRkFVTFRfVkFMVUVfUkVE RUZJTkVEID0gMA0KPiANCj4gKyAgICBWRlJfV0FSTklOR19BQ1RJT05fV0lUSF9URVhUX1RXTyA9 IDENCj4gDQo+ICsgICAgVkZSX1dBUk5JTkdfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUgPSAy DQo+IA0KPiArICAgIFZGUl9XQVJOSU5HX0NPREVVTkRFRklORUQgPSAzDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArdmZyV2FybmluZ01lc3NhZ2UgPSB7DQo+IA0KPiArDQo+IEVGSV9WRlJfV0FS TklOR19DT0RFLlZGUl9XQVJOSU5HX0RFRkFVTFRfVkFMVUVfUkVERUZJTkVEOg0KPiANCj4gKyAg ICAiOiBkZWZhdWx0IHZhbHVlIHJlLWRlZmluZWQgd2l0aCBkaWZmZXJlbnQgdmFsdWUiLA0KPiAN Cj4gKyAgICBFRklfVkZSX1dBUk5JTkdfQ09ERS5WRlJfV0FSTklOR19BQ1RJT05fV0lUSF9URVhU X1RXTzoNCj4gDQo+ICsgICAgIjogQWN0aW9uIG9wY29kZSBzaG91bGQgbm90IGhhdmUgVGV4dFR3 byBwYXJ0IiwNCj4gDQo+ICsNCj4gRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTkdfT0JT T0xFVEVEX0ZSQU1FV09SS19PUEMNCj4gT0RFOg0KPiANCj4gKyAgICAiOiBOb3QgcmVjb21tZW5k IHRvIHVzZSBvYnNvbGV0ZWQgZnJhbWV3b3JrIG9wY29kZSIsDQo+IA0KPiArICAgIEVGSV9WRlJf V0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX0NPREVVTkRFRklORUQ6ICI6DQo+IHVuZGVmaW5lZCBX YXJuaW5nIENvZGUiDQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENW ZnJFcnJvckhhbmRsZSgpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6 DQo+IA0KPiArICAgICAgICBzZWxmLl9fSW5wdXRGaWxlTmFtZSA9IE5vbmUNCj4gDQo+ICsgICAg ICAgIHNlbGYuX192ZnJFcnJvck1lc3NhZ2UgPSB2ZnJFcnJvck1lc3NhZ2UNCj4gDQo+ICsgICAg ICAgIHNlbGYuX192ZnJXYXJuaW5nTWVzc2FnZSA9IHZmcldhcm5pbmdNZXNzYWdlDQo+IA0KPiAr ICAgICAgICBzZWxmLl9fV2FybmluZ0FzRXJyb3IgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgU2V0V2FybmluZ0FzRXJyb3Ioc2VsZiwgV2FybmluZ0FzRXJyb3IpOg0KPiANCj4gKyAg ICAgICAgc2VsZi5fX1dhcm5pbmdBc0Vycm9yID0gV2FybmluZ0FzRXJyb3INCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIFNldElucHV0RmlsZShzZWxmLCBJbnB1dEZpbGUpOg0KPiANCj4gKyAgICAg ICAgc2VsZi5fX0lucHV0RmlsZU5hbWUgPSBJbnB1dEZpbGUNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIEhhbmRsZVdhcm5pbmcoc2VsZiwgV2FybmluZ0NvZGUsIExpbmVOdW0sIFRva2VuVmFsdWU9 Tm9uZSk6DQo+IA0KPiArICAgICAgICBpZiBzZWxmLl9fdmZyV2FybmluZ01lc3NhZ2UgPT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gMQ0KPiANCj4gKyAgICAgICAgV2FybmluZ01z ZyA9ICcnDQo+IA0KPiArICAgICAgICBmb3Iga2V5IGluIHNlbGYuX192ZnJXYXJuaW5nTWVzc2Fn ZS5rZXlzKCk6DQo+IA0KPiArICAgICAgICAgICAgaWYgV2FybmluZ0NvZGUgPT0gc2VsZi5fX3Zm cldhcm5pbmdNZXNzYWdlW2tleV06DQo+IA0KPiArICAgICAgICAgICAgICAgIFdhcm5pbmdNc2cg PSBzZWxmLl9fdmZyV2FybmluZ01lc3NhZ2Vba2V5XQ0KPiANCj4gKyAgICAgICAgICAgICAgICBi cmVhaw0KPiANCj4gKyAgICAgICAgaWYgV2FybmluZ01zZyAhPSAnJzoNCj4gDQo+ICsgICAgICAg ICAgICBpZiBzZWxmLl9fV2FybmluZ0FzRXJyb3I6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVk a0xvZ2dlci5lcnJvcignVmZyQ29tcGlsZXInLCBXYXJuaW5nQ29kZSwgV2FybmluZ01zZywNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19JbnB1dEZpbGVOYW1l LCBMaW5lTnVtLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcm5p bmcgdHJlYXRlZCBhcyBlcnJvciIpDQo+IA0KPiArICAgICAgICAgICAgRWRrTG9nZ2VyLndhcm4o J1ZmckNvbXBpbGVyJywgV2FybmluZ01zZywgc2VsZi5fX0lucHV0RmlsZU5hbWUsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZU51bSwgVG9rZW5WYWx1ZSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIFByaW50TXNnKHNlbGYsDQo+IA0KPiArICAgICAgICAgICAgICAgICBM aW5lTnVtLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgTXNnVHlwZT0nRXJyb3InLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgRXJyb3JNc2c9Tm9uZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAg IFRva2VuVmFsdWU9Tm9uZSk6DQo+IA0KPiArICAgICAgICBpZiBNc2dUeXBlID09ICdXYXJuaW5n JzoNCj4gDQo+ICsgICAgICAgICAgICBFZGtMb2dnZXIudmVyYm9zZShFcnJvck1zZykNCj4gDQo+ ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgRWRrTG9nZ2VyLmVycm9yKCdWZnJD b21waWxlcicsIDB4MzAwMCwgRXJyb3JNc2csDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuX19JbnB1dEZpbGVOYW1lLCBMaW5lTnVtLCBUb2tlblZhbHVlKQ0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgSGFuZGxlRXJyb3Ioc2VsZiwgRXJyb3JDb2RlLCBMaW5lTnVtPU5v bmUsIFRva2VuVmFsdWU9Tm9uZSk6DQo+IA0KPiArICAgICAgICBpZiBzZWxmLl9fdmZyRXJyb3JN ZXNzYWdlID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIDENCj4gDQo+ICsgICAg ICAgIEVycm9yTXNnID0gJycNCj4gDQo+ICsgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fX3ZmckVy cm9yTWVzc2FnZS5rZXlzKCk6DQo+IA0KPiArICAgICAgICAgICAgaWYgRXJyb3JDb2RlID09IHNl bGYuX192ZnJFcnJvck1lc3NhZ2Vba2V5XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgRXJyb3JN c2cgPSBzZWxmLl9fdmZyRXJyb3JNZXNzYWdlW2tleV0NCj4gDQo+ICsgICAgICAgICAgICAgICAg YnJlYWsNCj4gDQo+ICsgICAgICAgIGlmIEVycm9yTXNnICE9ICcnOg0KPiANCj4gKyAgICAgICAg ICAgIEVka0xvZ2dlci5lcnJvcignVmZyQ29tcGlsZXInLCBFcnJvckNvZGUsIEVycm9yTXNnLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fSW5wdXRGaWxlTmFtZSwg TGluZU51bSwgVG9rZW5WYWx1ZSkNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gMQ0KPiANCj4g KyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gMA0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2dDVmZyRXJyb3JIYW5kbGUgPSBDVmZyRXJyb3JIYW5kbGUoKQ0KPiBcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL1ZmckNvbXBpbGVyL1ZmckZvcm1Qa2cucHkNCj4gYi9CYXNlVG9vbHMvU291cmNlL1B5 dGhvbi9WZnJDb21waWxlci9WZnJGb3JtUGtnLnB5DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAuLmVmYTgxMjlkOTANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9C YXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJGb3JtUGtnLnB5DQo+IEBAIC0w LDAgKzEsMjczOCBAQA0KPiArZnJvbSBhc3QgaW1wb3J0IEZvcg0KPiANCj4gK2Zyb20gcmUgaW1w b3J0IEwNCj4gDQo+ICtmcm9tIHNyZV9wYXJzZSBpbXBvcnQgRkxBR1MNCj4gDQo+ICtmcm9tIHN0 YXQgaW1wb3J0IEZJTEVfQVRUUklCVVRFX1NQQVJTRV9GSUxFDQo+IA0KPiArZnJvbSBWZnJDb21w aWxlci5Db21tb25DdHlwZXMgaW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLlZmckVy cm9yIGltcG9ydCBWZnJSZXR1cm5Db2RlDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5WZnJVdGls aXR5IGltcG9ydCAqDQo+IA0KPiArDQo+IA0KPiArZnJvbSBjdHlwZXMgaW1wb3J0ICoNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBPcGNvZGVTaXplc1Njb3BlTm9kZSgpOg0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgU2l6ZSwgU2NvcGUpOg0KPiANCj4gKyAg ICAgICAgc2VsZi5TaXplID0gU2l6ZQ0KPiANCj4gKyAgICAgICAgc2VsZi5TY29wZSA9IFNjb3Bl DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArZ09wY29kZVNpemVzU2NvcGVUYWJsZSA9IFsNCj4g DQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoMCwgMCksICAjIEVGSV9JRlJfSU5WQUxJRCAt IDB4MDANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklf SUZSX0ZPUk0pLCAxKSwgICMNCj4gRUZJX0lGUl9GT1JNX09QDQo+IA0KPiArICAgIE9wY29kZVNp emVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TVUJUSVRMRSksDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX1NVQlRJVExFX09QDQo+IA0KPiAr ICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9URVhUKSwgMCks ICAjDQo+IEVGSV9JRlJfVEVYVF9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShj dHlwZXMuc2l6ZW9mKEVGSV9JRlJfSU1BR0UpLCAwKSwgICMNCj4gRUZJX0lGUl9JTUFHRV9PUA0K PiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfT05F X09GKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfT05F X09GX09QIC0gMHgwNQ0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6 ZW9mKEVGSV9JRlJfQ0hFQ0tCT1gpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAx KSwgICMgRUZJX0lGUl9DSEVDS0JPWF9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9k ZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTlVNRVJJQyksDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgIDEpLCAgIyBFRklfSUZSX05VTUVSSUNfT1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6 ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1BBU1NXT1JEKSwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfUEFTU1dPUkRfT1ANCj4gDQo+ICsg ICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX09ORV9PRl9PUFRJ T04pLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9PTkVf T0ZfT1BUSU9OX09QDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXpl b2YoRUZJX0lGUl9TVVBQUkVTU19JRiksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg IDEpLCAgIyBFRklfSUZSX1NVUFBSRVNTX0lGIC0gMHgwQQ0KPiANCj4gKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTE9DS0VEKSwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfTE9DS0VEX09QDQo+IA0KPiArICAgIE9w Y29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9BQ1RJT04pLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAxKSwgICMgRUZJX0lGUl9BQ1RJT05fT1ANCj4gDQo+ ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1JFU0VUX0JV VFRPTiksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX1JF U0VUX0JVVFRPTl9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6 ZW9mKEVGSV9JRlJfRk9STV9TRVQpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAx KSwgICMgRUZJX0lGUl9GT1JNX1NFVF9PUCAtMHhFDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2Nv cGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9SRUYpLCAwKSwgICMNCj4gRUZJX0lGUl9SRUZf T1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X05PX1NVQk1JVF9JRiksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBF RklfSUZSX05PX1NVQk1JVF9JRl9PUCAtMHgxMA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3Bl Tm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfSU5DT05TSVNURU5UX0lGKSwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfSU5DT05TSVNURU5UX0lGX09QDQo+ IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9FUV9J RF9WQUwpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9F UV9JRF9WQUxfT1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVv ZihFRklfSUZSX0VRX0lEX0lEKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCks ICAjIEVGSV9JRlJfRVFfSURfSURfT1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUo Y3R5cGVzLnNpemVvZihFRklfSUZSX0VRX0lEX1ZBTF9MSVNUKSwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfRVFfSURfTElTVF9PUCAtIDB4MTQNCj4gDQo+ ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0FORCksIDAp LCAgIw0KPiBFRklfSUZSX0FORF9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShj dHlwZXMuc2l6ZW9mKEVGSV9JRlJfT1IpLCAwKSwgICMNCj4gRUZJX0lGUl9PUl9PUA0KPiANCj4g KyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTk9UKSwgMCks ICAjDQo+IEVGSV9JRlJfTk9UX09QDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0 eXBlcy5zaXplb2YoRUZJX0lGUl9SVUxFKSwgMSksICAjDQo+IEVGSV9JRlJfUlVMRV9PUA0KPiAN Cj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1JBWV9P VVRfSUYpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAxKSwgICMgRUZJX0lGUl9H UkFZT1VUX0lGX09QIC0gMHgxOQ0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlw ZXMuc2l6ZW9mKEVGSV9JRlJfREFURSksIDEpLCAgIw0KPiBFRklfSUZSX0RBVEVfT1ANCj4gDQo+ ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1RJTUUpLCAx KSwgICMNCj4gRUZJX0lGUl9USU1FX09QDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2Rl KGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TVFJJTkcpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAxKSwgICMgRUZJX0lGUl9TVFJJTkdfT1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNT Y29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1JFRlJFU0gpLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9SRUZSRVNIX09QDQo+IA0KPiArICAgIE9w Y29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9ESVNBQkxFX0lGKSwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfRElTQUJMRV9JRl9P UCAtIDB4MUUNCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoMCwgMCksICAjIDB4MUYN Cj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1RP X0xPV0VSKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJf VE9fTE9XRVJfT1AgLSAweDIwDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBl cy5zaXplb2YoRUZJX0lGUl9UT19VUFBFUiksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgIDApLCAgIyBFRklfSUZSX1RPX1VQUEVSX09QIC0gMHgyMQ0KPiANCj4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTUFQKSwgMSksICAjIEVGSV9JRlJf TUFQDQo+IC0gMHgyMg0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6 ZW9mKEVGSV9JRlJfT1JERVJFRF9MSVNUKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgMSksICAjIEVGSV9JRlJfT1JERVJFRF9MSVNUX09QIC0gMHgyMw0KPiANCj4gKyAgICBPcGNv ZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVkFSU1RPUkUpLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9WQVJTVE9SRV9PUA0KPiAN Cj4gKw0KPiBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVkFSU1RP UkVfTkFNRV9WQUxVRSksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBF RklfSUZSX1ZBUlNUT1JFX05BTUVfVkFMVUVfT1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29w ZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1ZBUlNUT1JFX0VGSSksDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1ZBUlNUT1JFX0VGSV9PUA0KPiANCj4g KyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVkFSU1RPUkVf REVWSUNFKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJf VkFSU1RPUkVfREVWSUNFX09QDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBl cy5zaXplb2YoRUZJX0lGUl9WRVJTSU9OKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgMCksICAjIEVGSV9JRlJfVkVSU0lPTl9PUCAtIDB4MjgNCj4gDQo+ICsgICAgT3Bjb2RlU2l6 ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0VORCksIDApLCAgIw0KPiBFRklfSUZS X0VORF9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVG SV9JRlJfTUFUQ0gpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJ X0lGUl9NQVRDSF9PUCAtIDB4MkENCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5 cGVzLnNpemVvZihFRklfSUZSX0dFVCksIDApLCAgIyBFRklfSUZSX0dFVCAtDQo+IDB4MkINCj4g DQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1NFVCks IDApLCAgIyBFRklfSUZSX1NFVCAtDQo+IDB4MkMNCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29w ZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1JFQUQpLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9SRUFEIC0gMHgyRA0KPiANCj4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfV1JJVEUpLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9XUklURSAtIDB4MkUNCj4gDQo+ICsg ICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0VRVUFMKSwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfRVFVQUxfT1AgLSAw eDJGDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lG Ul9OT1RfRVFVQUwpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJ X0lGUl9OT1RfRVFVQUxfT1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVz LnNpemVvZihFRklfSUZSX0dSRUFURVJfVEhBTiksDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgIDApLCAgIyBFRklfSUZSX0dSRUFURVJfVEhBTl9PUA0KPiANCj4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1JFQVRFUl9FUVVBTCksDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0dSRUFURVJfRVFVQUxf T1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X0xFU1NfVEhBTiksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklf SUZSX0xFU1NfVEhBTl9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMu c2l6ZW9mKEVGSV9JRlJfTEVTU19FUVVBTCksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgIDApLCAgIyBFRklfSUZSX0xFU1NfRVFVQUxfT1AgLSAweDM0DQo+IA0KPiArICAgIE9wY29k ZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9CSVRXSVNFX0FORCksDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0JJVFdJU0VfQU5EX09Q DQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9C SVRXSVNFX09SKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9J RlJfQklUV0lTRV9PUl9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMu c2l6ZW9mKEVGSV9JRlJfQklUV0lTRV9OT1QpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAwKSwgICMgRUZJX0lGUl9CSVRXSVNFX05PVF9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfU0hJRlRfTEVGVCksDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1NISUZUX0xFRlRfT1ANCj4gDQo+ ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1NISUZUX1JJ R0hUKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfU0hJ RlRfUklHSFRfT1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVv ZihFRklfSUZSX0FERCksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBF RklfSUZSX0FERF9PUCAtIDB4M0ENCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5 cGVzLnNpemVvZihFRklfSUZSX1NVQlRSQUNUKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgMCksICAjIEVGSV9JRlJfU1VCVFJBQ1RfT1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNT Y29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX01VTFRJUExZKSwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfTVVMVElQTFlfT1ANCj4gDQo+ICsgICAg T3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0RJVklERSksDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0RJVklERV9PUA0KPiAN Cj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTU9EVUxP KSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfTU9EVUxP X09QIC0gMHgzRQ0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9m KEVGSV9JRlJfUlVMRV9SRUYpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwg ICMgRUZJX0lGUl9SVUxFX1JFRl9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShj dHlwZXMuc2l6ZW9mKEVGSV9JRlJfUVVFU1RJT05fUkVGMSksDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX1FVRVNUSU9OX1JFRjFfT1ANCj4gDQo+ICsgICAg T3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1FVRVNUSU9OX1JFRjIp LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9RVUVTVElP Tl9SRUYyX09QIC0gMHg0MQ0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMu c2l6ZW9mKEVGSV9JRlJfVUlOVDgpLCAwKSwgICMNCj4gRUZJX0lGUl9VSU5UOA0KPiANCj4gKyAg ICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVUlOVDE2KSwgMCks ICAjDQo+IEVGSV9JRlJfVUlOVDE2DQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0 eXBlcy5zaXplb2YoRUZJX0lGUl9VSU5UMzIpLCAwKSwgICMNCj4gRUZJX0lGUl9VSU5UMzINCj4g DQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1VJTlQ2 NCksIDApLCAgIw0KPiBFRklfSUZSX1VUTlQ2NA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3Bl Tm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVFJVRSksDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgIDApLCAgIyBFRklfSUZSX1RSVUVfT1AgLSAweDQ2DQo+IA0KPiArICAgIE9wY29k ZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9GQUxTRSksIDApLCAgIw0KPiBF RklfSUZSX0ZBTFNFX09QDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5z aXplb2YoRUZJX0lGUl9UT19VSU5UKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg MCksICAjIEVGSV9JRlJfVE9fVUlOVF9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9k ZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVE9fU1RSSU5HKSwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfVE9fU1RSSU5HX09QDQo+IA0KPiArICAgIE9wY29k ZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9UT19CT09MRUFOKSwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfVE9fQk9PTEVBTl9PUA0K PiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfTUlE KSwgMCksICAjDQo+IEVGSV9JRlJfTUlEX09QDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVO b2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9GSU5EKSwgMCksICAjDQo+IEVGSV9JRlJfRklORF9P UA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJf VE9LRU4pLCAwKSwgICMNCj4gRUZJX0lGUl9UT0tFTl9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfU1RSSU5HX1JFRjEpLA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9TVFJJTkdfUkVGMV9PUCAtIDB4 NEUNCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X1NUUklOR19SRUYyKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVG SV9JRlJfU1RSSU5HX1JFRjJfT1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5 cGVzLnNpemVvZihFRklfSUZSX0NPTkRJVElPTkFMKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgMCksICAjIEVGSV9JRlJfQ09ORElUSU9OQUxfT1ANCj4gDQo+ICsgICAgT3Bjb2Rl U2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX1FVRVNUSU9OX1JFRjMpLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9RVUVTVElPTl9SRUYz X09QDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lG Ul9aRVJPKSwgMCksICAjDQo+IEVGSV9JRlJfWkVST19PUA0KPiANCj4gKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfT05FKSwgMCksICAjDQo+IEVGSV9JRlJf T05FX09QDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJ X0lGUl9PTkVTKSwgMCksICAjDQo+IEVGSV9JRlJfT05FU19PUA0KPiANCj4gKyAgICBPcGNvZGVT aXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfVU5ERUZJTkVEKSwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgMCksICAjIEVGSV9JRlJfVU5ERUZJTkVEX09QDQo+IA0K PiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9MRU5HVEgp LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9MRU5HVEhf T1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X0RVUCksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0RV UF9PUCAtIDB4NTcNCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVv ZihFRklfSUZSX1RISVMpLCAwKSwgICMNCj4gRUZJX0lGUl9USElTX09QDQo+IA0KPiArICAgIE9w Y29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9TUEFOKSwgMCksICAjDQo+ IEVGSV9JRlJfU1BBTl9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMu c2l6ZW9mKEVGSV9JRlJfVkFMVUUpLCAxKSwgICMNCj4gRUZJX0lGUl9WQUxVRV9PUA0KPiANCj4g KyAgICBPcGNvZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfREVGQVVMVCks DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0RFRkFVTFRf T1ANCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZS X0RFRkFVTFRTVE9SRSksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBF RklfSUZSX0RFRkFVTFRTVE9SRV9PUCAtIDB4NUMNCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29w ZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX0ZPUk1fTUFQKSwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgMSksICAjIEVGSV9JRlJfRk9STV9NQVBfT1AgLSAweDVEDQo+IA0KPiAr ICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lGUl9DQVRFTkFURSks DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX0NBVEVOQVRF X09QDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJX0lG Ul9HVUlEKSwgMCksICAjDQo+IEVGSV9JRlJfR1VJRF9PUA0KPiANCj4gKyAgICBPcGNvZGVTaXpl c1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfU0VDVVJJVFkpLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAwKSwgICMgRUZJX0lGUl9TRUNVUklUWV9PUCAtIDB4NjANCj4g DQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVzLnNpemVvZihFRklfSUZSX01PREFM X1RBRyksDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIDApLCAgIyBFRklfSUZSX01P REFMX1RBR19PUCAtIDB4NjENCj4gDQo+ICsgICAgT3Bjb2RlU2l6ZXNTY29wZU5vZGUoY3R5cGVz LnNpemVvZihFRklfSUZSX1JFRlJFU0hfSUQpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAwKSwgICMgRUZJX0lGUl9SRUZSRVNIX0lEX09QIC0gMHg2Mg0KPiANCj4gKyAgICBPcGNv ZGVTaXplc1Njb3BlTm9kZShjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfV0FSTklOR19JRiksDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgIDEpLCAgIyBFRklfSUZSX1dBUk5JTkdfSUZfT1Ag LSAweDYzDQo+IA0KPiArICAgIE9wY29kZVNpemVzU2NvcGVOb2RlKGN0eXBlcy5zaXplb2YoRUZJ X0lGUl9NQVRDSDIpLCAwKQ0KPiANCj4gK10NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBTQnVmZmVyTm9kZSgpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwg QnVmZmVyPScnLCBOZXh0PU5vbmUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5CdWZmZXIgPSBCdWZm ZXINCj4gDQo+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5leHQNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBDRm9ybVBrZygpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgQnVmZmVyU2l6ZT00MDk2KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIE5vZGUgPSBT QnVmZmVyTm9kZSgpDQo+IA0KPiArICAgICAgICBzZWxmLl9fQnVmZmVyTm9kZVF1ZXVlSGVhZCA9 IE5vZGUNCj4gDQo+ICsgICAgICAgIHNlbGYuX19CdWZmZXJOb2RlUXVldWVUYWlsID0gTm9kZQ0K PiANCj4gKyAgICAgICAgc2VsZi5fX0N1cnJCdWZmZXJOb2RlID0gTm9kZQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fX1JlYWRCdWZmZXJOb2RlID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX1Jl YWRCdWZmZXJPZmZzZXQgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLl9fUGtnTGVuZ3RoID0gMA0K PiANCj4gKyAgICAgICAgc2VsZi5fX1BlbmRpbmdBc3NpZ25MaXN0ID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgc2VsZi5fX0J1ZmZlclNpemUgPSBCdWZmZXJTaXplDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBHZXRQa2dMZW5ndGgoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX1Br Z0xlbmd0aA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19jcmVhdGVOZXdOb2RlKHNlbGYpOg0K PiANCj4gKyAgICAgICAgTm9kZSA9IFNCdWZmZXJOb2RlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBOb2RlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX0dldE5vZGVCZWZvcmUoc2VsZiwgQ3Vy cmVudE5vZGUpOg0KPiANCj4gKyAgICAgICAgRmlyc3ROb2RlID0gc2VsZi5fX0J1ZmZlck5vZGVR dWV1ZUhlYWQNCj4gDQo+ICsgICAgICAgIExhc3ROb2RlID0gc2VsZi5fX0J1ZmZlck5vZGVRdWV1 ZUhlYWQNCj4gDQo+ICsgICAgICAgIHdoaWxlIEZpcnN0Tm9kZSAhPSBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIEZpcnN0Tm9kZSA9PSBDdXJyZW50Tm9kZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgYnJlYWsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBMYXN0Tm9kZSA9IEZpcnN0 Tm9kZQ0KPiANCj4gKyAgICAgICAgICAgIEZpcnN0Tm9kZSA9IEZpcnN0Tm9kZS5OZXh0DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBpZiBGaXJzdE5vZGUgPT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICBMYXN0Tm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBMYXN0 Tm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19JbnNlcnROb2RlQmVmb3JlKHNlbGYsIEN1 cnJlbnROb2RlLCBOZXdOb2RlKToNCj4gDQo+ICsgICAgICAgIExhc3ROb2RlID0gc2VsZi5fX0dl dE5vZGVCZWZvcmUoQ3VycmVudE5vZGUpDQo+IA0KPiArICAgICAgICBpZiBMYXN0Tm9kZSA9PSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f TUlTTUFUQ0hFRA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTmV3Tm9kZS5OZXh0ID0gTGFzdE5v ZGUuTmV4dA0KPiANCj4gKyAgICAgICAgTGFzdE5vZGUuTmV4dCA9IE5ld05vZGUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIElmckJpbkJ1ZmZlckdldChzZWxmLCBMZW4pOg0KPiANCj4gKyAgICAg ICAgaWYgTGVuID09IDAgb3IgTGVuID4gc2VsZi5fX0J1ZmZlclNpemU6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIE5vbmUNCj4gDQo+ICsgICAgICAgIGlmIGxlbihzZWxmLl9fQ3VyckJ1ZmZl ck5vZGUuQnVmZmVyKSArIExlbiA+IHNlbGYuX19CdWZmZXJTaXplOg0KPiANCj4gKyAgICAgICAg ICAgIE5vZGUgPSBzZWxmLl9fY3JlYXRlTmV3Tm9kZSgpDQo+IA0KPiArICAgICAgICAgICAgaWYg Tm9kZSA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19CdWZmZXJOb2RlUXVldWVUYWlsID09IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19CdWZmZXJOb2RlUXVldWVIZWFkID0g c2VsZi5fX0J1ZmZlck5vZGVRdWV1ZVRhaWwgPQ0KPiBOb2RlDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0J1ZmZlck5vZGVRdWV1ZVRhaWwu TmV4dCA9IE5vZGUNCj4gDQo+ICsgICAgICAgICAgICAgICAgbUJ1ZmZlck5vZGVRdWV1ZVRhaWwg PSBOb2RlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0N1cnJCdWZmZXJOb2RlID0gTm9kZQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5fX1BrZ0xlbmd0aCArPSBMZW4NCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fQ3VyckJ1ZmZlck5vZGUuQnVmZmVyDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArZ0NGb3JtUGtnID0gQ0Zvcm1Qa2coKQ0KPiAN Cj4gK2dDcmVhdGVPcCA9IFRydWUNCj4gDQo+ICsNCj4gDQo+ICtnSWZyT2JqUHJpbnREZWJ1Z1Rh YmxlID0gWw0KPiANCj4gKyAgICAiRUZJX0lGUl9JTlZBTElEIiwNCj4gDQo+ICsgICAgIkVGSV9J RlJfRk9STSIsDQo+IA0KPiArICAgICJFRklfSUZSX1NVQlRJVExFIiwNCj4gDQo+ICsgICAgIkVG SV9JRlJfVEVYVCIsDQo+IA0KPiArICAgICJFRklfSUZSX0lNQUdFIiwNCj4gDQo+ICsgICAgIkVG SV9JRlJfT05FX09GIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfQ0hFQ0tCT1giLA0KPiANCj4gKyAg ICAiRUZJX0lGUl9OVU1FUklDIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfUEFTU1dPUkQiLA0KPiAN Cj4gKyAgICAiRUZJX0lGUl9PTkVfT0ZfT1BUSU9OIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfU1VQ UFJFU1NfSUYiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9MT0NLRUQiLA0KPiANCj4gKyAgICAiRUZJ X0lGUl9BQ1RJT04iLA0KPiANCj4gKyAgICAiRUZJX0lGUl9SRVNFVF9CVVRUT04iLA0KPiANCj4g KyAgICAiRUZJX0lGUl9GT1JNX1NFVCIsDQo+IA0KPiArICAgICJFRklfSUZSX1JFRiIsDQo+IA0K PiArICAgICJFRklfSUZSX05PX1NVQk1JVF9JRiIsDQo+IA0KPiArICAgICJFRklfSUZSX0lOQ09O U0lTVEVOVF9JRiIsDQo+IA0KPiArICAgICJFRklfSUZSX0VRX0lEX1ZBTCIsDQo+IA0KPiArICAg ICJFRklfSUZSX0VRX0lEX0lEIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfRVFfSURfTElTVCIsDQo+ IA0KPiArICAgICJFRklfSUZSX0FORCIsDQo+IA0KPiArICAgICJFRklfSUZSX09SIiwNCj4gDQo+ ICsgICAgIkVGSV9JRlJfTk9UIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfUlVMRSIsDQo+IA0KPiAr ICAgICJFRklfSUZSX0dSQVlfT1VUX0lGIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfREFURSIsDQo+ IA0KPiArICAgICJFRklfSUZSX1RJTUUiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9TVFJJTkciLA0K PiANCj4gKyAgICAiRUZJX0lGUl9SRUZSRVNIIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfRElTQUJM RV9JRiIsDQo+IA0KPiArICAgICJFRklfSUZSX0lOVkFMSUQiLA0KPiANCj4gKyAgICAiRUZJX0lG Ul9UT19MT1dFUiIsDQo+IA0KPiArICAgICJFRklfSUZSX1RPX1VQUEVSIiwNCj4gDQo+ICsgICAg IkVGSV9JRlJfTUFQIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfT1JERVJFRF9MSVNUIiwNCj4gDQo+ ICsgICAgIkVGSV9JRlJfVkFSU1RPUkUiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9WQVJTVE9SRV9O QU1FX1ZBTFVFIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfVkFSU1RPUkVfRUZJIiwNCj4gDQo+ICsg ICAgIkVGSV9JRlJfVkFSU1RPUkVfREVWSUNFIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfVkVSU0lP TiIsDQo+IA0KPiArICAgICJFRklfSUZSX0VORCIsDQo+IA0KPiArICAgICJFRklfSUZSX01BVENI IiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfR0VUIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfU0VUIiwN Cj4gDQo+ICsgICAgIkVGSV9JRlJfUkVBRCIsDQo+IA0KPiArICAgICJFRklfSUZSX1dSSVRFIiwN Cj4gDQo+ICsgICAgIkVGSV9JRlJfRVFVQUwiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9OT1RfRVFV QUwiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9HUkVBVEVSX1RIQU4iLA0KPiANCj4gKyAgICAiRUZJ X0lGUl9HUkVBVEVSX0VRVUFMIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfTEVTU19USEFOIiwNCj4g DQo+ICsgICAgIkVGSV9JRlJfTEVTU19FUVVBTCIsDQo+IA0KPiArICAgICJFRklfSUZSX0JJVFdJ U0VfQU5EIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfQklUV0lTRV9PUiIsDQo+IA0KPiArICAgICJF RklfSUZSX0JJVFdJU0VfTk9UIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfU0hJRlRfTEVGVCIsDQo+ IA0KPiArICAgICJFRklfSUZSX1NISUZUX1JJR0hUIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfQURE IiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfU1VCVFJBQ1QiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9N VUxUSVBMWSIsDQo+IA0KPiArICAgICJFRklfSUZSX0RJVklERSIsDQo+IA0KPiArICAgICJFRklf SUZSX01PRFVMTyIsDQo+IA0KPiArICAgICJFRklfSUZSX1JVTEVfUkVGIiwNCj4gDQo+ICsgICAg IkVGSV9JRlJfUVVFU1RJT05fUkVGMSIsDQo+IA0KPiArICAgICJFRklfSUZSX1FVRVNUSU9OX1JF RjIiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9VSU5UOCIsDQo+IA0KPiArICAgICJFRklfSUZSX1VJ TlQxNiIsDQo+IA0KPiArICAgICJFRklfSUZSX1VJTlQzMiIsDQo+IA0KPiArICAgICJFRklfSUZS X1VJTlQ2NCIsDQo+IA0KPiArICAgICJFRklfSUZSX1RSVUUiLA0KPiANCj4gKyAgICAiRUZJX0lG Ul9GQUxTRSIsDQo+IA0KPiArICAgICJFRklfSUZSX1RPX1VJTlQiLA0KPiANCj4gKyAgICAiRUZJ X0lGUl9UT19TVFJJTkciLA0KPiANCj4gKyAgICAiRUZJX0lGUl9UT19CT09MRUFOIiwNCj4gDQo+ ICsgICAgIkVGSV9JRlJfTUlEIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfRklORCIsDQo+IA0KPiAr ICAgICJFRklfSUZSX1RPS0VOIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfU1RSSU5HX1JFRjEiLA0K PiANCj4gKyAgICAiRUZJX0lGUl9TVFJJTkdfUkVGMiIsDQo+IA0KPiArICAgICJFRklfSUZSX0NP TkRJVElPTkFMIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfUVVFU1RJT05fUkVGMyIsDQo+IA0KPiAr ICAgICJFRklfSUZSX1pFUk8iLA0KPiANCj4gKyAgICAiRUZJX0lGUl9PTkUiLA0KPiANCj4gKyAg ICAiRUZJX0lGUl9PTkVTIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfVU5ERUZJTkVEIiwNCj4gDQo+ ICsgICAgIkVGSV9JRlJfTEVOR1RIIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfRFVQIiwNCj4gDQo+ ICsgICAgIkVGSV9JRlJfVEhJUyIsDQo+IA0KPiArICAgICJFRklfSUZSX1NQQU4iLA0KPiANCj4g KyAgICAiRUZJX0lGUl9WQUxVRSIsDQo+IA0KPiArICAgICJFRklfSUZSX0RFRkFVTFQiLA0KPiAN Cj4gKyAgICAiRUZJX0lGUl9ERUZBVUxUU1RPUkUiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9GT1JN X01BUCIsDQo+IA0KPiArICAgICJFRklfSUZSX0NBVEVOQVRFIiwNCj4gDQo+ICsgICAgIkVGSV9J RlJfR1VJRCIsDQo+IA0KPiArICAgICJFRklfSUZSX1NFQ1VSSVRZIiwNCj4gDQo+ICsgICAgIkVG SV9JRlJfTU9EQUxfVEFHIiwNCj4gDQo+ICsgICAgIkVGSV9JRlJfUkVGUkVTSF9JRCIsDQo+IA0K PiArICAgICJFRklfSUZSX1dBUk5JTkdfSUYiLA0KPiANCj4gKyAgICAiRUZJX0lGUl9NQVRDSDIi LA0KPiANCj4gK10NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyT2JqKCk6DQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBPYmo9Tm9uZSwgT3BDb2RlPU5v bmUsIE9iakJpbkxlbj0wLA0KPiBEZWxheUVtaXQ9RmFsc2UsIExpbmVObz0wKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19EZWxheUVtaXQgPSBEZWxheUVtaXQNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19Qa2dPZmZzZXQgPSBnQ0Zvcm1Qa2cuR2V0UGtnTGVuZ3RoKCkNCj4gDQo+ICsg ICAgICAgIHNlbGYuX19PYmpCaW5MZW4gPSBnT3Bjb2RlU2l6ZXNTY29wZVRhYmxlWw0KPiANCj4g KyAgICAgICAgICAgIE9wQ29kZV0uU2l6ZSBpZiBPYmpCaW5MZW4gPT0gMCBlbHNlIE9iakJpbkxl bg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5fX09iakJpbkJ1ZiA9IE9iag0KPiANCj4g KyAgICAgICAgc2VsZi5fX0xpbmVObyA9IExpbmVObw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg IyBwcmludCAoIj09PT09PUNyZWF0ZSBJRlIgWyVzXVxuIiwgZ0lmck9ialByaW50RGVidWdUYWJs ZVtPcENvZGVdKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19PYmpCaW5CdWYNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIFNldE9iakJpbihzZWxmLCBPYmpCaW5MZW4pOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgc2VsZi5fX09iakJpbkxlbiA9IE9iakJpbkxlbg0KPiANCj4gKyAgICAg ICAgaWYgc2VsZi5fX0RlbGF5RW1pdCA9PSBGYWxzZSBhbmQgZ0NyZWF0ZU9wID09IFRydWU6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fX09iakJpbkJ1ZiA9IGdDRm9ybVBrZy5JZnJCaW5CdWZm ZXJHZXQoc2VsZi5fX09iakJpbkxlbikNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldExpbmVO byhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0xpbmVObyA9IExpbmVObw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0T2JqQmluQWRkcihzZWxmLCBBZGRyKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19PYmpCaW5CdWYgPSBBZGRyDQo+IA0KPiArICAgICAgICByZXR1cm4g c2VsZi5fX09iakJpbkJ1Zg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0T2JqQmluT2Zmc2V0 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19Qa2dPZmZzZXQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEdldE9iakJpbkxlbihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVy biBzZWxmLl9fT2JqQmluTGVuDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBFeHBlbmRPYmpCaW4o c2VsZiwgU2l6ZSk6DQo+IA0KPiArICAgICAgICBpZiAoc2VsZi5fX0RlbGF5RW1pdCkgPT0gVHJ1 ZSBhbmQgKA0KPiANCj4gKyAgICAgICAgICAgIChzZWxmLl9fT2JqQmluTGVuICsgU2l6ZSkgPiBz ZWxmLl9fT2JqQmluTGVuKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fT2JqQmluTGVuID0g c2VsZi5fX09iakJpbkxlbiArIFNpemUNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0K PiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gRmFsc2UNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIFNocmlua09iakJpbihzZWxmLCBTaXplKToNCj4gDQo+ICsg ICAgICAgIGlmIChzZWxmLl9fRGVsYXlFbWl0KSA9PSBUcnVlIGFuZCAoc2VsZi5fX09iakJpbkxl biA+IFNpemUpOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19PYmpCaW5MZW4gPSBzZWxmLl9f T2JqQmluTGVuIC0gU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0T2JqQmluKHNlbGYp Og0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19PYmpCaW5CdWYNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIEVNSVRfUEVORElOR19PQkooc2VsZik6DQo+IA0KPiArICAgICAgICBpZiBzZWxm Ll9fRGVsYXlFbWl0ID09IEZhbHNlIG9yIGdDcmVhdGVPcCA9PSBGYWxzZToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Qa2dPZmZzZXQg PSBnQ0Zvcm1Qa2cuR2V0UGtnTGVuZ3RoKCkNCj4gDQo+ICsgICAgICAgICMgdXBkYXRlIGRhdGEg YnVmZmVyIHRvIHBhY2thZ2UgZGF0YQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX09iakJpbkJ1ZiA9 IGdDRm9ybVBrZy5JZnJCaW5CdWZmZXJHZXQoc2VsZi5fX09iakJpbkxlbikNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHNlbGYuX19EZWxheUVtaXQgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2dTY29wZUNvdW50ID0gMA0KPiANCj4gK2dJc09yZGVyZWRMaXN0ID0gRmFsc2UNCj4g DQo+ICtnSXNTdHJpbmdPcCA9IEZhbHNlDQo+IA0KPiArZ0N1cnJlbnRRdWVzdGlvbiA9IE5vbmUN Cj4gDQo+ICtnQ3VycmVudE1pbk1heERhdGEgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArZGVmIFNldEN1cnJlbnRRdWVzdGlvbihRdWVzdGlvbik6DQo+IA0KPiArDQo+IA0KPiArICAg IGdDdXJyZW50UXVlc3Rpb24gPSBRdWVzdGlvbg0KPiANCj4gKyAgICByZXR1cm4gZ0N1cnJlbnRR dWVzdGlvbg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJPcEhlYWRlcigpOg0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgT3BIZWFkZXI6IEVGSV9JRlJf T1BfSEVBREVSLCBPcENvZGU9Tm9uZSwNCj4gTGVuZ3RoPTApOg0KPiANCj4gKyAgICAgICAgc2Vs Zi5fX09wSGVhZGVyID0gT3BIZWFkZXINCj4gDQo+ICsgICAgICAgIGlmIE9wQ29kZSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19PcEhlYWRlci5PcENvZGUgPSBPcENvZGUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fT3BIZWFkZXIuTGVuZ3RoID0gZ09wY29k ZVNpemVzU2NvcGVUYWJsZVsNCj4gDQo+ICsgICAgICAgICAgICAgICAgT3BDb2RlXS5TaXplIGlm IExlbmd0aCA9PSAwIGVsc2UgTGVuZ3RoDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX09wSGVh ZGVyLlNjb3BlID0gMSBpZiAoDQo+IA0KPiArICAgICAgICAgICAgICAgIGdPcGNvZGVTaXplc1Nj b3BlVGFibGVbT3BDb2RlXS5TY29wZSArIGdTY29wZUNvdW50ID4gMCkgZWxzZQ0KPiAwDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBHZXRMZW5ndGgoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1 cm4gc2VsZi5fX09wSGVhZGVyLkxlbmd0aA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0U2Nv cGUoc2VsZiwgU2NvcGUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX09wSGVhZGVyLlNjb3BlID0g U2NvcGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFNjb3BlKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgcmV0dXJuIHNlbGYuX19PcEhlYWRlci5TY29wZQ0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgVXBkYXRlSGVhZGVyKHNlbGYsIEhlYWRlcik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fT3BI ZWFkZXIgPSBIZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEluY0xlbmd0aChzZWxmLCBT aXplKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19PcEhlYWRlci5MZW5ndGggKz0gU2l6ZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgRGVjTGVuZ3RoKHNlbGYsIFNpemUpOg0KPiANCj4gKyAgICAg ICAgc2VsZi5fX09wSGVhZGVyLkxlbmd0aCAtPSBTaXplDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBHZXRPcENvZGUoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX09wSGVhZGVy Lk9wQ29kZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJTdGF0ZW1lbnRIZWFk ZXIoKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNIZWFkZXI6IEVG SV9JRlJfU1RBVEVNRU5UX0hFQURFUik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fc0hlYWRlciA9 IHNIZWFkZXINCj4gDQo+ICsgICAgICAgIHNlbGYuX19zSGVhZGVyLkhlbHAgPSBFRklfU1RSSU5H X0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuX19zSGVhZGVyLlByb21wdCA9IEVGSV9T VFJJTkdfSURfSU5WQUxJRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0U3RhdGVtZW50SGVh ZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19zSGVhZGVyDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBTZXRQcm9tcHQoc2VsZiwgUHJvbXB0KToNCj4gDQo+ICsgICAgICAg IHNlbGYuX19zSGVhZGVyLlByb21wdCA9IFByb21wdA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg U2V0SGVscChzZWxmLCBIZWxwKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19zSGVhZGVyLkhlbHAg PSBIZWxwDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmck1pbk1heFN0ZXBEYXRh KCk6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBNaW5NYXhTdGVwRGF0 YSwgTnVtZXJpY09wY29kZT1GYWxzZSk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fTWluTWF4U3Rl cERhdGEgPSBNaW5NYXhTdGVwRGF0YQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBE YXRhLnU2NC5NaW5WYWx1ZSA9IDANCj4gDQo+ICsgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0 YS51NjQuTWF4VmFsdWUgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEu dTY0LlN0ZXAgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLl9fVmFsdWVJc1NldCA9IEZhbHNlDQo+ IA0KPiArICAgICAgICBzZWxmLl9fSXNOdW1lcmljID0gTnVtZXJpY09wY29kZQ0KPiANCj4gKyAg ICAgICAgc2VsZi5fX1ZhclR5cGUgPSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIFNldE1pbk1heFN0ZXBEYXRhKHNlbGYsIE1pblZhbHVlLCBNYXhWYWx1 ZSwgU3RlcCwgVmFyVHlwZSk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fVmFyVHlwZSA9IFZhclR5 cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuX19WYWx1ZUlzU2V0ID09IEZhbHNl Og0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpF XzY0Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0Lk1p blZhbHVlID0gTWluVmFsdWUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0 ZXBEYXRhLnU2NC5NYXhWYWx1ZSA9IE1heFZhbHVlDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuX19NaW5NYXhTdGVwRGF0YS51NjQuU3RlcCA9IFN0ZXANCj4gDQo+ICsgICAgICAgICAgICBp ZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NaW5WYWx1ZSA9IE1pblZhbHVlDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MzIuTWF4VmFsdWUgPSBN YXhWYWx1ZQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTMy LlN0ZXAgPSBTdGVwDQo+IA0KPiArICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfMTY6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVw RGF0YS51MTYuTWluVmFsdWUgPSBNaW5WYWx1ZQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Ll9fTWluTWF4U3RlcERhdGEudTE2Lk1heFZhbHVlID0gTWF4VmFsdWUNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUxNi5TdGVwID0gU3RlcA0KPiANCj4gKyAg ICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5NaW5WYWx1ZSA9IE1pblZh bHVlDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5NYXhW YWx1ZSA9IE1heFZhbHVlDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVw RGF0YS51OC5TdGVwID0gU3RlcA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19WYWx1ZUlzU2V0 ID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBWYXJU eXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gDQo+ICsgICAgICAgICAgICAgICAg aWYgTWluVmFsdWUgPCBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0Lk1pblZhbHVlOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU2NC5NaW5WYWx1ZSA9 IE1pblZhbHVlDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIE1heFZhbHVlID4gc2VsZi5fX01p bk1heFN0ZXBEYXRhLnU2NC5NYXhWYWx1ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuX19NaW5NYXhTdGVwRGF0YS51NjQuTWF4VmFsdWUgPSBNYXhWYWx1ZQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTY0LlN0ZXAgPSBTdGVwDQo+IA0KPiAr ICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+IA0K PiArICAgICAgICAgICAgICAgIGlmIE1pblZhbHVlIDwgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUz Mi5NaW5WYWx1ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVw RGF0YS51MzIuTWluVmFsdWUgPSBNaW5WYWx1ZQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBN YXhWYWx1ZSA+IHNlbGYuX19NaW5NYXhTdGVwRGF0YS51MzIuTWF4VmFsdWU6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTMyLk1heFZhbHVlID0gTWF4 VmFsdWUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5T dGVwID0gU3RlcA0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzE2Og0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBNaW5WYWx1ZSA8IHNlbGYu X19NaW5NYXhTdGVwRGF0YS51MTYuTWluVmFsdWU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLl9fTWluTWF4U3RlcERhdGEudTE2Lk1pblZhbHVlID0gTWluVmFsdWUNCj4gDQo+ICsg ICAgICAgICAgICAgICAgaWYgTWF4VmFsdWUgPiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTE2Lk1h eFZhbHVlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRh LnUxNi5NYXhWYWx1ZSA9IE1heFZhbHVlDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19N aW5NYXhTdGVwRGF0YS51MTYuU3RlcCA9IFN0ZXANCj4gDQo+ICsgICAgICAgICAgICBpZiBWYXJU eXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBNaW5WYWx1ZSA8IHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5NaW5WYWx1ZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YS51OC5NaW5WYWx1ZSA9IE1p blZhbHVlDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIE1heFZhbHVlID4gc2VsZi5fX01pbk1h eFN0ZXBEYXRhLnU4Lk1heFZhbHVlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5f X01pbk1heFN0ZXBEYXRhLnU4Lk1heFZhbHVlID0gTWF4VmFsdWUNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU4LlN0ZXAgPSBTdGVwDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBHZXRWYXJUeXBlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYu X19WYXJUeXBlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBJc051bWVyaWNPcGNvZGUoc2VsZik6 DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX0lzTnVtZXJpYw0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgVXBkYXRlQ0lmck1pbk1heFN0ZXBEYXRhKHNlbGYsIE1pbk1heFN0ZXBEYXRhKToN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19NaW5NYXhTdGVwRGF0YSA9IE1pbk1heFN0ZXBEYXRhDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRNaW5EYXRhKHNlbGYsIFZhclR5cGUsIElzQml0VmFy KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIElzQml0VmFyOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTMyLk1pblZhbHVlDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5fX01pbk1heFN0ZXBEYXRhLnU2NC5NaW5WYWx1ZQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFZh clR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NaW5WYWx1ZQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUxNi5NaW5WYWx1ZQ0K PiANCj4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTgu TWluVmFsdWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiAwDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBHZXRNYXhEYXRhKHNlbGYsIFZhclR5cGUsIElzQml0VmFyKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGlmIElzQml0VmFyOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLl9fTWluTWF4U3RlcERhdGEudTMyLk1heFZhbHVlDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0 ZXBEYXRhLnU2NC5NYXhWYWx1ZQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5fX01pbk1heFN0ZXBEYXRhLnUzMi5NYXhWYWx1ZQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFZh clR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnUxNi5NYXhWYWx1ZQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEudTguTWF4VmFsdWUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBH ZXRTdGVwRGF0YShzZWxmLCBWYXJUeXBlLCBJc0JpdFZhcik6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBpZiBJc0JpdFZhcjoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1h eFN0ZXBEYXRhLnUzMi5TdGVwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX01pbk1heFN0ZXBEYXRhLnU2NC5TdGVw DQo+IA0KPiArICAgICAgICAgICAgaWYgVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf MzI6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fTWluTWF4U3RlcERhdGEu dTMyLlN0ZXANCj4gDQo+ICsgICAgICAgICAgICBpZiBWYXJUeXBlID09IEVGSV9JRlJfVFlQRV9O VU1fU0laRV8xNjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19NaW5NYXhT dGVwRGF0YS51MTYuU3RlcA0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgPT0gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzg6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9f TWluTWF4U3RlcERhdGEudTguU3RlcA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIDAN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyRm9ybVNldChDSWZyT2JqLCBDSWZy T3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgU2l6ZSk6 DQo+IA0KPiArICAgICAgICBzZWxmLl9fRm9ybVNldCA9IEVGSV9JRlJfRk9STV9TRVQoKQ0KPiAN Cj4gKyAgICAgICAgQ0lmck9iai5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRm9ybVNldCwgRUZJX0lG Ul9GT1JNX1NFVF9PUCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLl9fRm9ybVNldC5IZWFkZXIsDQo+IEVGSV9JRlJfRk9STV9TRVRfT1AsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYu X19Gb3JtU2V0LkhlbHAgPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNl bGYuX19Gb3JtU2V0LkZvcm1TZXRUaXRsZSA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4g KyAgICAgICAgc2VsZi5fX0Zvcm1TZXQuRmxhZ3MgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLl9f Rm9ybVNldC5HdWlkID0gRUZJX0dVSUQoMCwgMCwgMCwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHdWlkQXJyYXkoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkp DQo+IA0KPiArICAgICAgICBzZWxmLl9fQ2xhc3NHdWlkID0gW10NCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIFNldEd1aWQoc2VsZiwgR3VpZCk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fRm9ybVNl dC5HdWlkID0gR3VpZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0R3VpZChzZWxmKToNCj4g DQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fRm9ybVNldC5HdWlkDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBTZXRGb3JtU2V0VGl0bGUoc2VsZiwgRm9ybVNldFRpdGxlKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19Gb3JtU2V0LkZvcm1TZXRUaXRsZSA9IEZvcm1TZXRUaXRsZQ0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgR2V0Rm9ybVNldFRpdGxlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0 dXJuIHNlbGYuX19Gb3JtU2V0LkZvcm1TZXRUaXRsZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg U2V0SGVscChzZWxmLCBIZWxwKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Gb3JtU2V0LkhlbHAg PSBIZWxwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRIZWxwKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgcmV0dXJuIHNlbGYuX19Gb3JtU2V0LkhlbHANCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IFNldENsYXNzR3VpZChzZWxmLCBHdWlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19DbGFzc0d1 aWQuYXBwZW5kKEd1aWQpDQo+IA0KPiArICAgICAgICBzZWxmLl9fRm9ybVNldC5GbGFncyArPSAx DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRDbGFzc0d1aWQoc2VsZik6DQo+IA0KPiArICAg ICAgICByZXR1cm4gc2VsZi5fX0NsYXNzR3VpZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0 RmxhZ3Moc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX0Zvcm1TZXQuRmxhZ3MN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICBy ZXR1cm4gc2VsZi5fX0Zvcm1TZXQNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZy T25lT2ZPcHRpb24oQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsIFNpemUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX09uZU9mT3B0 aW9uID0gRUZJX0lGUl9PTkVfT0ZfT1BUSU9OKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fT25lT2ZPcHRpb24uSGVhZGVyLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfT05FX09GX09QVElPTl9PUCwgU2l6ZSkN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyA9IDANCj4gDQo+ICsgICAg ICAgIHNlbGYuX19PbmVPZk9wdGlvbi5PcHRpb24gPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4g DQo+ICsgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5UeXBlID0gRUZJX0lGUl9UWVBFX09USEVS DQo+IA0KPiArICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uVmFsdWUgPSBFRklfSUZSX1RZUEVf VkFMVUUoKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0T3B0aW9uKHNlbGYsIE9wdGlvbik6 DQo+IA0KPiArICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uT3B0aW9uID0gT3B0aW9uDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBTZXRUeXBlKHNlbGYsIFR5cGUpOg0KPiANCj4gKyAgICAgICAg c2VsZi5fX09uZU9mT3B0aW9uLlR5cGUgPSBUeXBlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBT ZXRWYWx1ZShzZWxmLCBWYWx1ZSk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24u VmFsdWUgPSBWYWx1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0RmxhZ3Moc2VsZik6DQo+ IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBTZXRGbGFncyhzZWxmLCBMRmxhZ3MpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzID0gMA0KPiANCj4gKyAgICAgICAgTEZsYWdz LCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+IEVGSV9JRlJfT1BUSU9OX0RF RkFVTFQpDQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f X09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0K PiBFRklfSUZSX09QVElPTl9ERUZBVUxUX01GRykNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9PUFRJ T05fREVGQVVMVF9NRkcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIExGbGFncyA9PSBFRklf SUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gDQo+ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19D TEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV84KQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfOA0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpF XzE2Og0KPiANCj4gKyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJ X0lGUl9UWVBFX05VTV9TSVpFXzE2KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9w dGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gDQo+ICsg ICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9OVU1f U0laRV8zMikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIExG bGFncyA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+IA0KPiArICAgICAgICAgICAgTEZs YWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9O VU1fU0laRV82NA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lG Ul9UWVBFX0JPT0xFQU46DQo+IA0KPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIo TEZsYWdzLCBFRklfSUZSX1RZUEVfQk9PTEVBTikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9f T25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBFX0JPT0xFQU4NCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9USU1FOg0KPiANCj4gKyAgICAg ICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX1RJTUUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQ RV9USU1FDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIExGbGFncyA9PSBFRklfSUZSX1RZ UEVfREFURToNCj4gDQo+ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3Ms IEVGSV9JRlJfVFlQRV9EQVRFKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9wdGlv bi5GbGFncyB8PSBFRklfSUZSX1RZUEVfREFURQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxp ZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX1NUUklORzoNCj4gDQo+ICsgICAgICAgICAgICBMRmxh Z3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9TVFJJTkcpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9TVFJJTkcN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9PVEhF UjoNCj4gDQo+ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9J RlJfVFlQRV9PVEhFUikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxh Z3MgfD0gRUZJX0lGUl9UWVBFX09USEVSDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MgaWYgTEZsYWdzID09IDAgZWxzZQ0KPiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkxBR1NfVU5TVVBQT1JURUQNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX09u ZU9mT3B0aW9uDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmck9uZU9mT3B0aW9u MihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0 X18oc2VsZiwgU2l6ZSwgTnVtcywgVmFsdWVUeXBlLCBWYWx1ZUxpc3Q9W10pOg0KPiANCj4gKyAg ICAgICAgc2VsZi5fX09uZU9mT3B0aW9uID0gUmVmaW5lX0VGSV9JRlJfT05FX09GX09QVElPTihO dW1zKQ0KPiANCj4gKyAgICAgICAgSGVhZGVyID0gRUZJX0lGUl9PUF9IRUFERVIoKQ0KPiANCj4g KyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIEhlYWRlciwgRUZJX0lGUl9PTkVf T0ZfT1BUSU9OX09QLA0KPiBTaXplKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9u LkhlYWRlciA9IEhlYWRlcg0KPiANCj4gKyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdz ID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLk9wdGlvbiA9IEVGSV9TVFJJ TkdfSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLlR5cGUgPSBF RklfSUZSX1RZUEVfT1RIRVINCj4gDQo+ICsgICAgICAgIHNlbGYuX19WYWx1ZVR5cGUgPSBWYWx1 ZVR5cGUNCj4gDQo+ICsgICAgICAgIGlmIFZhbHVlTGlzdCAhPSBbXToNCj4gDQo+ICsgICAgICAg ICAgICBBcnJheVR5cGUgPSBFRklfSUZSX1RZUEVfVkFMVUUgKiBOdW1zDQo+IA0KPiArICAgICAg ICAgICAgVmFsdWVBcnJheSA9IEFycmF5VHlwZSgpDQo+IA0KPiArICAgICAgICAgICAgZm9yIGkg aW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBWYWx1 ZUFycmF5W2ldID0gVmFsdWVMaXN0W2ldDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX09uZU9m T3B0aW9uLlZhbHVlID0gVmFsdWVBcnJheQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0T3B0 aW9uKHNlbGYsIE9wdGlvbik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uT3B0 aW9uID0gT3B0aW9uDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRUeXBlKHNlbGYsIFR5cGUp Og0KPiANCj4gKyAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLlR5cGUgPSBUeXBlDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBHZXRWYWx1ZVR5cGUoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1 cm4gc2VsZi5fX1ZhbHVlVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VmFsdWUoc2Vs ZiwgVmFsdWVMaXN0KToNCj4gDQo+ICsgICAgICAgIEFycmF5VHlwZSA9IEVGSV9JRlJfVFlQRV9W QUxVRSAqIChsZW4oVmFsdWVMaXN0KSkNCj4gDQo+ICsgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJh eVR5cGUoKQ0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkp Og0KPiANCj4gKyAgICAgICAgICAgIFZhbHVlQXJyYXlbaV0gPSBWYWx1ZUxpc3RbaV0NCj4gDQo+ ICsgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5WYWx1ZSA9IFZhbHVlQXJyYXkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEdldEZsYWdzKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNl bGYuX19PbmVPZk9wdGlvbi5GbGFncw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RmxhZ3Mo c2VsZiwgTEZsYWdzKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuX19PbmVPZk9wdGlv bi5GbGFncyA9IDANCj4gDQo+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRf Q0xFQVIoTEZsYWdzLA0KPiBFRklfSUZSX09QVElPTl9ERUZBVUxUKQ0KPiANCj4gKyAgICAgICAg aWYgUmV0Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9wdGlvbi5GbGFncyB8PSBF RklfSUZSX09QVElPTl9ERUZBVUxUDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMRmxhZ3MsIFJl dCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gRUZJX0lGUl9PUFRJT05fREVGQVVM VF9NRkcpDQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f X09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+ IA0KPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfOCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxh Z3MgfD0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzgNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVs aWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gDQo+ICsgICAgICAgICAg ICBMRmxhZ3MgPSBfRkxBR19DTEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNikN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9U WVBFX05VTV9TSVpFXzE2DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIExGbGFncyA9PSBF RklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+IA0KPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZM QUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8z Mg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFn cywgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19P bmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0KPiANCj4g KyAgICAgICAgICAgIExGbGFncyA9IF9GTEFHX0NMRUFSKExGbGFncywgRUZJX0lGUl9UWVBFX0JP T0xFQU4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVG SV9JRlJfVFlQRV9CT09MRUFODQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIExGbGFncyA9 PSBFRklfSUZSX1RZUEVfVElNRToNCj4gDQo+ICsgICAgICAgICAgICBMRmxhZ3MgPSBfRkxBR19D TEVBUihMRmxhZ3MsIEVGSV9JRlJfVFlQRV9USU1FKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X19PbmVPZk9wdGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfVElNRQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZWxpZiBMRmxhZ3MgPT0gRUZJX0lGUl9UWVBFX0RBVEU6DQo+IA0KPiArICAgICAg ICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfREFURSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2ZPcHRpb24uRmxhZ3MgfD0gRUZJX0lGUl9UWVBF X0RBVEUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgTEZsYWdzID09IEVGSV9JRlJfVFlQ RV9TVFJJTkc6DQo+IA0KPiArICAgICAgICAgICAgTEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdz LCBFRklfSUZSX1RZUEVfU1RSSU5HKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19PbmVPZk9w dGlvbi5GbGFncyB8PSBFRklfSUZSX1RZUEVfU1RSSU5HDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBlbGlmIExGbGFncyA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQo+IA0KPiArICAgICAgICAgICAg TEZsYWdzID0gX0ZMQUdfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX1RZUEVfT1RIRVIpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fX09uZU9mT3B0aW9uLkZsYWdzIHw9IEVGSV9JRlJfVFlQRV9PVEhF Ug0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9TVUNDRVNTIGlmIExGbGFncyA9PSAwIGVsc2UNCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0ZMQUdTX1VOU1VQUE9SVEVEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYp Og0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19PbmVPZk9wdGlvbg0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIENJZnJPcHRpb25LZXkoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFF1ZXN0aW9uSWQsIE9wdGlv blZhbHVlLCBLZXlWYWx1ZSk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLl9fT3B0aW9u S2V5ID0gRUZJX0lGUl9HVUlEX09QVElPTktFWSgpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX09wdGlvbktleS5IZWFkZXIsDQo+IEVGSV9JRlJfR1VJ RF9PUCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMuc2l6ZW9m KEVGSV9JRlJfR1VJRF9PUFRJT05LRVkpKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX09wdGlvbktl eS5FeHRlbmRPcENvZGUgPSBFRklfSUZSX0VYVEVORF9PUF9PUFRJT05LRVkNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19PcHRpb25LZXkuR3VpZCA9IEVGSV9JRlJfRlJBTUVXT1JLX0dVSUQNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19PcHRpb25LZXkuUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19PcHRpb25LZXkuT3B0aW9uVmFsdWUgPSBPcHRpb25WYWx1ZQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX09wdGlvbktleS5LZXlWYWx1ZSA9IEtleVZhbHVlDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNl bGYuX19PcHRpb25LZXkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyQ2xhc3Mo Q0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9f KHNlbGYsICk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fQ2xhc3MgPSBFRklfSUZSX0dVSURfQ0xB U1MoKSAgIyBzdGF0aWMgZ3VpZA0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuX19DbGFzcy5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1VJRF9DTEFT UykpDQo+IA0KPiArICAgICAgICBzZWxmLl9fQ2xhc3MuRXh0ZW5kT3BDb2RlID0gRUZJX0lGUl9F WFRFTkRfT1BfQ0xBU1MNCj4gDQo+ICsgICAgICAgIHNlbGYuX19DbGFzcy5HdWlkID0gRUZJX0lG Ul9USUFOT19HVUlEDQo+IA0KPiArICAgICAgICBzZWxmLl9fQ2xhc3MuQ2xhc3MgPSBFRklfTk9O X0RFVklDRV9DTEFTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0Q2xhc3Moc2VsZiwgQ2xh c3MpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0NsYXNzLkNsYXNzID0gQ2xhc3MNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2Vs Zi5fX0NsYXNzDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclN1YkNsYXNzKENJ ZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhz ZWxmLCApOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1N1YkNsYXNzID0gRUZJX0lGUl9HVUlEX1NV QkNMQVNTKCkgICMgc3RhdGljIGd1aWQNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fU3ViQ2xhc3MuSGVhZGVyLCBFRklfSUZSX0dVSURfT1AsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVzLnNpemVvZihFRklfSUZSX0dV SURfU1VCQ0xBU1MpKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX1N1YkNsYXNzLkV4dGVuZE9wQ29k ZSA9IEVGSV9JRlJfRVhURU5EX09QX1NVQkNMQVNTDQo+IA0KPiArICAgICAgICBzZWxmLl9fU3Vi Q2xhc3MuR3VpZCA9IEVGSV9JRlJfVElBTk9fR1VJRA0KPiANCj4gKyAgICAgICAgc2VsZi5fX1N1 YkNsYXNzLlN1YkNsYXNzID0gRUZJX1NFVFVQX0FQUExJQ0FUSU9OX1NVQkNMQVNTDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBTZXRTdWJDbGFzcyhzZWxmLCBTdWJDbGFzcyk6DQo+IA0KPiArICAg ICAgICBzZWxmLl9fU3ViQ2xhc3MuU3ViQ2xhc3MgPSBTdWJDbGFzcw0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fU3Vi Q2xhc3MNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyRGVmYXVsdFN0b3JlKENJ ZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhz ZWxmLCApOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0RlZmF1bHRTdG9yZSA9IEVGSV9JRlJfREVG QVVMVFNUT1JFKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBz ZWxmLl9fRGVmYXVsdFN0b3JlLkhlYWRlciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFRklfSUZSX0RFRkFVTFRTVE9SRV9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19E ZWZhdWx0U3RvcmUuRGVmYXVsdE5hbWUgPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQNCj4gDQo+ICsg ICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmUuRGVmYXVsdElkID0gRUZJX1ZBUlNUT1JFX0lEX0lO VkFMSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldERlZmF1bHROYW1lKHNlbGYsIERlZmF1 bHROYW1lKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmUuRGVmYXVsdE5hbWUg PSBEZWZhdWx0TmFtZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RGVmYXVsdElkKHNlbGYs IERlZmF1bHRJZCk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fRGVmYXVsdFN0b3JlLkRlZmF1bHRJ ZCA9IERlZmF1bHRJZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0RGVmYXVsdFN0b3JlKHNl bGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19EZWZhdWx0U3RvcmUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIFNldERlZmF1bHRTdG9yZShzZWxmLCBEZWZhdWx0U3RvcmU6IEVGSV9J RlJfREVGQVVMVFNUT1JFKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19EZWZhdWx0U3RvcmUgPSBE ZWZhdWx0U3RvcmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0K PiArICAgICAgICByZXR1cm4gc2VsZi5fX0RlZmF1bHRTdG9yZQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIENJZnJWYXJTdG9yZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgKToNCj4gDQo+ICsgICAgICAgIHNlbGYu X19WYXJzdG9yZSA9IEVGSV9JRlJfVkFSU1RPUkUoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19WYXJzdG9yZS5IZWFkZXIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9WQVJTVE9SRV9PUCkNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19WYXJzdG9yZS5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19WYXJzdG9yZS5TaXplID0gMA0KPiANCj4gKyAgICAgICAg c2VsZi5fX1ZhcnN0b3JlLk5hbWUgPSAnJw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0R3Vp ZChzZWxmLCBHdWlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19WYXJzdG9yZS5HdWlkID0gR3Vp ZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0U2l6ZShzZWxmLCBTaXplKToNCj4gDQo+ICsg ICAgICAgIHNlbGYuX19WYXJzdG9yZS5TaXplID0gU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgU2V0VmFyU3RvcmVJZChzZWxmLCBWYXJTdG9yZUlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYu X19WYXJzdG9yZS5WYXJTdG9yZUlkID0gVmFyU3RvcmVJZA0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgU2V0TmFtZShzZWxmLCBOYW1lKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19WYXJzdG9yZS5O YW1lID0gTmFtZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ ICsgICAgICAgIHJldHVybiBzZWxmLl9fVmFyc3RvcmUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBDSWZyVmFyU3RvcmVFZmkoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQo+IA0KPiArICAgICAgICBzZWxmLl9f VmFyU3RvcmVFZmkgPSBFRklfSUZSX1ZBUlNUT1JFX0VGSSgpDQo+IA0KPiArICAgICAgICBDSWZy T3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1ZhclN0b3JlRWZpLkhlYWRlciwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1ZBUlNUT1JFX0VGSV9PUCkN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19WYXJTdG9yZUVmaS5WYXJTdG9yZUlkID0gRUZJX1ZBUk9G RlNFVF9JTlZBTElEDQo+IA0KPiArICAgICAgICBzZWxmLl9fVmFyU3RvcmVFZmkuU2l6ZSA9IDAN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19WYXJTdG9yZUVmaS5OYW1lID0gJycNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIFNldEd1aWQoc2VsZiwgR3VpZCk6DQo+IA0KPiArICAgICAgICBzZWxmLl9f VmFyU3RvcmVFZmkuR3VpZCA9IEd1aWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFNpemUo c2VsZiwgU2l6ZSk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fVmFyU3RvcmVFZmkuU2l6ZSA9IFNp emUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFZhclN0b3JlSWQoc2VsZiwgVmFyU3RvcmVJ ZCk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fVmFyU3RvcmVFZmkuVmFyU3RvcmVJZCA9IFZhclN0 b3JlSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldE5hbWUoc2VsZiwgTmFtZSk6DQo+IA0K PiArICAgICAgICBzZWxmLl9fVmFyU3RvcmVFZmkuTmFtZSA9IE5hbWUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIFNldEF0dHJpYnV0ZXMoc2VsZiwgQXR0cmlidXRlcyk6DQo+IA0KPiArICAgICAg ICBzZWxmLl9fVmFyU3RvcmVFZmkuQXR0cmlidXRlcyA9IEF0dHJpYnV0ZXMNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5f X1ZhclN0b3JlRWZpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclZhclN0b3Jl TmFtZVZhbHVlKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19WYXJTdG9yZU5hbWVWYWx1 ZSA9IEVGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxVRSgpDQo+IA0KPiArICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1ZhclN0b3JlTmFtZVZhbHVlLkhlYWRlciwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1ZBUlNUT1JFX05BTUVf VkFMVUVfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLl9fVmFyU3RvcmVOYW1lVmFsdWUuVmFyU3Rv cmVJZCA9IEVGSV9WQVJPRkZTRVRfSU5WQUxJRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0 R3VpZChzZWxmLCBHdWlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19WYXJTdG9yZU5hbWVWYWx1 ZS5HdWlkID0gR3VpZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VmFyU3RvcmVJZChzZWxm LCBWYXJTdG9yZUlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19WYXJTdG9yZU5hbWVWYWx1ZS5W YXJTdG9yZUlkID0gVmFyU3RvcmVJZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhz ZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fVmFyU3RvcmVOYW1lVmFsdWUNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtFRklfQklUU19QRVJfVUlOVDMyID0gMSA8PCBFRklfQklU U19TSElGVF9QRVJfVUlOVDMyDQo+IA0KPiArRUZJX0ZPUk1fSURfTUFYID0gMHhGRkZGDQo+IA0K PiArDQo+IA0KPiArRUZJX0ZSRUVfRk9STV9JRF9CSVRNQVBfU0laRSA9IGludCgoRUZJX0ZPUk1f SURfTUFYICsgMSkgLw0KPiBFRklfQklUU19QRVJfVUlOVDMyKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIENJZnJGb3JtSWQoKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgRm9ybUlkQml0 TWFwID0gW10NCj4gDQo+ICsgICAgZm9yIGkgaW4gcmFuZ2UoMCwgRUZJX0ZSRUVfRk9STV9JRF9C SVRNQVBfU0laRSk6DQo+IA0KPiArICAgICAgICBGb3JtSWRCaXRNYXAuYXBwZW5kKDApDQo+IA0K PiArDQo+IA0KPiArICAgIEBjbGFzc21ldGhvZA0KPiANCj4gKyAgICBkZWYgQ2hlY2tGb3JtSWRG cmVlKGNscywgRm9ybUlkKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEluZGV4ID0gaW50KEZv cm1JZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+IA0KPiArICAgICAgICBPZmZzZXQgPSBGb3Jt SWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g KGNscy5Gb3JtSWRCaXRNYXBbSW5kZXhdICYgKDB4ODAwMDAwMDAgPj4gT2Zmc2V0KSkgPT0gMA0K PiANCj4gKw0KPiANCj4gKyAgICBAY2xhc3NtZXRob2QNCj4gDQo+ICsgICAgZGVmIE1hcmtGb3Jt SWRVc2VkKGNscywgRm9ybUlkKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEluZGV4ID0gaW50 KEZvcm1JZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+IA0KPiArICAgICAgICBPZmZzZXQgPSBG b3JtSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQo+IA0KPiArICAgICAgICBjbHMuRm9ybUlkQml0 TWFwW0luZGV4XSB8PSAoMHg4MDAwMDAwMCA+PiBPZmZzZXQpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArY2xhc3MgQ0lmckZvcm0oQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Zvcm0g PSBFRklfSUZSX0ZPUk0oKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19Gb3JtLkhlYWRlciwgRUZJX0lGUl9GT1JNX09QKQ0KPiANCj4gKyAgICAgICAg c2VsZi5fX0Zvcm0uRm9ybUlkID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Zvcm0uRm9ybVRp dGxlID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRG b3JtSWQoc2VsZiwgRm9ybUlkKToNCj4gDQo+ICsgICAgICAgICMgRm9ybUlkIGNhbid0IGJlIDAu DQo+IA0KPiArICAgICAgICBpZiBGb3JtSWQgPT0gMDoNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSDQo+IA0KPiArICAg ICAgICBpZiBDSWZyRm9ybUlkLkNoZWNrRm9ybUlkRnJlZShGb3JtSWQpID09IEZhbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRk9STUlEX1JF REVGSU5FRA0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Zvcm0uRm9ybUlkID0gRm9ybUlkDQo+IA0K PiArICAgICAgICBDSWZyRm9ybUlkLk1hcmtGb3JtSWRVc2VkKEZvcm1JZCkNCj4gDQo+ICsgICAg ICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgU2V0Rm9ybVRpdGxlKHNlbGYsIEZvcm1UaXRsZSk6DQo+IA0KPiArICAgICAg ICBzZWxmLl9fRm9ybS5Gb3JtVGl0bGUgPSBGb3JtVGl0bGUNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX0Zvcm0NCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyRm9ybU1hcChDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0KPiAr ICAgICAgICBzZWxmLl9fRm9ybU1hcCA9IEVGSV9JRlJfRk9STV9NQVAoKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fX01ldGhvZE1hcExpc3QgPSBbXSAgIyBFRklfSUZSX0ZPUk1fTUFQX01FVEhPRCgp DQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0Zvcm1N YXAuSGVhZGVyLA0KPiBFRklfSUZSX0ZPUk1fTUFQX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5f X0Zvcm1NYXAuRm9ybUlkID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0Rm9ybUlkKHNl bGYsIEZvcm1JZCk6DQo+IA0KPiArICAgICAgICBpZiBGb3JtSWQgPT0gMDoNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVS DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBDSWZyRm9ybUlkLkNoZWNrRm9ybUlkRnJlZShG b3JtSWQpID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fRk9STUlEX1JFREVGSU5FRA0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Zvcm1N YXAuRm9ybUlkID0gRm9ybUlkDQo+IA0KPiArICAgICAgICBDSWZyRm9ybUlkLk1hcmtGb3JtSWRV c2VkKEZvcm1JZCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0Rm9ybU1hcE1ldGhvZChzZWxm LCBNZXRob2RUaXRsZSwgTWV0aG9kR3VpZDogRUZJX0dVSUQpOg0KPiANCj4gKyAgICAgICAgTWV0 aG9kTWFwID0gRUZJX0lGUl9GT1JNX01BUF9NRVRIT0QoKQ0KPiANCj4gKyAgICAgICAgTWV0aG9k TWFwLk1ldGhvZFRpdGxlID0gTWV0aG9kVGl0bGUNCj4gDQo+ICsgICAgICAgIE1ldGhvZE1hcC5N ZXRob2RJZGVudGlmaWVyID0gTWV0aG9kR3VpZA0KPiANCj4gKyAgICAgICAgc2VsZi5fX01ldGhv ZE1hcExpc3QuYXBwZW5kKE1ldGhvZE1hcCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldElu Zm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX0Zvcm1NYXAsIHNlbGYuX19N ZXRob2RNYXBMaXN0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmckVuZChDSWZy T2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19FbmQgPSBFRklfSUZSX0VORCgpDQo+IA0KPiAr ICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0VuZC5IZWFkZXIsIEVG SV9JRlJfRU5EX09QKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJCYW5uZXIo Q0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9f KHNlbGYsICk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fQmFubmVyID0gRUZJX0lGUl9HVUlEX0JB Tk5FUigpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5f X0Jhbm5lci5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1VJRF9CQU5ORVIpKQ0KPiANCj4g KyAgICAgICAgc2VsZi5fX0Jhbm5lci5FeHRlbmRPcENvZGUgPSBFRklfSUZSX0VYVEVORF9PUF9C QU5ORVINCj4gDQo+ICsgICAgICAgIHNlbGYuX19CYW5uZXIuR3VpZCA9IEVGSV9JRlJfVElBTk9f R1VJRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VGl0bGUoc2VsZiwgU3RyaW5nSWQpOg0K PiANCj4gKyAgICAgICAgc2VsZi5fX0Jhbm5lci5UaXRsZSA9IFN0cmluZ0lkDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBTZXRMaW5lKHNlbGYsIExpbmUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5f X0Jhbm5lci5MaW5lTnVtYmVyID0gTGluZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0QWxp Z24oc2VsZiwgQWxpZ24pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Jhbm5lci5BbGlnbm1lbnQg PSBBbGlnbg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsg ICAgICAgIHJldHVybiBzZWxmLl9fQmFubmVyDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgQ0lmclRpbWVvdXQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIFRpbWVvdXQ9MCk6DQo+IA0KPiArICAgICAgICBzZWxmLl9f VGltZW91dCA9IEVGSV9JRlJfR1VJRF9USU1FT1VUKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhl YWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVGltZW91dC5IZWFkZXIsIEVGSV9JRlJfR1VJRF9P UCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMuc2l6ZW9mKEVG SV9JRlJfR1VJRF9USU1FT1VUKSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19UaW1lb3V0LkV4dGVu ZE9wQ29kZSA9IEVGSV9JRlJfRVhURU5EX09QX1RJTUVPVVQNCj4gDQo+ICsgICAgICAgIHNlbGYu X19UaW1lb3V0Lkd1aWQgPSBFRklfSUZSX1RJQU5PX0dVSUQNCj4gDQo+ICsgICAgICAgIHNlbGYu X19UaW1lb3V0LlRpbWVPdXQgPSBUaW1lb3V0DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRU aW1lb3V0KHNlbGYsIFRpbWVvdXQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1RpbWVvdXQuVGlt ZU91dCA9IFRpbWVvdXQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+ IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX1RpbWVvdXQNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICtjbGFzcyBDSWZyTGFiZWwoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fTGFi ZWwgPSBFRklfSUZSX0dVSURfTEFCRUwoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuX19MYWJlbC5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1VJ RF9MQUJFTCkpDQo+IA0KPiArICAgICAgICBzZWxmLl9fTGFiZWwuRXh0ZW5kT3BDb2RlID0gRUZJ X0lGUl9FWFRFTkRfT1BfTEFCRUwNCj4gDQo+ICsgICAgICAgIHNlbGYuX19MYWJlbC5HdWlkID0g RUZJX0lGUl9USUFOT19HVUlEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXROdW1iZXIoc2Vs ZiwgTnVtYmVyKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19MYWJlbC5OdW1iZXIgPSBOdW1iZXIN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICBy ZXR1cm4gc2VsZi5fX0xhYmVsDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclJ1 bGUoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYsICk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fUnVsZSA9IEVGSV9JRlJfUlVMRSgp DQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1J1bGUu SGVhZGVyLCBFRklfSUZSX1JVTEVfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLl9fUnVsZS5SdWxl SWQgPSBFRklfUlVMRV9JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRSdWxl SWQoc2VsZiwgUnVsZUlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19SdWxlLlJ1bGVJZCA9IFJ1 bGVJZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAg ICAgIHJldHVybiBzZWxmLl9fUnVsZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2RlZiBfRkxB R19URVNUX0FORF9DTEVBUihGbGFncywgTWFzayk6DQo+IA0KPiArDQo+IA0KPiArICAgIFJldCA9 IEZsYWdzICYgTWFzaw0KPiANCj4gKyAgICBGbGFncyAmPSAofk1hc2spDQo+IA0KPiArICAgIHJl dHVybiBGbGFncywgUmV0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArZGVmIF9GTEFHX0NMRUFS KEZsYWdzLCBNYXNrKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgRmxhZ3MgJj0gKH5NYXNrKQ0KPiAN Cj4gKyAgICByZXR1cm4gRmxhZ3MNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZy U3VidGl0bGUoQ0lmck9iaiwgQ0lmck9wSGVhZGVyLCBDSWZyU3RhdGVtZW50SGVhZGVyKToNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQo+IA0KPiArICAgICAgICBz ZWxmLl9fU3VidGl0bGUgPSBFRklfSUZSX1NVQlRJVExFKCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fU3VidGl0bGUuSGVhZGVyLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfU1VCVElUTEVfT1Ap DQo+IA0KPiArICAgICAgICBDSWZyU3RhdGVtZW50SGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19TdWJ0aXRsZS5TdGF0ZW1lbnQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLl9fU3Vi dGl0bGUuRmxhZ3MgPSAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRGbGFncyhzZWxmLCBG bGFncyk6DQo+IA0KPiArICAgICAgICBGbGFncywgUmVzdWx0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xF QVIoRmxhZ3MsDQo+IEVGSV9JRlJfRkxBR1NfSE9SSVpPTlRBTCkNCj4gDQo+ICsgICAgICAgIGlm IFJlc3VsdDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fU3VidGl0bGUuRmxhZ3MgfD0gRUZJ X0lGUl9GTEFHU19IT1JJWk9OVEFMDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MgaWYgRmxhZ3MgPT0gMCBlbHNlDQo+IFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19VTlNVUFBPUlRFRA0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fU3VidGl0 bGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZySW1hZ2UoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQo+ IA0KPiArICAgICAgICBzZWxmLl9fSW1hZ2UgPSBFRklfSUZSX0lNQUdFKCkNCj4gDQo+ICsgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fSW1hZ2UuSGVhZGVyLCBFRklf SUZSX0lNQUdFX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0ltYWdlLklkID0gRUZJX0lNQUdF X0lEX0lOVkFMSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEltYWdlSWQoc2VsZiwgSW1h Z2VJZCk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fSW1hZ2UuSWQgPSBJbWFnZUlkDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNl bGYuX19JbWFnZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJMb2NrZWQoQ0lm ck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsICk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fTG9jayA9IEVGSV9JRlJfTE9DS0VEKCkNCj4g DQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fTG9jay5IZWFk ZXIsIEVGSV9JRlJfTE9DS0VEX09QKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJ ZnJNb2RhbChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Nb2RhbCA9IEVGSV9JRlJf TU9EQUxfVEFHKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBz ZWxmLl9fTW9kYWwuSGVhZGVyLA0KPiBFRklfSUZSX01PREFMX1RBR19PUCkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCA9IDANCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyUXVlc3Rpb25IZWFkZXIoQ0lmclN0YXRlbWVudEhl YWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxSGVhZGVyLCBG bGFncz1FRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVGQVVMVCk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBzZWxmLl9fcUhlYWRlciA9IHFIZWFkZXINCj4gDQo+ICsgICAgICAgIENJZnJTdGF0ZW1l bnRIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX3FIZWFkZXIuSGVhZGVyKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5fX3FIZWFkZXIuUXVlc3Rpb25JZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElE DQo+IA0KPiArICAgICAgICBzZWxmLl9fcUhlYWRlci5WYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JF X0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSW5mby5W YXJOYW1lID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+IA0KPiArICAgICAgICBzZWxmLl9fcUhl YWRlci5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0ID0gRUZJX1ZBUk9GRlNFVF9JTlZBTElEDQo+IA0K PiArICAgICAgICBzZWxmLl9fcUhlYWRlci5GbGFncyA9IEZsYWdzDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBHZXRRdWVzdGlvbklkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYu X19xSGVhZGVyLlF1ZXN0aW9uSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFF1ZXN0aW9u SWQoc2VsZiwgUXVlc3Rpb25JZCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLl9fcUhl YWRlci5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0 VmFyU3RvcmVJZChzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fcUhlYWRlci5W YXJTdG9yZUlkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRWYXJTdG9yZUluZm8oc2VsZiwg QmFzZUluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5fX3FIZWFkZXIuVmFyU3Rv cmVJZCA9IEJhc2VJbmZvLlZhclN0b3JlSWQNCj4gDQo+ICsgICAgICAgIHNlbGYuX19xSGVhZGVy LlZhclN0b3JlSW5mby5WYXJOYW1lID0gQmFzZUluZm8uSW5mby5WYXJOYW1lDQo+IA0KPiArICAg ICAgICBzZWxmLl9fcUhlYWRlci5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0ID0gQmFzZUluZm8uSW5m by5WYXJPZmZzZXQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFZhclN0b3JlSW5mbyhzZWxm LCBJbmZvKTogICMgQnVnDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBJbmZvLlZhclN0b3JlSWQg PSBzZWxmLl9fcUhlYWRlci5WYXJTdG9yZUlkDQo+IA0KPiArICAgICAgICBJbmZvLlZhclN0b3Jl SW5mbyA9IHNlbGYuX19xSGVhZGVyLlZhclN0b3JlSW5mbw0KPiANCj4gKyAgICAgICAgcmV0dXJu IEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEZsYWdzKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgcmV0dXJuIHNlbGYuX19xSGVhZGVyLkZsYWdzDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBTZXRGbGFncyhzZWxmLCBGbGFncyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBGbGFncywg UmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxhZ3MsDQo+IEVGSV9JRlJfRkxBR19SRUFEX09O TFkpDQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX3FI ZWFkZXIuRmxhZ3MgfD0gRUZJX0lGUl9GTEFHX1JFQURfT05MWQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgRmxhZ3MgPSBfRkxBR19DTEVBUihGbGFncywgMHgwMikNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihGbGFncywgRUZJX0lGUl9G TEFHX0NBTExCQUNLKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX19xSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19DQUxMQkFDSw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgIyBpZ25vcmUgTlZBY2Nlc3NGbGFnDQo+IA0KPiArICAgICAgICBGbGFn cyA9IF9GTEFHX0NMRUFSKEZsYWdzLCAweDA4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgRmxh Z3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKEZsYWdzLA0KPiBFRklfSUZSX0ZMQUdfUkVT RVRfUkVRVUlSRUQpDQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fX3FIZWFkZXIuRmxhZ3MgfD0gRUZJX0lGUl9GTEFHX1JFU0VUX1JFUVVJUkVEDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoRmxh Z3MsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJ X0lGUl9GTEFHX1JFQ09OTkVDVF9SRVFVSVJFRCkNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9fcUhlYWRlci5GbGFncyB8PSBFRklfSUZSX0ZMQUdfUkVD T05ORUNUX1JFUVVJUkVEDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAjIFNldCBMYXRlQ2hlY2sg RmxhZyB0byBjb21wYXRpYmxlIGZvciBmcmFtZXdvcmsgZmxhZw0KPiANCj4gKyAgICAgICAgIyBi dXQgaXQgdXNlcyAweDIwIGFzIGl0cyBmbGFnLCBpZiBpbiB0aGUgZnV0dXJlIFVFRkkgbWF5IHRh a2UgdGhpcyBmbGFnDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBGbGFncywgUmV0ID0gX0ZMQUdf VEVTVF9BTkRfQ0xFQVIoRmxhZ3MsIDB4MjApDQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fX3FIZWFkZXIuRmxhZ3MgfD0gMHgyMA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKEZsYWdzLA0KPiBF RklfSUZSX0ZMQUdfT1BUSU9OU19PTkxZKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX19xSGVhZGVyLkZsYWdzIHw9IEVGSV9JRlJfRkxBR19PUFRJT05T X09OTFkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fU1VDQ0VTUyBpZiBGbGFncyA9PSAwIGVsc2UNCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBVcGRhdGVDSWZy UXVlc3Rpb25IZWFkZXIoc2VsZiwgcUhlYWRlcik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fcUhl YWRlciA9IHFIZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyUmVmKENJ ZnJPYmosIENJZnJPcEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsICk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fUmVmID0g RUZJX0lGUl9SRUYoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19SZWYuSGVhZGVyLCBFRklfSUZSX1JFRl9PUCkNCj4gDQo+ICsgICAgICAgIENJZnJR dWVzdGlvbkhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVmLlF1ZXN0aW9uKQ0KPiANCj4g KyAgICAgICAgc2VsZi5fX1JlZi5Gb3JtSWQgPSAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBT ZXRGb3JtSWQoc2VsZiwgRm9ybUlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19SZWYuRm9ybUlk ID0gRm9ybUlkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4g KyAgICAgICAgcmV0dXJuIHNlbGYuX19SZWYNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBDSWZyUmVmMihDSWZyT2JqLCBDSWZyT3BIZWFkZXIsIENJZnJRdWVzdGlvbkhlYWRlcik6DQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCApOg0KPiANCj4gKyAgICAgICAg c2VsZi5fX1JlZjIgPSBFRklfSUZSX1JFRjIoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWYyLkhlYWRlciwgRUZJX0lGUl9SRUZfT1ApDQo+IA0K PiArICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1JlZjIu UXVlc3Rpb24pDQo+IA0KPiArICAgICAgICBzZWxmLl9fUmVmMi5Gb3JtSWQgPSAwDQo+IA0KPiAr ICAgICAgICBzZWxmLl9fUmVmMi5RdWVzdGlvbklkID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZvcm1JZChzZWxmLCBGb3JtSWQpOg0KPiANCj4g KyAgICAgICAgc2VsZi5fX1JlZjIuRm9ybUlkID0gRm9ybUlkDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBTZXRRdWVzdGlvbklkKHNlbGYsIFF1ZXN0aW9uSWQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgc2VsZi5fX1JlZjIuUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX1Jl ZjINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyUmVmMyhDSWZyT2JqLCBDSWZy T3BIZWFkZXIsIENJZnJRdWVzdGlvbkhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBf X2luaXRfXyhzZWxmLCApOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1JlZjMgPSBFRklfSUZSX1JF RjMoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19S ZWYzLkhlYWRlciwgRUZJX0lGUl9SRUZfT1ApDQo+IA0KPiArICAgICAgICBDSWZyUXVlc3Rpb25I ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1JlZjMuUXVlc3Rpb24pDQo+IA0KPiArICAgICAg ICBzZWxmLl9fUmVmMy5Gb3JtSWQgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLl9fUmVmMy5RdWVz dGlvbklkID0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIEVGSV9JRlJf REVGQVVMVF9HVUlEID0gRUZJX0dVSUQoMCwgMCwgMCwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3VpZEFycmF5KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAp KQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX1JlZjMuRm9ybVNldElkID0gRUZJX0lGUl9ERUZBVUxU X0dVSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZvcm1JZChzZWxmLCBGb3JtSWQpOg0K PiANCj4gKyAgICAgICAgc2VsZi5fX1JlZjMuRm9ybUlkID0gRm9ybUlkDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBTZXRRdWVzdGlvbklkKHNlbGYsIFF1ZXN0aW9uSWQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX1JlZjMuUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIFNldEZvcm1TZXRJZChzZWxmLCBGb3JtU2V0SWQpOg0KPiANCj4gKyAg ICAgICAgc2VsZi5fX1JlZjMuRm9ybVNldElkID0gRm9ybVNldElkDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19SZWYz DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclJlZjQoQ0lmck9iaiwgQ0lmck9w SGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19SZWY0ID0gRUZJX0lGUl9SRUY0 KCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVm NC5IZWFkZXIsIEVGSV9JRlJfUkVGX09QKQ0KPiANCj4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWY0LlF1ZXN0aW9uKQ0KPiANCj4gKyAgICAgICAg c2VsZi5fX1JlZjQuRm9ybUlkID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5fX1JlZjQuUXVlc3Rp b25JZCA9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+IA0KPiArICAgICAgICBFRklfSUZSX0RF RkFVTFRfR1VJRCA9IEVGSV9HVUlEKDAsIDAsIDAsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEd1aWRBcnJheSgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSkN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19SZWY0LkZvcm1TZXRJZCA9IEVGSV9JRlJfREVGQVVMVF9H VUlEDQo+IA0KPiArICAgICAgICBzZWxmLl9fUmVmNC5EZXZpY2VQYXRoID0gRUZJX1NUUklOR19J RF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRGb3JtSWQoc2VsZiwgRm9ybUlk KToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19SZWY0LkZvcm1JZCA9IEZvcm1JZA0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBRdWVzdGlvbklkKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19SZWY0LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBTZXRGb3JtU2V0SWQoc2VsZiwgRm9ybVNldElkKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19SZWY0LkZvcm1TZXRJZCA9IEZvcm1TZXRJZA0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgU2V0RGV2aWNlUGF0aChzZWxmLCBEZXZpY2VQYXRoKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19SZWY0LkRldmljZVBhdGggPSBEZXZpY2VQYXRoDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19SZWY0 DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclJlZjUoQ0lmck9iaiwgQ0lmck9w SGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19SZWY1ID0gRUZJX0lGUl9SRUY1 KCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVm NS5IZWFkZXIsIEVGSV9JRlJfUkVGX09QKQ0KPiANCj4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19SZWY1LlF1ZXN0aW9uKQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fUmVm NQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJBY3Rpb24oQ0lmck9iaiwgQ0lm ck9wSGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19BY3Rpb24gPSBFRklfSUZS X0FDVElPTigpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX0FjdGlvbi5IZWFkZXIsIEVGSV9JRlJfQUNUSU9OX09QKQ0KPiANCj4gKyAgICAgICAgQ0lm clF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19BY3Rpb24uUXVlc3Rpb24pDQo+ IA0KPiArICAgICAgICBzZWxmLl9fQWN0aW9uLlF1ZXN0aW9uQ29uZmlnID0gRUZJX1NUUklOR19J RF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRRdWVzdGlvbkNvbmZpZyhzZWxm LCBRdWVzdGlvbkNvbmZpZyk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fQWN0aW9uLlF1ZXN0aW9u Q29uZmlnID0gUXVlc3Rpb25Db25maWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8o c2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX0FjdGlvbg0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIENJZnJUZXh0KENJZnJPYmosIENJZnJPcEhlYWRlciwgQ0lmclN0 YXRlbWVudEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCAp Og0KPiANCj4gKyAgICAgICAgc2VsZi5fX1RleHQgPSBFRklfSUZSX1RFWFQoKQ0KPiANCj4gKyAg ICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19UZXh0LkhlYWRlciwgRUZJ X0lGUl9URVhUX09QKQ0KPiANCj4gKyAgICAgICAgQ0lmclN0YXRlbWVudEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fVGV4dC5TdGF0ZW1lbnQpDQo+IA0KPiArICAgICAgICBzZWxmLl9fVGV4 dC5UZXh0VHdvID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBTZXRUZXh0VHdvKHNlbGYsIFN0cmluZ0lkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19UZXh0 LlRleHRUd28gPSBTdHJpbmdJZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxm KToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fVGV4dA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIENJZnJHdWlkKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBTaXplLCBEYXRhYnVmZj1Ob25lKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19HdWlkID0gRUZJX0lGUl9HVUlEKCkNCj4gDQo+ICsgICAgICAgIHNl bGYuX19EYXRhID0gRGF0YWJ1ZmYNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRf XyhzZWxmLCBzZWxmLl9fR3VpZC5IZWFkZXIsIEVGSV9JRlJfR1VJRF9PUCwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMuc2l6ZW9mKEVGSV9JRlJfR1VJRCkgKyBT aXplKQ0KPiANCj4gKyAgICAgICAgRUZJX0lGUl9ERUZBVUxUX0dVSUQgPSBFRklfR1VJRCgwLCAw LCAwLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdWlk QXJyYXkoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCkpDQo+IA0KPiArICAgICAgICBzZWxmLl9fR3Vp ZC5HdWlkID0gRUZJX0lGUl9ERUZBVUxUX0dVSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNl dEd1aWQoc2VsZiwgR3VpZCk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fR3VpZC5HdWlkID0gR3Vp ZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RGF0YShzZWxmLCBEYXRhYnVmZik6DQo+IA0K PiArICAgICAgICBzZWxmLl9fRGF0YSA9IERhdGFidWZmDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19HdWlkDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmck9yZGVyZWRMaXN0KENJZnJPYmosIENJZnJP cEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9f aW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX09yZGVyZWRMaXN0ID0gRUZJX0lG Ul9PUkRFUkVEX0xJU1QoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19PcmRlcmVkTGlzdC5IZWFkZXIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRUZJX0lGUl9PUkRFUkVEX0xJU1RfT1ApDQo+IA0KPiArICAgICAgICBDSWZy UXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX09yZGVyZWRMaXN0LlF1ZXN0aW9u KQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX09yZGVyZWRMaXN0Lk1heENvbnRhaW5lcnMgPSAwDQo+ IA0KPiArICAgICAgICBzZWxmLl9fT3JkZXJlZExpc3QuRmxhZ3MgPSAwDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBHZXRRdWVzdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxm DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRRSGVhZGVyRmxhZ3Moc2VsZiwgRmxhZ3MpOg0K PiANCj4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEZsYWdzKQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0TWF4Q29udGFpbmVycyhzZWxmLCBNYXhDb250YWlu ZXJzKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19PcmRlcmVkTGlzdC5NYXhDb250YWluZXJzID0g TWF4Q29udGFpbmVycw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RmxhZ3Moc2VsZiwgSEZs YWdzLCBMRmxhZ3MpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgUmV0dXJuQ29kZSA9IENJZnJR dWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+IA0KPiArICAgICAgICBpZiBS ZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+IA0KPiArICAgICAgICBMRmxhZ3MsIFJldCA9 IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywgRUZJX0lGUl9VTklRVUVfU0VUKQ0KPiANCj4g KyAgICAgICAgaWYgUmV0Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19PcmRlcmVkTGlzdC5G bGFncyB8PSBFRklfSUZSX1VOSVFVRV9TRVQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIExGbGFn cywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLCBFRklfSUZSX05PX0VNUFRZX1NF VCkNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fT3Jk ZXJlZExpc3QuRmxhZ3MgfD0gRUZJX0lGUl9OT19FTVBUWV9TRVQNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUyBpZiBMRmxhZ3Mg PT0gMCBlbHNlDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19VTlNVUFBPUlRFRA0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJl dHVybiBzZWxmLl9fT3JkZXJlZExpc3QNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBD SWZyU3RyaW5nKENJZnJPYmosIENJZnJPcEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVhZGVyKToNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi5fX1N0ciA9IEVGSV9JRlJfU1RSSU5HKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fU3RyLkhlYWRlciwgRUZJX0lGUl9TVFJJTkdfT1ApDQo+IA0K PiArICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N0ci5R dWVzdGlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuX19TdHIuRmxhZ3MgPSAwDQo+IA0KPiArICAg ICAgICBzZWxmLl9fU3RyLk1pblNpemUgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLl9fU3RyLk1h eFNpemUgPSAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRRdWVzdGlvbihzZWxmKToNCj4g DQo+ICsgICAgICAgIHJldHVybiBzZWxmDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRRSGVh ZGVyRmxhZ3Moc2VsZiwgRmxhZ3MpOg0KPiANCj4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVy LlNldEZsYWdzKHNlbGYsIEZsYWdzKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RmxhZ3Mo c2VsZiwgSEZsYWdzLCBMRmxhZ3MpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgUmV0dXJuQ29k ZSA9IENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+IA0KPiArICAg ICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gRUZJX0lG Ul9TVFJJTkdfTVVMVElfTElORSkNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9fU3RyLkZsYWdzIHw9IEVGSV9JRlJfU1RSSU5HX01VTFRJX0xJTkUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VD Q0VTUyBpZiBMRmxhZ3MgPT0gMCBlbHNlDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFH U19VTlNVUFBPUlRFRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0TWluU2l6ZShzZWxmLCBN aW5TaXplKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19TdHIuTWluU2l6ZSA9IE1pblNpemUNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldE1heFNpemUoc2VsZiwgTWF4U2l6ZSk6DQo+IA0KPiAr ICAgICAgICBzZWxmLl9fU3RyLk1heFNpemUgPSBNYXhTaXplDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19TdHINCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyUGFzc3dvcmQoQ0lmck9iaiwgQ0lmck9w SGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19p bml0X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fUGFzc3dvcmQgPSBFRklfSUZSX1BB U1NXT1JEKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm Ll9fUGFzc3dvcmQuSGVhZGVyLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVGSV9JRlJfUEFTU1dPUkRfT1ApDQo+IA0KPiArICAgICAgICBDSWZyUXVlc3Rpb25IZWFkZXIu X19pbml0X18oc2VsZiwgc2VsZi5fX1Bhc3N3b3JkLlF1ZXN0aW9uKQ0KPiANCj4gKyAgICAgICAg c2VsZi5fX1Bhc3N3b3JkLk1pblNpemUgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLl9fUGFzc3dv cmQuTWF4U2l6ZSA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFF1ZXN0aW9uKHNlbGYp Og0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNl dFFIZWFkZXJGbGFncyhzZWxmLCBGbGFncyk6DQo+IA0KPiArICAgICAgICBDSWZyUXVlc3Rpb25I ZWFkZXIuU2V0RmxhZ3Moc2VsZiwgRmxhZ3MpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRN aW5TaXplKHNlbGYsIE1pblNpemUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1Bhc3N3b3JkLk1p blNpemUgPSBNaW5TaXplDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRNYXhTaXplKHNlbGYs IE1heFNpemUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1Bhc3N3b3JkLk1heFNpemUgPSBNYXhT aXplDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgcmV0dXJuIHNlbGYuX19QYXNzd29yZA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IENJZnJEZWZhdWx0KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBfX2luaXRfXyhzZWxmLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgU2l6ZSwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgIERlZmF1bHRJZD1FRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRB UkQsDQo+IA0KPiArICAgICAgICAgICAgICAgICBUeXBlPUVGSV9JRlJfVFlQRV9PVEhFUiwNCj4g DQo+ICsgICAgICAgICAgICAgICAgIFZhbHVlPUVGSV9JRlJfVFlQRV9WQUxVRSgpKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19EZWZhdWx0ID0gRUZJX0lGUl9ERUZBVUxUKCkNCj4gDQo+ICsgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRGVmYXVsdC5IZWFkZXIsDQo+ IEVGSV9JRlJfREVGQVVMVF9PUCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTaXplKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuVHlwZSA9IFR5cGUNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19EZWZhdWx0LkRlZmF1bHRJZCA9IERlZmF1bHRJZA0KPiANCj4gKyAg ICAgICAgc2VsZi5fX0RlZmF1bHQuVmFsdWUgPSBWYWx1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgU2V0RGVmYXVsdElkKHNlbGYsIERlZmF1bHRJZCk6DQo+IA0KPiArICAgICAgICBzZWxmLl9f RGVmYXVsdC5EZWZhdWx0SWQgPSBEZWZhdWx0SWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNl dFR5cGUoc2VsZiwgVHlwZSk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fRGVmYXVsdC5UeXBlID0g VHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWUpOg0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuVmFsdWUgPSBWYWx1ZQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fRGVm YXVsdA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJEZWZhdWx0MyhDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgIFNpemUsDQo+IA0KPiArICAgICAgICAgICAgICAgICBO dW1zLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgVmFsdWVUeXBlLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgRGVmYXVsdElkPUVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgIFR5cGU9RUZJX0lGUl9UWVBFX09USEVSLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgVmFsdWVMaXN0PVtdKToNCj4gDQo+ICsgICAgICAgIEhlYWRlciA9IEVGSV9J RlJfT1BfSEVBREVSKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBIZWFkZXIsIEVGSV9JRlJfREVGQVVMVF9PUCwgU2l6ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYu X19EZWZhdWx0ID0gUmVmaW5lX0VGSV9JRlJfREVGQVVMVChOdW1zKQ0KPiANCj4gKyAgICAgICAg c2VsZi5fX0RlZmF1bHQuSGVhZGVyID0gSGVhZGVyDQo+IA0KPiArICAgICAgICBzZWxmLl9fRGVm YXVsdC5UeXBlID0gVHlwZQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0RlZmF1bHQuRGVmYXVsdElk ID0gRGVmYXVsdElkDQo+IA0KPiArICAgICAgICBzZWxmLl9fVmFsdWVUeXBlID0gVmFsdWVUeXBl DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBWYWx1ZUxpc3QgIT0gW106DQo+IA0KPiArICAg ICAgICAgICAgQXJyYXlUeXBlID0gRUZJX0lGUl9UWVBFX1ZBTFVFICogTnVtcw0KPiANCj4gKyAg ICAgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUoKQ0KPiANCj4gKyAgICAgICAgICAgIGZv ciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCj4gDQo+ICsgICAgICAgICAgICAgICAg VmFsdWVBcnJheVtpXSA9IFZhbHVlTGlzdFtpXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19E ZWZhdWx0LlZhbHVlID0gVmFsdWVBcnJheQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RGVm YXVsdElkKHNlbGYsIERlZmF1bHRJZCk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fRGVmYXVsdC5E ZWZhdWx0SWQgPSBEZWZhdWx0SWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFZhbHVlVHlw ZShzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fVmFsdWVUeXBlDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBTZXRUeXBlKHNlbGYsIFR5cGUpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi5fX0RlZmF1bHQuVHlwZSA9IFR5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFZhbHVl KHNlbGYsIFZhbHVlTGlzdCk6DQo+IA0KPiArICAgICAgICBBcnJheVR5cGUgPSBFRklfSUZSX1RZ UEVfVkFMVUUgKiAobGVuKFZhbHVlTGlzdCkpDQo+IA0KPiArICAgICAgICBWYWx1ZUFycmF5ID0g QXJyYXlUeXBlKCkNCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxp c3QpKToNCj4gDQo+ICsgICAgICAgICAgICBWYWx1ZUFycmF5W2ldID0gVmFsdWVMaXN0W2ldDQo+ IA0KPiArICAgICAgICBzZWxmLl9fRGVmYXVsdC5WYWx1ZSA9IFZhbHVlQXJyYXkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2Vs Zi5fX0RlZmF1bHQNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyRGVmYXVsdDIo Q0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9f KHNlbGYsDQo+IA0KPiArICAgICAgICAgICAgICAgICBEZWZhdWx0SWQ9RUZJX0hJSV9ERUZBVUxU X0NMQVNTX1NUQU5EQVJELA0KPiANCj4gKyAgICAgICAgICAgICAgICAgVHlwZT1FRklfSUZSX1RZ UEVfT1RIRVIpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0RlZmF1bHQgPSBFRklfSUZSX0RFRkFV TFRfMigpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5f X0RlZmF1bHQuSGVhZGVyLA0KPiBFRklfSUZSX0RFRkFVTFRfT1ApDQo+IA0KPiArICAgICAgICBz ZWxmLl9fRGVmYXVsdC5UeXBlID0gVHlwZQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0RlZmF1bHQu RGVmYXVsdElkID0gRGVmYXVsdElkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXREZWZhdWx0 SWQoc2VsZiwgRGVmYXVsdElkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19EZWZhdWx0LkRlZmF1 bHRJZCA9IERlZmF1bHRJZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VHlwZShzZWxmLCBU eXBlKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19EZWZhdWx0LlR5cGUgPSBUeXBlDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNl bGYuX19EZWZhdWx0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmckluY29uc2lz dGVudElmKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBf X2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19JbmNvbnNpc3RlbnRJZiA9IEVG SV9JRlJfSU5DT05TSVNURU5UX0lGKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fSW5jb25zaXN0ZW50SWYuSGVhZGVyLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfSU5DT05TSVNURU5UX0lGX09QKQ0KPiANCj4g KyAgICAgICAgc2VsZi5fX0luY29uc2lzdGVudElmLkVycm9yID0gRUZJX1NUUklOR19JRF9JTlZB TElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRFcnJvcihzZWxmLCBFcnJvcik6DQo+IA0K PiArICAgICAgICBzZWxmLl9fSW5jb25zaXN0ZW50SWYuRXJyb3IgPSBFcnJvcg0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJOb1N1Ym1pdElmKENJZnJPYmosIENJZnJPcEhlYWRl cik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19Ob1N1Ym1pdElmID0gRUZJX0lGUl9OT19TVUJNSVRfSUYoKQ0KPiANCj4gKyAg ICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Ob1N1Ym1pdElmLkhlYWRl ciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX05PX1NVQk1J VF9JRl9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Ob1N1Ym1pdElmLkVycm9yID0gRUZJX1NU UklOR19JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRFcnJvcihzZWxmLCBF cnJvcik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fTm9TdWJtaXRJZi5FcnJvciA9IEVycm9yDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmckRpc2FibGVJZihDSWZyT2JqLCBDSWZy T3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0K PiArICAgICAgICBzZWxmLl9fRGlzYWJsZUlmID0gRUZJX0lGUl9ESVNBQkxFX0lGKCkNCj4gDQo+ ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRGlzYWJsZUlmLkhl YWRlciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0RJU0FC TEVfSUZfT1ApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclN1cHByZXNzSWYo Q0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9f KHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1N1cHByZXNzSWYgPSBFRklfSUZSX1NVUFBS RVNTX0lGKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm Ll9fU3VwcHJlc3NJZi5IZWFkZXIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRUZJX0lGUl9TVVBQUkVTU19JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBDSWZyR3JheU91dElmKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19HcmF5T3V0SWYg PSBFRklfSUZSX0dSQVlfT1VUX0lGKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fR3JheU91dElmLkhlYWRlciwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFRklfSUZSX0dSQVlfT1VUX0lGX09QKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2NsYXNzIENJZnJWYWx1ZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLl9f VmFsdWUgPSBFRklfSUZSX1ZBTFVFKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2lu aXRfXyhzZWxmLCBzZWxmLl9fVmFsdWUuSGVhZGVyLCBFRklfSUZSX1ZBTFVFX09QKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJSZWFkKENJZnJPYmosIENJZnJPcEhlYWRlcik6 DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAg IHNlbGYuX19SZWFkID0gRUZJX0lGUl9SRUFEKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRl ci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUmVhZC5IZWFkZXIsIEVGSV9JRlJfUkVBRF9PUCkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyV3JpdGUoQ0lmck9iaiwgQ0lmck9wSGVh ZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgc2VsZi5fX1dyaXRlID0gRUZJX0lGUl9XUklURSgpDQo+IA0KPiArICAgICAgICBDSWZy T3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1dyaXRlLkhlYWRlciwgRUZJX0lGUl9XUklU RV9PUCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyV2FybmluZ0lmKENJZnJP YmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxm KToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19XYXJuaW5nSWYgPSBFRklfSUZSX1dBUk5JTkdfSUYo KQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19XYXJu aW5nSWYuSGVhZGVyLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9J RlJfV0FSTklOR19JRl9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19XYXJuaW5nSWYuV2Fybmlu ZyA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgc2VsZi5fX1dhcm5pbmdJ Zi5UaW1lT3V0ID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0V2FybmluZyhzZWxmLCBX YXJuaW5nKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19XYXJuaW5nSWYuV2FybmluZyA9IFdhcm5p bmcNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFRpbWVPdXQoc2VsZiwgVGltZU91dCk6DQo+ IA0KPiArICAgICAgICBzZWxmLl9fV2FybmluZ0lmLlRpbWVPdXQgPSBUaW1lT3V0DQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNl bGYuX19XYXJuaW5nSWYNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyUmVmcmVz aChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0 X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fUmVmcmVzaCA9IEVGSV9JRlJfUkVGUkVT SCgpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1Jl ZnJlc2guSGVhZGVyLA0KPiBFRklfSUZSX1JFRlJFU0hfT1ApDQo+IA0KPiArICAgICAgICBzZWxm Ll9fUmVmcmVzaC5SZWZyZXNoSW50ZXJ2YWwgPSAwDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBT ZXRSZWZyZXNoSW50ZXJ2YWwoc2VsZiwgUmVmcmVzaEludGVydmFsKToNCj4gDQo+ICsgICAgICAg IHNlbGYuX19SZWZyZXNoLlJlZnJlc2hJbnRlcnZhbCA9IFJlZnJlc2hJbnRlcnZhbA0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBz ZWxmLl9fUmVmcmVzaA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJSZWZyZXNo SWQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1JlZnJlc2hJZCA9IEVGSV9JRlJfUkVG UkVTSF9JRCgpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX1JlZnJlc2hJZC5IZWFkZXIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRUZJX0lGUl9SRUZSRVNIX0lEX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX1JlZnJlc2hJ ZC5SZWZyZXNoRXZlbnRHcm91cElkID0gRUZJX0dVSUQoDQo+IA0KPiArICAgICAgICAgICAgMCwg MCwgMCwgR3VpZEFycmF5KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApKQ0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgU2V0UmVmcmVzaEV2ZW50R3JvdXRJZChzZWxmLCBSZWZyZXNoRXZlbnRHcm91cElk KToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19SZWZyZXNoSWQuUmVmcmVzaEV2ZW50R3JvdXBJZCA9 IFJlZnJlc2hFdmVudEdyb3VwSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEluZm8oc2Vs Zik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX1JlZnJlc2hJZA0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIENJZnJWYXJTdG9yZURldmljZShDSWZyT2JqLCBDSWZyT3BIZWFk ZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZik6DQo+IA0KPiArICAg ICAgICBzZWxmLl9fVmFyU3RvcmVEZXZpY2UgPSBFRklfSUZSX1ZBUlNUT1JFX0RFVklDRSgpDQo+ IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1ZhclN0b3Jl RGV2aWNlLkhlYWRlciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklf SUZSX1ZBUlNUT1JFX0RFVklDRV9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19WYXJTdG9yZURl dmljZS5EZXZpY2VQYXRoID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBTZXREZXZpY2VQYXRoKHNlbGYsIERldmljZVBhdGgpOg0KPiANCj4gKyAgICAgICAg c2VsZi5fX1ZhclN0b3JlRGV2aWNlLkRldmljZVBhdGggPSBEZXZpY2VQYXRoDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYu X19WYXJTdG9yZURldmljZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJEYXRl KENJZnJPYmosIENJZnJPcEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVhZGVyKToNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0RhdGUg PSBFRklfSUZSX0RBVEUoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNl bGYsIHNlbGYuX19EYXRlLkhlYWRlciwgRUZJX0lGUl9EQVRFX09QKQ0KPiANCj4gKyAgICAgICAg Q0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19EYXRlLlF1ZXN0aW9uKQ0K PiANCj4gKyAgICAgICAgc2VsZi5fX0RhdGUuRmxhZ3MgPSAwDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBTZXRGbGFncyhzZWxmLCBIRmxhZ3MsIExGbGFncyk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBSZXR1cm5Db2RlID0gQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEhGbGFn cykNCj4gDQo+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZs YWdzLA0KPiBFRklfUUZfREFURV9ZRUFSX1NVUFBSRVNTKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19EYXRlLkZsYWdzIHw9IEVGSV9RRl9EQVRFX1lF QVJfU1VQUFJFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdf VEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0KPiBFRklfUUZfREFURV9NT05USF9TVVBQUkVTUykNCj4g DQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFn cyB8PSBFRklfUUZfREFURV9NT05USF9TVVBQUkVTUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg TEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+IEVGSV9RRl9EQVRF X0RBWV9TVVBQUkVTUykNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9fRGF0ZS5GbGFncyB8PSBFRklfUUZfREFURV9EQVlfU1VQUFJFU1MNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdz LA0KPiBRRl9EQVRFX1NUT1JBR0VfTk9STUFMKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX19EYXRlLkZsYWdzIHw9IFFGX0RBVEVfU1RPUkFHRV9OT1JN QUwNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRf Q0xFQVIoTEZsYWdzLA0KPiBRRl9EQVRFX1NUT1JBR0VfVElNRSkNCj4gDQo+ICsgICAgICAgIGlm IFJldDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRGF0ZS5GbGFncyB8PSBRRl9EQVRFX1NU T1JBR0VfVElNRQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19U RVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+IFFGX0RBVEVfU1RPUkFHRV9XQUtFVVApDQo+IA0KPiAr ICAgICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0RhdGUuRmxhZ3MgfD0g UUZfREFURV9TVE9SQUdFX1dBS0VVUA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTIGlmIExGbGFncyA9PSAwIGVsc2UNCj4gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBHZXRJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19EYXRl DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclRpbWUoQ0lmck9iaiwgQ0lmck9w SGVhZGVyLCBDSWZyUXVlc3Rpb25IZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19p bml0X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fVGltZSA9IEVGSV9JRlJfVElNRSgp DQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1RpbWUu SGVhZGVyLCBFRklfSUZSX1RJTUVfT1ApDQo+IA0KPiArICAgICAgICBDSWZyUXVlc3Rpb25IZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1RpbWUuUXVlc3Rpb24pDQo+IA0KPiArICAgICAgICBz ZWxmLl9fVGltZS5GbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZsYWdzKHNl bGYsIEhGbGFncywgTEZsYWdzKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFJldHVybkNvZGUg PSBDSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiANCj4gKyAgICAg ICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+IFFGX1RJTUVf SE9VUl9TVVBQUkVTUykNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9fVGltZS5GbGFncyB8PSBRRl9USU1FX0hPVVJfU1VQUFJFU1MNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0K PiBRRl9USU1FX01JTlVURV9TVVBQUkVTUykNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9fVGltZS5GbGFncyB8PSBRRl9USU1FX01JTlVURV9TVVBQUkVT Uw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBfRkxBR19URVNUX0FORF9D TEVBUihMRmxhZ3MsDQo+IFFGX1RJTUVfU0VDT05EX1NVUFBSRVNTKQ0KPiANCj4gKyAgICAgICAg aWYgUmV0Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFGX1RJTUVf U0VDT05EX1NVUFBSRVNTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMRmxhZ3MsIFJldCA9IF9G TEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gUUZfVElNRV9TVE9SQUdFX05PUk1BTCkNCj4g DQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fVGltZS5GbGFn cyB8PSBRRl9USU1FX1NUT1JBR0VfTk9STUFMDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMRmxh Z3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gUUZfVElNRV9TVE9SQUdF X1RJTUUpDQo+IA0KPiArICAgICAgICBpZiBSZXQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f X1RpbWUuRmxhZ3MgfD0gUUZfVElNRV9TVE9SQUdFX1RJTUUNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoTEZsYWdzLA0KPiBRRl9USU1F X1NUT1JBR0VfV0FLRVVQKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX19UaW1lLkZsYWdzIHw9IFFGX1RJTUVfU1RPUkFHRV9XQUtFVVANCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUyBp ZiBMRmxhZ3MgPT0gMCBlbHNlDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GTEFHU19VTlNV UFBPUlRFRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsg ICAgICAgIHJldHVybiBzZWxmLl9fVGltZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IENJZnJOdW1lcmljKENJZnJPYmosIENJZnJPcEhlYWRlciwgQ0lmclF1ZXN0aW9uSGVhZGVyLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgIENJZnJNaW5NYXhTdGVwRGF0YSk6DQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19OdW1l cmljID0gRUZJX0lGUl9OVU1FUklDKCkgICMgZGF0YQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19OdW1lcmljLkhlYWRlciwNCj4gRUZJX0lGUl9OVU1F UklDX09QKQ0KPiANCj4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19OdW1lcmljLlF1ZXN0aW9uKQ0KPiANCj4gKyAgICAgICAgQ0lmck1pbk1heFN0ZXBE YXRhLl9faW5pdF9fKHNlbGYsIHNlbGYuX19OdW1lcmljLkRhdGEsIFRydWUpDQo+IA0KPiArICAg ICAgICBzZWxmLl9fTnVtZXJpYy5GbGFncyA9IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzEgfA0KPiBF RklfSUZSX0RJU1BMQVlfVUlOVF9ERUMNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFF1ZXN0 aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIEdldE1pbk1heERhdGEoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZg0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0UUhlYWRlckZsYWdzKHNlbGYsIEZsYWdzKToNCj4g DQo+ICsgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBGbGFncykNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhGbGFncywgTEZsYWdzLCBEaXNw bGF5U2V0dGluZ3NTcGVjaWZpZWQ9RmFsc2UpOg0KPiANCj4gKyAgICAgICAgUmV0dXJuQ29kZSA9 IENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFncyhzZWxmLCBIRmxhZ3MpDQo+IA0KPiArICAgICAg ICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBSZXR1cm5Db2RlDQo+IA0KPiArICAgICAgICBpZiBEaXNw bGF5U2V0dGluZ3NTcGVjaWZpZWQgPT0gRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f X051bWVyaWMuRmxhZ3MgPSBMRmxhZ3MgfCBFRklfSUZSX0RJU1BMQVlfVUlOVF9ERUMNCj4gDQo+ ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX051bWVyaWMuRmxhZ3Mg PSBMRmxhZ3MNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0RmxhZ3NGb3JCaXRGaWVsZChzZWxm LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIRmxhZ3MsDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExGbGFncywNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRGlzcGxheVNldHRpbmdzU3BlY2lmaWVkPUZhbHNlKToNCj4gDQo+ICsgICAg ICAgIFJldHVybkNvZGUgPSBDSWZyUXVlc3Rpb25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdz KQ0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUmV0dXJuQ29kZQ0KPiANCj4g KyAgICAgICAgaWYgRGlzcGxheVNldHRpbmdzU3BlY2lmaWVkID09IEZhbHNlOg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX19OdW1lcmljLkZsYWdzID0gTEZsYWdzIHwgRURLSUlfSUZSX0RJU1BM QVlfVUlOVF9ERUNfQklUDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX19OdW1lcmljLkZsYWdzID0gTEZsYWdzDQo+IA0KPiArICAgICAgICByZXR1cm4gVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdl dE51bWVyaWNGbGFncyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fTnVtZXJp Yy5GbGFncw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2hyaW5rQmluU2l6ZShzZWxmLCBTaXpl KToNCj4gDQo+ICsgICAgICAgIHNlbGYuU2hyaW5rQmluU2l6ZShTaXplKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5EZWNMZW5ndGgoU2l6ZSkNCj4gDQo+ICsgICAgICAgICMgIF9FTUlUX1BFTkRJTkdf T0JKKCk7DQo+IA0KPiArICAgICAgICBOdW1lcmljID0gRUZJX0lGUl9OVU1FUklDKCkNCj4gDQo+ ICsgICAgICAgIHNlbGYuVXBkYXRlSGVhZGVyKE51bWVyaWMuSGVhZGVyKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgR2V0SW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9f TnVtZXJpYw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJPbmVPZigNCj4gDQo+ ICsgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlciwNCj4gDQo+ICsgICAgICAgIENJZnJPYmosDQo+ IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIsDQo+IA0KPiArKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX09uZU9mID0gRUZJ X0lGUl9PTkVfT0YoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19PbmVPZi5IZWFkZXIsDQo+IEVGSV9JRlJfT05FX09GX09QKQ0KPiANCj4gKyAgICAg ICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19PbmVPZi5RdWVzdGlv bikNCj4gDQo+ICsgICAgICAgIHNlbGYuX19PbmVPZi5GbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIEdldFF1ZXN0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldE1pbk1heERhdGEoc2VsZik6DQo+IA0KPiArICAg ICAgICByZXR1cm4gc2VsZg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0UUhlYWRlckZsYWdz KHNlbGYsIEZsYWdzKToNCj4gDQo+ICsgICAgICAgIENJZnJRdWVzdGlvbkhlYWRlci5TZXRGbGFn cyhzZWxmLCBGbGFncykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhG bGFncywgTEZsYWdzKToNCj4gDQo+ICsgICAgICAgIFJldHVybkNvZGUgPSBDSWZyUXVlc3Rpb25I ZWFkZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29k ZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gUmV0dXJuQ29kZQ0KPiANCj4gKyAgICAgICAgaWYgTEZsYWdzICYgRUZJX0lGUl9E SVNQTEFZOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19PbmVPZi5GbGFncyA9IExGbGFncw0K PiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fT25lT2YuRmxh Z3MgPSBMRmxhZ3MgfCBFRklfSUZSX0RJU1BMQVlfVUlOVF9ERUMNCj4gDQo+ICsgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgU2V0RmxhZ3NGb3JCaXRGaWVsZChzZWxmLCBIRmxhZ3MsIExGbGFncyk6DQo+IA0KPiAr ICAgICAgICBSZXR1cm5Db2RlID0gQ0lmclF1ZXN0aW9uSGVhZGVyLlNldEZsYWdzKHNlbGYsIEhG bGFncykNCj4gDQo+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUNCj4g DQo+ICsgICAgICAgIGlmIExGbGFncyAmIEVES0lJX0lGUl9ESVNQTEFZX0JJVDoNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9fT25lT2YuRmxhZ3MgPSBMRmxhZ3MNCj4gDQo+ICsgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX09uZU9mLkZsYWdzID0gTEZsYWdzIHwgRURL SUlfSUZSX0RJU1BMQVlfVUlOVF9ERUNfQklUDQo+IA0KPiArICAgICAgICByZXR1cm4gVmZyUmV0 dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldElu Zm8oc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX09uZU9mDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmckNoZWNrQm94KENJZnJPYmosIENJZnJPcEhlYWRlciwg Q0lmclF1ZXN0aW9uSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0NoZWNrQm94ID0gRUZJX0lGUl9DSEVDS0JPWCgp DQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0NoZWNr Qm94LkhlYWRlciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZS X0NIRUNLQk9YX09QKQ0KPiANCj4gKyAgICAgICAgQ0lmclF1ZXN0aW9uSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuX19DaGVja0JveC5RdWVzdGlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuX19D aGVja0JveC5GbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFF1ZXN0aW9uKHNl bGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IFNldFFIZWFkZXJGbGFncyhzZWxmLCBGbGFncyk6DQo+IA0KPiArICAgICAgICBDSWZyUXVlc3Rp b25IZWFkZXIuU2V0RmxhZ3Moc2VsZiwgRmxhZ3MpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBH ZXRGbGFncyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fQ2hlY2tCb3guRmxh Z3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZsYWdzKHNlbGYsIEhGbGFncywgTEZsYWdz KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFJldHVybkNvZGUgPSBDSWZyUXVlc3Rpb25IZWFk ZXIuU2V0RmxhZ3Moc2VsZiwgSEZsYWdzKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAh PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gUmV0dXJuQ29kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTEZsYWdzLCBSZXQgPSBf RkxBR19URVNUX0FORF9DTEVBUihMRmxhZ3MsDQo+IEVGSV9JRlJfQ0hFQ0tCT1hfREVGQVVMVCkN Cj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fQ2hlY2tC b3guRmxhZ3MgfD0gRUZJX0lGUl9DSEVDS0JPWF9ERUZBVUxUDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBMRmxhZ3MsIFJldCA9IF9GTEFHX1RFU1RfQU5EX0NMRUFSKExGbGFncywNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9DSEVDS0JP WF9ERUZBVUxUX01GRykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFJldDoNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9fQ2hlY2tCb3guRmxhZ3MgfD0gRUZJX0lGUl9DSEVDS0JPWF9ERUZB VUxUX01GRw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTIGlmIExGbGFncyA9PSAwIGVsc2UNCj4gVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX0ZMQUdTX1VOU1VQUE9SVEVEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRJbmZv KHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19DaGVja0JveA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJSZXNldEJ1dHRvbihDSWZyT2JqLCBDSWZyT3BIZWFk ZXIsIENJZnJTdGF0ZW1lbnRIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0 X18oc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fUmVzZXRCdXR0b24gPSBFRklfSUZSX1JF U0VUX0JVVFRPTigpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5fX1Jlc2V0QnV0dG9uLkhlYWRlciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFRklfSUZSX1JFU0VUX0JVVFRPTl9PUCkNCj4gDQo+ICsgICAgICAgIENJZnJTdGF0 ZW1lbnRIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1Jlc2V0QnV0dG9uLlN0YXRlbWVudCkN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19SZXNldEJ1dHRvbi5EZWZhdWx0SWQgPSBFRklfSElJX0RF RkFVTFRfQ0xBU1NfU1RBTkRBUkQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldERlZmF1bHRJ ZChzZWxmLCBEZWZhdWx0SWQpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1Jlc2V0QnV0dG9uLkRl ZmF1bHRJZCA9IERlZmF1bHRJZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SW5mbyhzZWxm KToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fUmVzZXRCdXR0b24NCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyT3IoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAg ICBzZWxmLl9fT3IgPSBFRklfSUZSX09SKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fT3IuSGVhZGVyLCBFRklfSUZSX09SX09QKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2Ns YXNzIENJZnJBbmQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fQW5kID0g RUZJX0lGUl9BTkQoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYs IHNlbGYuX19BbmQuSGVhZGVyLCBFRklfSUZSX0FORF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYu U2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyQml0 V2lzZU9yKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBf X2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0JpdFdpc2VPciA9 IEVGSV9JRlJfQklUV0lTRV9PUigpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0 X18oc2VsZiwgc2VsZi5fX0JpdFdpc2VPci5IZWFkZXIsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRUZJX0lGUl9CSVRXSVNFX09SX09QKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJD YXRlbmF0ZShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19DYXRlbmF0ZSA9 IEVGSV9JRlJfQ0FURU5BVEUoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9f KHNlbGYsIHNlbGYuX19DYXRlbmF0ZS5IZWFkZXIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRUZJX0lGUl9DQVRFTkFURV9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0 TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyRGl2aWRl KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0RpdmlkZSA9IEVGSV9JRlJf RElWSURFKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm Ll9fRGl2aWRlLkhlYWRlciwgRUZJX0lGUl9ESVZJREVfT1ApDQo+IA0KPiArICAgICAgICBzZWxm LlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmckVx dWFsKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0VxdWFsID0gRUZJX0lG Ul9FUVVBTCgpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX0VxdWFsLkhlYWRlciwgRUZJX0lGUl9FUVVBTF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYu U2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyR3Jl YXRlckVxdWFsKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0dyZWF0ZXJF cXVhbCA9IEVGSV9JRlJfR1JFQVRFUl9FUVVBTCgpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0dyZWF0ZXJFcXVhbC5IZWFkZXIsDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9HUkVBVEVSX0VRVUFMX09QKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK2NsYXNzIENJZnJHcmVhdGVyVGhhbihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAg IHNlbGYuX19HcmVhdGVyVGhhbiA9IEVGSV9JRlJfR1JFQVRFUl9USEFOKCkNCj4gDQo+ICsgICAg ICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fR3JlYXRlclRoYW4uSGVhZGVy LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfR1JFQVRFUl9U SEFOX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJMZXNzRXF1YWwoQ0lmck9iaiwgQ0lmck9wSGVhZGVy KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0K PiArICAgICAgICBzZWxmLl9fTGVzc0VxdWFsID0gRUZJX0lGUl9MRVNTX0VRVUFMKCkNCj4gDQo+ ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fTGVzc0VxdWFsLkhl YWRlciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0xFU1Nf RVFVQUxfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmckxlc3NUaGFuKENJZnJPYmosIENJZnJPcEhlYWRl cik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX0xlc3NUaGFuID0gRUZJX0lGUl9MRVNTX1RIQU4oKQ0KPiANCj4g KyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19MZXNzVGhhbi5IZWFk ZXIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9MRVNTX1RI QU5fT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmck1hcChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19NYXAgPSBFRklfSUZSX01BUCgpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFk ZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX01hcC5IZWFkZXIsIEVGSV9JRlJfTUFQX09QKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK2NsYXNzIENJZnJNYXRjaChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYu X19NYXRjaCA9IEVGSV9JRlJfTUFUQ0goKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuX19NYXRjaC5IZWFkZXIsIEVGSV9JRlJfTUFUQ0hfT1ApDQo+IA0K PiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgQ0lmck1hdGNoMihDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vLCBHdWlkKToNCj4gDQo+ICsgICAgICAg IHNlbGYuX19NYXRjaDIgPSBFRklfSUZSX01BVENIMigpDQo+IA0KPiArICAgICAgICBDSWZyT3BI ZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX01hdGNoMi5IZWFkZXIsDQo+IEVGSV9JRlJfTUFU Q0gyX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5fX01hdGNoMi5TeW50YXhUeXBlID0gR3VpZA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gK2NsYXNzIENJZnJNdWx0aXBseShDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAg IHNlbGYuX19NdWx0aXBseSA9IEVGSV9JRlJfTVVMVElQTFkoKQ0KPiANCj4gKyAgICAgICAgQ0lm ck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19NdWx0aXBseS5IZWFkZXIsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9NVUxUSVBMWV9PUCkNCj4gDQo+ ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBDSWZyTW9kdWxvKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5f X01vZHVsbyA9IEVGSV9JRlJfTU9EVUxPKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fTW9kdWxvLkhlYWRlciwNCj4gRUZJX0lGUl9NT0RVTE9fT1Ap DQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgQ0lmck5vdEVxdWFsKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAg ICAgc2VsZi5fX05vdEVxdWFsID0gRUZJX0lGUl9OT1RfRVFVQUwoKQ0KPiANCj4gKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Ob3RFcXVhbC5IZWFkZXIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9OT1RfRVFVQUxfT1ApDQo+ IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArY2xhc3MgQ0lmclNoaWZ0TGVmdChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAg IHNlbGYuX19TaGlmdExlZnQgPSBFRklfSUZSX1NISUZUX0xFRlQoKQ0KPiANCj4gKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19TaGlmdExlZnQuSGVhZGVyLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfU0hJRlRfTEVGVF9PUCkN Cj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICtjbGFzcyBDSWZyU2hpZnRSaWdodChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19TaGlmdFJpZ2h0ID0gRUZJX0lGUl9TSElGVF9SSUdIVCgpDQo+IA0KPiArICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1NoaWZ0UmlnaHQuSGVhZGVy LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfU0hJRlRfUklH SFRfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclN1YnRyYWN0KENJZnJPYmosIENJZnJPcEhlYWRlcik6 DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4g KyAgICAgICAgc2VsZi5fX1N1YnRyYWN0ID0gRUZJX0lGUl9TVUJUUkFDVCgpDQo+IA0KPiArICAg ICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N1YnRyYWN0LkhlYWRlciwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1NVQlRSQUNUX09Q KQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2NsYXNzIENJZnJDb25kaXRpb25hbChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsg ICAgICAgIHNlbGYuX19Db25kaXRpb25hbCA9IEVGSV9JRlJfQ09ORElUSU9OQUwoKQ0KPiANCj4g KyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Db25kaXRpb25hbC5I ZWFkZXIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lGUl9DT05E SVRJT05BTF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyRmluZChDSWZyT2JqLCBDSWZyT3BIZWFkZXIp Og0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19GaW5kID0gRUZJX0lGUl9GSU5EKCkNCj4gDQo+ICsgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fRmluZC5IZWFkZXIsIEVGSV9JRlJfRklO RF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIFNldEZvcm1hdChzZWxmLCBGb3JtYXQpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi5fX0ZpbmQuRm9ybWF0ID0gRm9ybWF0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3Mg Q0lmck1pZChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19NaWQgPSBFRklf SUZSX01JRCgpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX01pZC5IZWFkZXIsIEVGSV9JRlJfTUlEX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRM aW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJUb2tlbihD SWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18o c2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Ub2tlbiA9IEVGSV9JRlJfVE9L RU4oKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19U b2tlbi5IZWFkZXIsIEVGSV9JRlJfVE9LRU5fT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExp bmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclNwYW4oQ0lm ck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNl bGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fU3BhbiA9IEVGSV9JRlJfU1BBTigp DQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1NwYW4u SGVhZGVyLCBFRklfSUZSX1NQQU5fT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhM aW5lTm8pDQo+IA0KPiArICAgICAgICBzZWxmLl9fU3Bhbi5GbGFncyA9IEVGSV9JRlJfRkxBR1Nf RklSU1RfTUFUQ0hJTkcNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEZsYWdzKHNlbGYsIExG bGFncyk6DQo+IA0KPiArICAgICAgICBpZiBMRmxhZ3MgPT0gRUZJX0lGUl9GTEFHU19GSVJTVF9N QVRDSElORzoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fU3Bhbi5GbGFncyB8PSBFRklfSUZS X0ZMQUdTX0ZJUlNUX01BVENISU5HDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgIExGbGFncywgUmV0ID0gX0ZMQUdfVEVTVF9BTkRfQ0xFQVIoDQo+IA0KPiArICAgICAg ICAgICAgICAgIExGbGFncywgRUZJX0lGUl9GTEFHU19GSVJTVF9OT05fTUFUQ0hJTkcpDQo+IA0K PiArICAgICAgICAgICAgaWYgUmV0Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fU3Bh bi5GbGFncyB8PSBFRklfSUZSX0ZMQUdTX0ZJUlNUX05PTl9NQVRDSElORw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTIGlmIExG bGFncyA9PSAwIGVsc2UNCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZMQUdTX1VOU1VQUE9S VEVEDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmckJpdFdpc2VBbmQoQ0lmck9i aiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYs IExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fQml0V2lzZUFuZCA9IEVGSV9JRlJfQklU V0lTRV9BTkQoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNl bGYuX19CaXRXaXNlQW5kLkhlYWRlciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFRklfSUZSX0JJVFdJU0VfQU5EX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5l Tm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJCaXRXaXNlT3Io Q0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9f KHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fQml0V2lzZU9yID0gRUZJX0lG Ul9CSVRXSVNFX09SKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxm LCBzZWxmLl9fQml0V2lzZU9yLkhlYWRlciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFRklfSUZSX0JJVFdJU0VfT1JfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExp bmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmckFkZChDSWZy T2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19BZGQgPSBFRklfSUZSX0FERCgpDQo+ IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0FkZC5IZWFk ZXIsIEVGSV9JRlJfQUREX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5v KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJUb1N0cmluZyhDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGlu ZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Ub1N0cmluZyA9IEVGSV9JRlJfVE9fU1RSSU5H KCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVG9T dHJpbmcuSGVhZGVyLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9J RlJfVE9fU1RSSU5HX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0Rm9ybWF0KHNlbGYsIEZvcm1hdCk6DQo+IA0KPiAr ICAgICAgICBzZWxmLl9fVG9TdHJpbmcuRm9ybWF0ID0gRm9ybWF0DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgQ0lmclRvVXBwZXIoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAg ICBzZWxmLl9fVG9VcHBwZXIgPSBFRklfSUZSX1RPX1VQUEVSKCkNCj4gDQo+ICsgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVG9VcHBwZXIuSGVhZGVyLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfVE9fVVBQRVJfT1ApDQo+IA0K PiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgQ0lmclRvVWludChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYu X19Ub1VpbnQgPSBFRklfSUZSX1RPX1VJTlQoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19Ub1VpbnQuSGVhZGVyLA0KPiBFRklfSUZSX1RPX1VJTlRf T1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArY2xhc3MgQ0lmclRvTG93ZXIoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAg ICAgICBzZWxmLl9fVG9Mb3dlciA9IEVGSV9JRlJfVE9fTE9XRVIoKQ0KPiANCj4gKyAgICAgICAg Q0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Ub0xvd2VyLkhlYWRlciwNCj4gRUZJ X0lGUl9UT19MT1dFUl9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyVG9Cb29sZWFuKENJZnJPYmosIENJ ZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5l Tm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Jvb2xlYW4gPSBFRklfSUZSX1RPX0JPT0xFQU4o KQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19Cb29s ZWFuLkhlYWRlciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZS X1RPX0JPT0xFQU5fT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmck5vdChDSWZyT2JqLCBDSWZyT3BIZWFk ZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4g DQo+ICsgICAgICAgIHNlbGYuX19Ob3QgPSBFRklfSUZSX05PVCgpDQo+IA0KPiArICAgICAgICBD SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX05vdC5IZWFkZXIsIEVGSV9JRlJfTk9U X09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIENJZnJEdXAoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAg ICBzZWxmLl9fRHVwID0gRUZJX0lGUl9EVVAoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVy Ll9faW5pdF9fKHNlbGYsIHNlbGYuX19EdXAuSGVhZGVyLCBFRklfSUZSX0RVUF9PUCkNCj4gDQo+ ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fRHVwLkhlYWRl cg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJFcUlkSWQoQ0lmck9iaiwgQ0lm ck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVO byk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fRXFJZElkID0gRUZJX0lGUl9FUV9JRF9JRCgpDQo+ IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX0VxSWRJZC5I ZWFkZXIsDQo+IEVGSV9JRlJfRVFfSURfSURfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExp bmVObyhMaW5lTm8pDQo+IA0KPiArICAgICAgICBzZWxmLl9fRXFJZElkLlF1ZXN0aW9uSWQxID0g RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIHNlbGYuX19FcUlkSWQuUXVl c3Rpb25JZDIgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19FcUlkSWQu SGVhZGVyDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRRdWVzdGlvbklkMShzZWxmLCBRdWVz dGlvbklkLCBWYXJJZFN0ciwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQg IT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Vx SWRJZC5RdWVzdGlvbklkMSA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0UXVlc3Rpb25J ZDIoc2VsZiwgUXVlc3Rpb25JZCwgVmFySWRTdHIsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBp ZiBRdWVzdGlvbklkICE9IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX19FcUlkSWQuUXVlc3Rpb25JZDIgPSBRdWVzdGlvbklkDQo+IA0KPiArICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBDSWZyRXFJZFZhbChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYu X19FcUlkVmFsID0gRUZJX0lGUl9FUV9JRF9WQUwoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVh ZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19FcUlkVmFsLkhlYWRlciwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX0VRX0lEX1ZBTF9PUCkNCj4gDQo+ICsgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsgICAgICAgIHNlbGYuX19FcUlkVmFs LlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBRdWVzdGlvbklkLCBWYXJJZFN0ciwgTGluZU5vKToN Cj4gDQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgIT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0VxSWRWYWwuUXVlc3Rpb25JZCA9IFF1ZXN0aW9u SWQNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcGFzcw0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWUpOg0KPiANCj4gKyAgICAgICAg c2VsZi5fX0VxSWRWYWwuVmFsdWUgPSBWYWx1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0 SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19FcUlkVmFsLkhlYWRl cg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJFcUlkTGlzdChDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGlu ZU5vLCBOdW1zLCBWYWx1ZUxpc3Q9W10pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0VxSWRWTGlz dCA9IFJlZmluZV9FRklfSUZSX0VRX0lEX1ZBTF9MSVNUKE51bXMpDQo+IA0KPiArICAgICAgICBI ZWFkZXIgPSBFRklfSUZSX09QX0hFQURFUigpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIu X19pbml0X18oc2VsZiwgSGVhZGVyLCBFRklfSUZSX0VRX0lEX1ZBTF9PUCkNCj4gDQo+ICsgICAg ICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsgICAgICAgIHNlbGYuX19FcUlkVkxp c3QuSGVhZGVyID0gSGVhZGVyDQo+IA0KPiArICAgICAgICBzZWxmLl9fRXFJZFZMaXN0LlF1ZXN0 aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Vx SWRWTGlzdC5MaXN0TGVuZ3RoID0gMA0KPiANCj4gKyAgICAgICAgaWYgVmFsdWVMaXN0ICE9IFtd Og0KPiANCj4gKyAgICAgICAgICAgIEFycmF5VHlwZSA9IGNfdWludDE2ICogTnVtcw0KPiANCj4g KyAgICAgICAgICAgIFZhbHVlQXJyYXkgPSBBcnJheVR5cGUoKQ0KPiANCj4gKyAgICAgICAgICAg IGZvciBpIGluIHJhbmdlKDAsIGxlbihWYWx1ZUxpc3QpKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgVmFsdWVBcnJheVtpXSA9IFZhbHVlTGlzdFtpXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X19FcUlkVkxpc3QuVmFsdWVMaXN0ID0gVmFsdWVBcnJheQ0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgU2V0UXVlc3Rpb25JZChzZWxmLCBRdWVzdGlvbklkLCBWYXJJZFN0ciwgTGluZU5vKToNCj4g DQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgIT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fX0VxSWRWTGlzdC5RdWVzdGlvbklkID0gUXVlc3Rpb25J ZA0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBwYXNzDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBTZXRMaXN0TGVuZ3RoKHNlbGYsIExpc3RMZW5ndGgpOg0KPiANCj4g KyAgICAgICAgc2VsZi5fX0VxSWRWTGlzdC5MaXN0TGVuZ3RoID0gTGlzdExlbmd0aA0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgU2V0VmFsdWVMaXN0KHNlbGYsIFZhbHVlTGlzdCk6DQo+IA0KPiAr ICAgICAgICBpZiBWYWx1ZUxpc3QgIT0gW106DQo+IA0KPiArICAgICAgICAgICAgQXJyYXlUeXBl ID0gY191aW50MTYgKiBsZW4oVmFsdWVMaXN0KQ0KPiANCj4gKyAgICAgICAgICAgIFZhbHVlQXJy YXkgPSBBcnJheVR5cGUoKQ0KPiANCj4gKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxl bihWYWx1ZUxpc3QpKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmFsdWVBcnJheVtpXSA9IFZh bHVlTGlzdFtpXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19FcUlkVkxpc3QuVmFsdWVMaXN0 ID0gVmFsdWVBcnJheQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19FcUlkVkxpc3QuSGVhZGVyDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclVpbnQ4KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAg ICAgICAgc2VsZi5fX1VpbnQ4ID0gRUZJX0lGUl9VSU5UOCgpDQo+IA0KPiArICAgICAgICBDSWZy T3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1VpbnQ4LkhlYWRlciwgRUZJX0lGUl9VSU5U OF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCj4gDQo+ICsgICAgICAgIHNlbGYu X19VaW50OC5WYWx1ZSA9IFZhbHVlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRIZWFkZXIo c2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX1VpbnQ4LkhlYWRlcg0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJVaW50MTYoQ0lmck9iaiwgQ0lmck9wSGVhZGVy KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0K PiArICAgICAgICBzZWxmLl9fVWludDE2ID0gRUZJX0lGUl9VSU5UMTYoKQ0KPiANCj4gKyAgICAg ICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19VaW50MTYuSGVhZGVyLCBFRklf SUZSX1VJTlQxNl9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFZhbHVlKHNlbGYsIFZhbHVlKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19VaW50MTYuVmFsdWUgPSBWYWx1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg R2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19VaW50MTYuSGVh ZGVyDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclVpbnQzMihDSWZyT2JqLCBD SWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGlu ZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19VaW50MzIgPSBFRklfSUZSX1VJTlQzMigpDQo+ IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1VpbnQzMi5I ZWFkZXIsIEVGSV9JRlJfVUlOVDMyX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8o TGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VmFsdWUoc2VsZiwgVmFsdWUpOg0K PiANCj4gKyAgICAgICAgc2VsZi5fX1VpbnQzMi5WYWx1ZSA9IFZhbHVlDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5f X1VpbnQzMi5IZWFkZXINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyVWludDY0 KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1VpbnQ2NCA9IEVGSV9JRlJf VUlOVDY0KCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxm Ll9fVWludDY0LkhlYWRlciwgRUZJX0lGUl9VSU5UNjRfT1ApDQo+IA0KPiArICAgICAgICBzZWxm LlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRWYWx1ZShzZWxm LCBWYWx1ZSk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fVWludDY0LlZhbHVlID0gVmFsdWUNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJl dHVybiBzZWxmLl9fVWludDY0LkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNz IENJZnJRdWVzdGlvblJlZjEoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLl9f UXVlc3Rpb25SZWYxID0gRUZJX0lGUl9RVUVTVElPTl9SRUYxKCkNCj4gDQo+ICsgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUXVlc3Rpb25SZWYxLkhlYWRlciwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1FVRVNUSU9OX1JFRjFf T1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArICAgICAg ICBzZWxmLl9fUXVlc3Rpb25SZWYxLlF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJ RA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgcmV0dXJuIHNlbGYuX19RdWVzdGlvblJlZjEuSGVhZGVyDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBTZXRRdWVzdGlvbklkKHNlbGYsIFF1ZXN0aW9uSWQsIFZhcklkU3RyLCBMaW5lTm8pOg0K PiANCj4gKyAgICAgICAgaWYgUXVlc3Rpb25JZCAhPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fUXVlc3Rpb25SZWYxLlF1ZXN0aW9uSWQgPSBRdWVz dGlvbklkDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHBhc3MNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyUXVlc3Rpb25SZWYyKENJZnJPYmosIENJ ZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5l Tm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uUmVmMiA9IEVGSV9JRlJfUVVFU1RJ T05fUkVGMigpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX1F1ZXN0aW9uUmVmMi5IZWFkZXIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRUZJX0lGUl9RVUVTVElPTl9SRUYyX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRM aW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19RdWVzdGlvblJlZjIuSGVhZGVyDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclF1ZXN0aW9uUmVmMyhDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjMgPSBFRklfSUZSX1FVRVNUSU9OX1JF RjMoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19R dWVzdGlvblJlZjMuSGVhZGVyLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVGSV9JRlJfUVVFU1RJT05fUkVGM19PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5v KExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ ICsgICAgICAgIHJldHVybiBzZWxmLl9fUXVlc3Rpb25SZWYzLkhlYWRlcg0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIENJZnJRdWVzdGlvblJlZjNfMihDSWZyT2JqLCBDSWZyT3BIZWFk ZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4g DQo+ICsgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjNfMiA9IEVGSV9JRlJfUVVFU1RJT05fUkVG M18yKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9f UXVlc3Rpb25SZWYzXzIuSGVhZGVyLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEVGSV9JRlJfUVVFU1RJT05fUkVGM19PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGlu ZU5vKExpbmVObykNCj4gDQo+ICsgICAgICAgIHNlbGYuX19RdWVzdGlvblJlZjNfMi5EZXZpY2VQ YXRoID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBTZXRE ZXZpY2VQYXRoKHNlbGYsIERldmljZVBhdGgpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1F1ZXN0 aW9uUmVmM18yLkRldmljZVBhdGggPSBEZXZpY2VQYXRoDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBHZXRIZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX1F1ZXN0aW9u UmVmM18yLkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJRdWVzdGlv blJlZjNfMyhDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg X19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19RdWVzdGlvblJl ZjNfMyA9IEVGSV9JRlJfUVVFU1RJT05fUkVGM18zKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhl YWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fUXVlc3Rpb25SZWYzXzMuSGVhZGVyLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfUVVFU1RJT05fUkVGM19PUCkN Cj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsgICAgICAgIHNl bGYuX19RdWVzdGlvblJlZjNfMy5EZXZpY2VQYXRoID0gRUZJX1NUUklOR19JRF9JTlZBTElEDQo+ IA0KPiArICAgICAgICBzZWxmLl9fUXVlc3Rpb25SZWYzXzMuR3VpZCA9IEVGSV9HVUlEKA0KPiAN Cj4gKyAgICAgICAgICAgIDAsIDAsIDAsIEd1aWRBcnJheSgwLCAwLCAwLCAwLCAwLCAwLCAwLCAw KSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldERldmljZVBhdGgoc2VsZiwgRGV2aWNlUGF0 aCk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fUXVlc3Rpb25SZWYzXzMuRGV2aWNlUGF0aCA9IERl dmljZVBhdGgNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldEd1aWQoc2VsZiwgR3VpZCk6DQo+ IA0KPiArICAgICAgICBzZWxmLl9fUXVlc3Rpb25SZWYzXzMuR3VpZCA9IEd1aWQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBz ZWxmLl9fUXVlc3Rpb25SZWYzXzMuSGVhZGVyDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgQ0lmclJ1bGVSZWYoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fUnVs ZVJlZiA9IEVGSV9JRlJfUlVMRV9SRUYoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9f aW5pdF9fKHNlbGYsIHNlbGYuX19SdWxlUmVmLkhlYWRlciwNCj4gRUZJX0lGUl9SVUxFX1JFRl9P UCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsgICAgICAg IHNlbGYuX19SdWxlUmVmLlJ1bGVJZCA9IEVGSV9SVUxFX0lEX0lOVkFMSUQNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIFNldFJ1bGVJZChzZWxmLCBSdWxlSWQpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi5fX1J1bGVSZWYuUnVsZUlkID0gUnVsZUlkDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRI ZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX1J1bGVSZWYuSGVhZGVy DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclN0cmluZ1JlZjEoQ0lmck9iaiwg Q0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExp bmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fU3RyaW5nUmVmMSA9IEVGSV9JRlJfU1RSSU5H X1JFRjEoKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19TdHJpbmdSZWYxLkhlYWRlciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBFRklfSUZSX1NUUklOR19SRUYxX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8o TGluZU5vKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX1N0cmluZ1JlZjEuU3RyaW5nSWQgPSBFRklf U1RSSU5HX0lEX0lOVkFMSUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldFN0cmluZ0lkKHNl bGYsIFN0cmluZ0lkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19TdHJpbmdSZWYxLlN0cmluZ0lk ID0gU3RyaW5nSWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4g DQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fU3RyaW5nUmVmMS5IZWFkZXINCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyU3RyaW5nUmVmMihDSWZyT2JqLCBDSWZyT3BIZWFkZXIp Og0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19TdHJpbmdSZWYyID0gRUZJX0lGUl9TVFJJTkdfUkVGMigpDQo+IA0K PiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1N0cmluZ1JlZjIu SGVhZGVyLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9JRlJfU1RS SU5HX1JFRjJfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1 cm4gc2VsZi5fX1N0cmluZ1JlZjIuSGVhZGVyDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgQ0lmclRoaXMoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAgICAgICBzZWxmLl9fVGhpcyA9 IEVGSV9JRlJfVEhJUygpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2Vs Ziwgc2VsZi5fX1RoaXMuSGVhZGVyLCBFRklfSUZSX1RISVNfT1ApDQo+IA0KPiArICAgICAgICBz ZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRIZWFkZXIo c2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX1RoaXMuSGVhZGVyDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclNlY3VyaXR5KENJZnJPYmosIENJZnJPcEhlYWRl cik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX1NlY3VyaXR5ID0gRUZJX0lGUl9TRUNVUklUWSgpDQo+IA0KPiAr ICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1NlY3VyaXR5LkhlYWRl ciwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1NFQ1VSSVRZ X09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fX1NlY3VyaXR5LlBlcm1pc3Npb25zID0gRUZJX0dVSUQoDQo+IA0KPiArICAgICAg ICAgICAgMCwgMCwgMCwgR3VpZEFycmF5KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApKQ0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgU2V0UGVybWlzc2lvbnMoc2VsZiwgUGVybWlzc2lvbnMpOg0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX1NlY3VyaXR5LlBlcm1pc3Npb25zID0gUGVybWlzc2lvbnMNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJl dHVybiBzZWxmLl9fU2VjdXJpdHkuSGVhZGVyDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xh c3MgQ0lmckdldChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19HZXQgPSBF RklfSUZSX0dFVCgpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwg c2VsZi5fX0dldC5IZWFkZXIsIEVGSV9JRlJfR0VUX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5T ZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0VmFySW5mbyhzZWxm LCBCYXNlSW5mbzogRUZJX1ZBUlNUT1JFX0lORk8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0dl dC5WYXJTdG9yZUlkID0gQmFzZUluZm8uVmFyU3RvcmVJZA0KPiANCj4gKyAgICAgICAgc2VsZi5f X0dldC5WYXJTdG9yZUluZm8uVmFyTmFtZSA9IEJhc2VJbmZvLkluZm8uVmFyTmFtZQ0KPiANCj4g KyAgICAgICAgc2VsZi5fX0dldC5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0ID0gQmFzZUluZm8uSW5m by5WYXJPZmZzZXQNCj4gDQo+ICsgICAgICAgIHNlbGYuX19HZXQuVmFyU3RvcmVUeXBlID0gQmFz ZUluZm8uVmFyVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19HZXQuSGVhZGVyDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgQ0lmclNldChDSWZyT2JqLCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNl bGYuX19TZXQgPSBFRklfSUZSX1NFVCgpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19p bml0X18oc2VsZiwgc2VsZi5fX1NldC5IZWFkZXIsIEVGSV9JRlJfU0VUX09QKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0 VmFySW5mbyhzZWxmLCBCYXNlSW5mbzogRUZJX1ZBUlNUT1JFX0lORk8pOg0KPiANCj4gKyAgICAg ICAgc2VsZi5fX1NldC5WYXJTdG9yZUlkID0gQmFzZUluZm8uVmFyU3RvcmVJZA0KPiANCj4gKyAg ICAgICAgc2VsZi5fX1NldC5WYXJTdG9yZUluZm8uVmFyTmFtZSA9IEJhc2VJbmZvLkluZm8uVmFy TmFtZQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX1NldC5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0ID0g QmFzZUluZm8uSW5mby5WYXJPZmZzZXQNCj4gDQo+ICsgICAgICAgIHNlbGYuX19TZXQuVmFyU3Rv cmVUeXBlID0gQmFzZUluZm8uVmFyVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVh ZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19TZXQuSGVhZGVyDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmclRydWUoQ0lmck9iaiwgQ0lmck9wSGVhZGVy KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0K PiArICAgICAgICBzZWxmLl9fVHJ1ZSA9IEVGSV9JRlJfVFJVRSgpDQo+IA0KPiArICAgICAgICBD SWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2VsZi5fX1RydWUuSGVhZGVyLCBFRklfSUZSX1RS VUVfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBHZXRIZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2Vs Zi5fX1RydWUuSGVhZGVyDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ0lmckZhbHNl KENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0ZhbHNlID0gRUZJX0lGUl9U UlVFKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9f RmFsc2UuSGVhZGVyLCBFRklfSUZSX0ZBTFNFX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRM aW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19GYWxzZS5IZWFkZXINCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICtjbGFzcyBDSWZyT25lKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAg c2VsZi5fX09uZSA9IEVGSV9JRlJfT05FKCkNCj4gDQo+ICsgICAgICAgIENJZnJPcEhlYWRlci5f X2luaXRfXyhzZWxmLCBzZWxmLl9fT25lLkhlYWRlciwgRUZJX0lGUl9PTkVfT1ApDQo+IA0KPiAr ICAgICAgICBzZWxmLlNldExpbmVObyhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBH ZXRIZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX09uZS5IZWFkZXIN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyT25lcyhDSWZyT2JqLCBDSWZyT3BI ZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgTGluZU5vKToN Cj4gDQo+ICsgICAgICAgIHNlbGYuX19PbmVzID0gRUZJX0lGUl9PTkUoKQ0KPiANCj4gKyAgICAg ICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19PbmVzLkhlYWRlciwgRUZJX0lG Ul9PTkVTX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJu IHNlbGYuX19PbmVzLkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJa ZXJvKENJZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1plcm8gPSBFRklfSUZS X1pFUk8oKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19aZXJvLkhlYWRlciwgRUZJX0lGUl9aRVJPX09QKQ0KPiANCj4gKyAgICAgICAgc2VsZi5TZXRM aW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVyKHNlbGYpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19aZXJvLkhlYWRlcg0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK2NsYXNzIENJZnJVbmRlZmluZWQoQ0lmck9iaiwgQ0lmck9wSGVhZGVyKToNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+IA0KPiArICAg ICAgICBzZWxmLl9fVW5kZWZpbmVkID0gRUZJX0lGUl9aRVJPKCkNCj4gDQo+ICsgICAgICAgIENJ ZnJPcEhlYWRlci5fX2luaXRfXyhzZWxmLCBzZWxmLl9fVW5kZWZpbmVkLkhlYWRlciwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfSUZSX1VOREVGSU5FRF9PUCkNCj4g DQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIEdldEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fVW5kZWZp bmVkLkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJWZXJzaW9uKENJ ZnJPYmosIENJZnJPcEhlYWRlcik6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBMaW5lTm8pOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1ZlcnNpb24gPSBFRklfSUZSX1ZF UlNJT04oKQ0KPiANCj4gKyAgICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYu X19WZXJzaW9uLkhlYWRlciwNCj4gRUZJX0lGUl9WRVJTSU9OX09QKQ0KPiANCj4gKyAgICAgICAg c2VsZi5TZXRMaW5lTm8oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0SGVhZGVy KHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19WZXJzaW9uLkhlYWRlcg0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIENJZnJMZW5ndGgoQ0lmck9iaiwgQ0lmck9wSGVh ZGVyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIExpbmVObyk6DQo+ IA0KPiArICAgICAgICBzZWxmLl9fTGVuZ3RoID0gRUZJX0lGUl9MRU5HVEgoKQ0KPiANCj4gKyAg ICAgICAgQ0lmck9wSGVhZGVyLl9faW5pdF9fKHNlbGYsIHNlbGYuX19MZW5ndGguSGVhZGVyLA0K PiBFRklfSUZSX0xFTkdUSF9PUCkNCj4gDQo+ICsgICAgICAgIHNlbGYuU2V0TGluZU5vKExpbmVO bykNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDSWZyQml0V2lzZU5vdChDSWZyT2Jq LCBDSWZyT3BIZWFkZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwg TGluZU5vKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19CaXRXaXNlTm90ID0gRUZJX0lGUl9CSVRX SVNFX05PVCgpDQo+IA0KPiArICAgICAgICBDSWZyT3BIZWFkZXIuX19pbml0X18oc2VsZiwgc2Vs Zi5fX0JpdFdpc2VOb3QuSGVhZGVyLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEVGSV9JRlJfQklUV0lTRV9OT1RfT1ApDQo+IA0KPiArICAgICAgICBzZWxmLlNldExpbmVO byhMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgRXhwcmVzc2lvbkluZm8o KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgc2VsZi5Sb290TGV2ZWwgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLkV4cE9wQ291bnQgPSAw DQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4Lmc0DQo+IGIvQmFzZVRvb2xzL1Nv dXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4Lmc0DQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjg5YzllNjdiNTkNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXguZzQNCj4g QEAgLTAsMCArMSwxODg3IEBADQo+ICtncmFtbWFyIFZmclN5bnRheDsNCj4gDQo+ICtvcHRpb25z IHsNCj4gDQo+ICsgICAgbGFuZ3VhZ2U9UHl0aG9uOw0KPiANCj4gK30NCj4gDQo+ICtAaGVhZGVy ew0KPiANCj4gKw0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuQ29tbW9uQ3R5cGVzIGltcG9ydCAq DQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5WZnJGb3JtUGtnIGltcG9ydCAqDQo+IA0KPiArZnJv bSBWZnJDb21waWxlci5WZnJVdGlsaXR5IGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxl ci5WZnJUcmVlIGltcG9ydCAqDQo+IA0KPiArfQ0KPiANCj4gKw0KPiANCj4gK3ZmclByb2dyYW0N Cj4gDQo+ICsgICAgOiAgICh2ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiB8IHZmckRhdGFTdHJ1Y3RE ZWZpbml0aW9uIHwNCj4gdmZyRGF0YVVuaW9uRGVmaW5pdGlvbikqIHZmckZvcm1TZXREZWZpbml0 aW9uDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtwcmFnbWFQYWNrU2hvd0RlZg0KPiAN Cj4gKyAgICA6ICAgJ3Nob3cnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtwcmFnbWFQ YWNrU3RhY2tEZWYNCj4gDQo+ICsgICAgOiAgICgncHVzaCcgfCAncG9wJykgICgnLCcgU3RyaW5n SWRlbnRpZmllcik/ICgnLCcgTnVtYmVyKT8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4g K3ByYWdtYVBhY2tOdW1iZXINCj4gDQo+ICsgICAgOiAgIE51bWJlcj8NCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gK3ZmclByYWdtYVBhY2tEZWZpbml0aW9uDQo+IA0KPiArICAgIDogICAn I3ByYWdtYScgJ3BhY2snICcoJw0KPiANCj4gKyAgICAgICAgKCAgIHByYWdtYVBhY2tTaG93RGVm DQo+IA0KPiArICAgICAgICB8ICAgcHJhZ21hUGFja1N0YWNrRGVmDQo+IA0KPiArICAgICAgICB8 ICAgcHJhZ21hUGFja051bWJlcg0KPiANCj4gKyAgICAgICAgKT8NCj4gDQo+ICsgICAgJyknDQo+ IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJEYXRhU3RydWN0RGVmaW5pdGlvbg0KPiAN Cj4gKyAgICA6ICAgKFR5cGVEZWYpPyBTdHJ1Y3QgTm9uTnZEYXRhTWFwPyBOMT1TdHJpbmdJZGVu dGlmaWVyPyAneycNCj4gdmZyRGF0YVN0cnVjdEZpZWxkc1tGYWxzZV0gJ30nICBOMj1TdHJpbmdJ ZGVudGlmaWVyPyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmckRhdGFVbmlv bkRlZmluaXRpb24NCj4gDQo+ICsgICAgOiAgIChUeXBlRGVmKT8gVW5pb24gTm9uTnZEYXRhTWFw PyBOMT1TdHJpbmdJZGVudGlmaWVyPyAneycNCj4gdmZyRGF0YVN0cnVjdEZpZWxkc1tUcnVlXSd9 JyBOMj1TdHJpbmdJZGVudGlmaWVyPyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4g K3ZmckRhdGFTdHJ1Y3RGaWVsZHNbRmllbGRJblVuaW9uXQ0KPiANCj4gKyAgICA6DQo+IA0KPiAr ICAgICggICBkYXRhU3RydWN0RmllbGQ2NFtGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIHwgICBk YXRhU3RydWN0RmllbGQzMltGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIHwgICBkYXRhU3RydWN0 RmllbGQxNltGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIHwgICBkYXRhU3RydWN0RmllbGQ4W0Zp ZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgfCAgIGRhdGFTdHJ1Y3RGaWVsZEJvb2xbRmllbGRJblVu aW9uXQ0KPiANCj4gKyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkU3RyaW5nW0ZpZWxkSW5Vbmlvbl0N Cj4gDQo+ICsgICAgfCAgIGRhdGFTdHJ1Y3RGaWVsZERhdGVbRmllbGRJblVuaW9uXQ0KPiANCj4g KyAgICB8ICAgZGF0YVN0cnVjdEZpZWxkVGltZVtGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIHwg ICBkYXRhU3RydWN0RmllbGRSZWZbRmllbGRJblVuaW9uXQ0KPiANCj4gKyAgICB8ICAgZGF0YVN0 cnVjdEZpZWxkVXNlcltGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIHwgICBkYXRhU3RydWN0Qml0 RmllbGQ2NFtGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIHwgICBkYXRhU3RydWN0Qml0RmllbGQz MltGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIHwgICBkYXRhU3RydWN0Qml0RmllbGQxNltGaWVs ZEluVW5pb25dDQo+IA0KPiArICAgIHwgICBkYXRhU3RydWN0Qml0RmllbGQ4W0ZpZWxkSW5Vbmlv bl0NCj4gDQo+ICsgICAgKSoNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2RhdGFTdHJ1 Y3RGaWVsZDY0W0ZpZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgOiAgICdVSU5UNjQnIE49U3RyaW5n SWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0K PiANCj4gK2RhdGFTdHJ1Y3RGaWVsZDMyW0ZpZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgOiAgICdV SU5UMzInIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScpPyAnOycNCj4gDQo+ICsg ICAgOw0KPiANCj4gKw0KPiANCj4gK2RhdGFTdHJ1Y3RGaWVsZDE2W0ZpZWxkSW5Vbmlvbl0NCj4g DQo+ICsgICAgOiAgICdVSU5UMTYnIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScp PyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2RhdGFTdHJ1Y3RGaWVsZDhbRmll bGRJblVuaW9uXQ0KPiANCj4gKyAgICA6ICAgJ1VJTlQ4JyBOPVN0cmluZ0lkZW50aWZpZXIgKCdb JyBOdW1iZXIgJ10nKT8gJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtkYXRhU3Ry dWN0RmllbGRCb29sW0ZpZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgOiAgICdCT09MRUFOJyBOPVN0 cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ ICsNCj4gDQo+ICtkYXRhU3RydWN0RmllbGRTdHJpbmdbRmllbGRJblVuaW9uXQ0KPiANCj4gKyAg ICA6ICAgJ0VGSV9TVFJJTkdfSUQnIE49U3RyaW5nSWRlbnRpZmllciAoJ1snIE51bWJlciAnXScp PyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2RhdGFTdHJ1Y3RGaWVsZERhdGVb RmllbGRJblVuaW9uXQ0KPiANCj4gKyAgICA6ICAgJ0VGSV9ISUlfREFURScgTj1TdHJpbmdJZGVu dGlmaWVyICgnWycgTnVtYmVyICddJyk/ICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArZGF0YVN0cnVjdEZpZWxkVGltZVtGaWVsZEluVW5pb25dDQo+IA0KPiArICAgIDogICAnRUZJ X0hJSV9USU1FJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtkYXRhU3RydWN0RmllbGRSZWZbRmllbGRJblVuaW9u XQ0KPiANCj4gKyAgICA6ICAgJ0VGSV9ISUlfUkVGJyBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBO dW1iZXIgJ10nKT8gJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtkYXRhU3RydWN0 RmllbGRVc2VyW0ZpZWxkSW5Vbmlvbl0NCj4gDQo+ICsgICAgOiAgIFQ9U3RyaW5nSWRlbnRpZmll ciBOPVN0cmluZ0lkZW50aWZpZXIgKCdbJyBOdW1iZXIgJ10nKT8gJzsnDQo+IA0KPiArICAgIDsN Cj4gDQo+ICsNCj4gDQo+ICtkYXRhU3RydWN0Qml0RmllbGQ2NFtGaWVsZEluVW5pb25dDQo+IA0K PiArICAgIDogICBEPSdVSU5UNjQnICBOPVN0cmluZ0lkZW50aWZpZXI/ICc6JyBOdW1iZXIgJzsn DQo+IA0KPiArICAgIDsNCj4gDQo+ICtkYXRhU3RydWN0Qml0RmllbGQzMltGaWVsZEluVW5pb25d DQo+IA0KPiArICAgIDogICBEPSdVSU5UMzInIE49U3RyaW5nSWRlbnRpZmllcj8gJzonIE51bWJl ciAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gK2RhdGFTdHJ1Y3RCaXRGaWVsZDE2W0ZpZWxkSW5V bmlvbl0NCj4gDQo+ICsgICAgOiAgIEQ9J1VJTlQxNicgTj1TdHJpbmdJZGVudGlmaWVyPyAnOicg TnVtYmVyICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArZGF0YVN0cnVjdEJpdEZpZWxkOFtGaWVs ZEluVW5pb25dDQo+IA0KPiArICAgIDogICBEPSdVSU5UOCcgTj1TdHJpbmdJZGVudGlmaWVyPyAn OicgTnVtYmVyICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArLy8gMi40IFZGUiBG b3JtU2V0IERlZmluaXRpb24NCj4gDQo+ICt2ZnJGb3JtU2V0RGVmaW5pdGlvbg0KPiANCj4gK2xv Y2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfRk9STV9TRVRfT1ApXQ0KPiANCj4gKyAgICA6 ICAgJ2Zvcm1zZXQnDQo+IA0KPiArICAgICAgICAnZ3VpZCcgJz0nIGd1aWREZWZpbml0aW9uICcs Jw0KPiANCj4gKyAgICAgICAgJ3RpdGxlJyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAn KScgJywnDQo+IA0KPiArICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1i ZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgKCdjbGFzc2d1aWQnICc9JyBjbGFzc2d1aWREZWZp bml0aW9uW2xvY2FsY3R4Lk5vZGVdICcsJyk/DQo+IA0KPiArICAgICAgICAoJ2NsYXNzJyAnPScg Y2xhc3NEZWZpbml0aW9uICcsJyk/DQo+IA0KPiArICAgICAgICAoJ3N1YmNsYXNzJyAnPScgc3Vi Y2xhc3NEZWZpbml0aW9uICcsJyk/DQo+IA0KPiArICAgICAgICB2ZnJGb3JtU2V0TGlzdFtsb2Nh bGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgJ2VuZGZvcm1zZXQnICc7Jw0KPiANCj4gKyAgICA7 DQo+IA0KPiArDQo+IA0KPiArY2xhc3NndWlkRGVmaW5pdGlvbltOb2RlXQ0KPiANCj4gK2xvY2Fs c1tHdWlkTGlzdD1bXV0NCj4gDQo+ICsgICAgOiAgIGd1aWREZWZpbml0aW9uICgnfCcgZ3VpZERl ZmluaXRpb24pPyAoJ3wnIGd1aWREZWZpbml0aW9uKT8oJ3wnDQo+IGd1aWREZWZpbml0aW9uKT8N Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2NsYXNzRGVmaW5pdGlvbg0KPiANCj4gK2xv Y2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCldDQo+IA0KPiArICAgIDogICB2 YWxpZENsYXNzTmFtZXMgKCd8JyB2YWxpZENsYXNzTmFtZXMpKg0KPiANCj4gKyAgICA7DQo+IA0K PiArDQo+IA0KPiArdmFsaWRDbGFzc05hbWVzDQo+IA0KPiArbG9jYWxzW0NsYXNzTmFtZT0wXQ0K PiANCj4gKyAgICA6ICAgQ2xhc3NOb25EZXZpY2UNCj4gDQo+ICsgICAgfCAgIENsYXNzRGlza0Rl dmljZQ0KPiANCj4gKyAgICB8ICAgQ2xhc3NWaWRlb0RldmljZQ0KPiANCj4gKyAgICB8ICAgQ2xh c3NOZXR3b3JrRGV2aWNlDQo+IA0KPiArICAgIHwgICBDbGFzc0lucHV0RGV2aWNlDQo+IA0KPiAr ICAgIHwgICBDbGFzc09uQm9hcmREZXZpY2UNCj4gDQo+ICsgICAgfCAgIENsYXNzT3RoZXJEZXZp Y2UNCj4gDQo+ICsgICAgfCAgIE51bWJlcg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiAr c3ViY2xhc3NEZWZpbml0aW9uDQo+IA0KPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lG Ul9HVUlEX09QKV0NCj4gDQo+ICsgICAgOiAgIFN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbg0KPiAN Cj4gKyAgICB8ICAgU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRpb24NCj4gDQo+ICsgICAgfCAgIFN1 YmNsYXNzRnJvbnRQYWdlDQo+IA0KPiArICAgIHwgICBTdWJjbGFzc1NpbmdsZVVzZQ0KPiANCj4g KyAgICB8ICAgTnVtYmVyDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICt2 ZnJGb3JtU2V0TGlzdFtOb2RlXQ0KPiANCj4gKyAgICA6ICh2ZnJGb3JtU2V0KSoNCj4gDQo+ICsg ICAgOw0KPiANCj4gKw0KPiANCj4gKy8vMi41IFZGUiBGb3JtU2V0IExpc3QgRGVmaW5pdGlvbg0K PiANCj4gK3ZmckZvcm1TZXQNCj4gDQo+ICtsb2NhbHNbTm9kZT1Ob25lXQ0KPiANCj4gKyAgICA6 DQo+IA0KPiArICAgICggICB2ZnJGb3JtRGVmaW5pdGlvbg0KPiANCj4gKyAgICB8ICAgdmZyRm9y bU1hcERlZmluaXRpb24NCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudEltYWdlDQo+IA0KPiAr ICAgIHwgICB2ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcg0KPiANCj4gKyAgICB8ICAgdmZyU3Rh dGVtZW50VmFyU3RvcmVFZmkNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFZhclN0b3JlTmFt ZVZhbHVlDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUNCj4gDQo+ICsg ICAgfCAgIHZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQNCj4gDQo+ICsgICAgfCAgIHZmclN0 YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRFeHRl bnNpb24NCj4gDQo+ICsgICAgKQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArLy8yLjYgVkZSIERlZmF1bHQgU3RvcmVzIERlZmluaXRpb24NCj4gDQo+ICt2ZnJTdGF0ZW1l bnREZWZhdWx0U3RvcmUNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0RF RkFVTFRTVE9SRV9PUCldDQo+IA0KPiArICAgIDogICAnZGVmYXVsdHN0b3JlJyBOPVN0cmluZ0lk ZW50aWZpZXIgJywnDQo+IA0KPiArICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicg JygnIFM9TnVtYmVyICcpJw0KPiANCj4gKyAgICAgICAgKCcsJyAnYXR0cmlidXRlJyAnPScgQT1O dW1iZXIpPyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gKy8vMi43IFZGUiBWYXJp YWJsZSBTdG9yZSBEZWZpbml0aW9uDQo+IA0KPiArdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIN Cj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1ZBUlNUT1JFX09QKV0NCj4g DQo+ICsgICAgOiAgICd2YXJzdG9yZScNCj4gDQo+ICsgICAgICAgICggICBUTj1TdHJpbmdJZGVu dGlmaWVyICcsJw0KPiANCj4gKyAgICAgICAgfCAgICdVSU5UOCcgJywnDQo+IA0KPiArICAgICAg ICB8ICAgJ1VJTlQxNicgJywnDQo+IA0KPiArICAgICAgICB8ICAgJ1VJTlQzMicgJywnDQo+IA0K PiArICAgICAgICB8ICAgJ1VJTlQ2NCcgJywnDQo+IA0KPiArICAgICAgICB8ICAgJ0VGSV9ISUlf REFURScgJywnDQo+IA0KPiArICAgICAgICB8ICAgJ0VGSV9ISUlfVElNRScgJywnDQo+IA0KPiAr ICAgICAgICB8ICAgJ0VGSV9ISUlfUkVGJyAnLCcNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsg ICAgICAgICgndmFyaWQnICc9JyBJRD1OdW1iZXIgJywnKT8NCj4gDQo+ICsgICAgICAgICduYW1l JyAnPScgU049U3RyaW5nSWRlbnRpZmllciAnLCcNCj4gDQo+ICsgICAgICAgICdndWlkJyAnPScg Z3VpZERlZmluaXRpb24gJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0 ZW1lbnRWYXJTdG9yZUVmaQ0KPiANCj4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJf VkFSU1RPUkVfRUZJX09QKV0NCj4gDQo+ICsgICAgOiAgICdlZml2YXJzdG9yZScNCj4gDQo+ICsg ICAgICAgICggICBUTj1TdHJpbmdJZGVudGlmaWVyICcsJw0KPiANCj4gKyAgICAgICAgfCAgICdV SU5UOCcgJywnDQo+IA0KPiArICAgICAgICB8ICAgJ1VJTlQxNicgJywnDQo+IA0KPiArICAgICAg ICB8ICAgJ1VJTlQzMicgJywnDQo+IA0KPiArICAgICAgICB8ICAgJ1VJTlQ2NCcgJywnDQo+IA0K PiArICAgICAgICB8ICAgJ0VGSV9ISUlfREFURScgJywnDQo+IA0KPiArICAgICAgICB8ICAgJ0VG SV9ISUlfVElNRScgJywnDQo+IA0KPiArICAgICAgICB8ICAgJ0VGSV9ISUlfUkVGJyAnLCcNCj4g DQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgICgndmFyaWQnICc9JyBJRD1OdW1iZXIgJywn KT8NCj4gDQo+ICsgICAgICAgICdhdHRyaWJ1dGUnICc9JyB2ZnJWYXJTdG9yZUVmaUF0dHIgKCd8 JyB2ZnJWYXJTdG9yZUVmaUF0dHIpKiAnLCcNCj4gDQo+ICsgICAgICAgICggICAnbmFtZScgJz0n IFNOPVN0cmluZ0lkZW50aWZpZXIgJywnDQo+IA0KPiArICAgICAgICB8ICAgJ25hbWUnICc9JyAn U1RSSU5HX1RPS0VOJyAnKCcgVk49TnVtYmVyICcpJyAnLCcgICd2YXJzaXplJyAnPScNCj4gTj1O dW1iZXIgJywnDQo+IA0KPiArICAgICAgICApDQo+IA0KPiArICAgICAgICAnZ3VpZCcgJz0nIGd1 aWREZWZpbml0aW9uICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyVmFyU3Rv cmVFZmlBdHRyDQo+IA0KPiArbG9jYWxzW0F0dHI9MF0NCj4gDQo+ICsgICAgOiAgIE51bWJlcjsN Cj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZQ0KPiANCj4gK2xv Y2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfVkFSU1RPUkVfTkFNRV9WQUxVRV9PUCldDQo+ IA0KPiArICAgIDogICAnbmFtZXZhbHVldmFyc3RvcmUnIFNOPVN0cmluZ0lkZW50aWZpZXIgJywn DQo+IA0KPiArICAgICAgICAoJ3ZhcmlkJyAnPScgSUQ9TnVtYmVyICcsJyk/DQo+IA0KPiArICAg ICAgICAoJ25hbWUnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcpKw0KPiAN Cj4gKyAgICAgICAgJ2d1aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnOycNCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQNCj4gDQo+ICtsb2Nh bHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0RJU0FCTEVfSUZfT1ApXQ0KPiANCj4gKyAgICA6 ICAgJ2Rpc2FibGVpZicgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCj4gDQo+ICsgICAgICAg IHZmckZvcm1TZXRMaXN0W2xvY2FsY3R4Lk5vZGVdDQo+IA0KPiArICAgICAgICAnZW5kaWYnICc7 Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZv cm1TZXQNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1NVUFBSRVNTX0lG X09QKV0NCj4gDQo+ICsgICAgOiAgICdzdXBwcmVzc2lmJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9u ICc7Jw0KPiANCj4gKyAgICAgICAgdmZyRm9ybVNldExpc3RbbG9jYWxjdHguTm9kZV0NCj4gDQo+ ICsgICAgICAgICdlbmRpZicgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtndWlk U3ViRGVmaW5pdGlvbltHdWlkXQ0KPiANCj4gKyAgICA6ICAgTnVtYmVyICcsJyBOdW1iZXIgJywn IE51bWJlciAnLCcgTnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgTnVtYmVyICcsJyBOdW1iZXIg JywnIE51bWJlciAnLCcgTnVtYmVyDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtndWlk RGVmaW5pdGlvbg0KPiANCj4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKCksIEd1aWQ9RUZJX0dV SUQoKV0NCj4gDQo+ICsgICAgOiAgICd7Jw0KPiANCj4gKyAgICAgICAgTnVtYmVyICcsJyBOdW1i ZXIgJywnIE51bWJlciAnLCcNCj4gDQo+ICsgICAgICAgICggICAneycgZ3VpZFN1YkRlZmluaXRp b25bbG9jYWxjdHguR3VpZF0gJ30nDQo+IA0KPiArICAgICAgICB8ICAgZ3VpZFN1YkRlZmluaXRp b25bbG9jYWxjdHguR3VpZF0NCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgICd9Jw0K PiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArZ2V0U3RyaW5nSWQNCj4gDQo+ICtsb2NhbHNb U3RyaW5nSWQ9JyddDQo+IA0KPiArICAgIDogICAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcp Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyUXVlc3Rpb25IZWFkZXJbT3BPYmos IFFUeXBlXQ0KPiANCj4gKyAgICA6ICAgdmZyUXVlc3Rpb25CYXNlSW5mb1tPcE9iaiwgUVR5cGVd DQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRIZWFkZXJbT3BPYmpdDQo+IA0KPiArICAgIDsN Cj4gDQo+ICsNCj4gDQo+ICt2ZnJRdWVzdGlvbkJhc2VJbmZvW09wT2JqLCBRVHlwZV0NCj4gDQo+ ICtsb2NhbHNbQmFzZUluZm89RUZJX1ZBUlNUT1JFX0lORk8oKSwgUUlkPUVGSV9RVUVTVElPTl9J RF9JTlZBTElELA0KPiBDaGVja0ZsYWc9VHJ1ZV0NCj4gDQo+ICsgICAgOiAgICgnbmFtZScgJz0n IFFOPVN0cmluZ0lkZW50aWZpZXIgJywnKT8NCj4gDQo+ICsgICAgICAgICgndmFyaWQnICc9JyB2 ZnJTdG9yYWdlVmFySWRbbG9jYWxjdHguQmFzZUluZm8sIGxvY2FsY3R4LkNoZWNrRmxhZ10gJywn KT8NCj4gDQo+ICsgICAgICAgICgncXVlc3Rpb25pZCcgJz0nIElEPU51bWJlciAnLCcpPw0KPiAN Cj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50SGVhZGVyW09wT2JqXQ0KPiAN Cj4gKyAgICA6ICAgJ3Byb21wdCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcs Jw0KPiANCj4gKyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcp Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxk DQo+IA0KPiArbG9jYWxzW1FIRmxhZz0wXQ0KPiANCj4gKyAgICA6ICAgUmVhZE9ubHlGbGFnDQo+ IA0KPiArICAgIHwgICBJbnRlcmFjdGl2ZUZsYWcNCj4gDQo+ICsgICAgfCAgIFJlc2V0UmVxdWly ZWRGbGFnDQo+IA0KPiArICAgIHwgICBSZXN0U3R5bGVGbGFnDQo+IA0KPiArICAgIHwgICBSZWNv bm5lY3RSZXF1aXJlZEZsYWcNCj4gDQo+ICsgICAgfCAgIE89T3B0aW9uT25seUZsYWcNCj4gDQo+ ICsgICAgfCAgIE49TlZBY2Nlc3NGbGFnDQo+IA0KPiArICAgIHwgICBMPUxhdGVDaGVja0ZsYWcN Cj4gDQo+ICsgICAgOw0KPiANCj4gKy8vMi4xMC41DQo+IA0KPiArdmZyU3RvcmFnZVZhcklkW0Jh c2VJbmZvLCBDaGVja0ZsYWddDQo+IA0KPiArbG9jYWxzW1ZhcklkU3RyPScnXQ0KPiANCj4gKyAg ICA6ICAgKFNOMT1TdHJpbmdJZGVudGlmaWVyICdbJyBJPU51bWJlciAnXScpICAgICMgdmZyU3Rv cmFnZVZhcklkUnVsZTENCj4gDQo+ICsgICAgfCAgIChTTjI9U3RyaW5nSWRlbnRpZmllciAoJy4n IGFycmF5TmFtZSkqICkgIyB2ZnJTdG9yYWdlVmFySWRSdWxlMg0KPiANCj4gKyAgICA7DQo+IA0K PiArDQo+IA0KPiArdmZyQ29uc3RhbnRWYWx1ZUZpZWxkDQo+IA0KPiArbG9jYWxzW1ZhbHVlPUVG SV9JRlJfVFlQRV9WQUxVRSgpLCBWYWx1ZUxpc3Q9W10sIExpc3RUeXBlPUZhbHNlXQ0KPiANCj4g KyAgICA6ICAgKCctJyk/IE51bWJlcg0KPiANCj4gKyAgICB8ICAgJ1RSVUUnDQo+IA0KPiArICAg IHwgICAnRkFMU0UnDQo+IA0KPiArICAgIHwgICAnT05FJw0KPiANCj4gKyAgICB8ICAgJ09ORVMn DQo+IA0KPiArICAgIHwgICAnWkVSTycNCj4gDQo+ICsgICAgfCAgIE51bWJlciAnOicgTnVtYmVy ICc6JyBOdW1iZXINCj4gDQo+ICsgICAgfCAgIE51bWJlciAnLycgTnVtYmVyICcvJyBOdW1iZXIN Cj4gDQo+ICsgICAgfCAgIE51bWJlciAnOycgTnVtYmVyICc7JyBndWlkRGVmaW5pdGlvbiAnOycg J1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScNCj4gDQo+ICsgICAgfCAgICdTVFJJTkdfVE9L RU4nICcoJyBOdW1iZXIgJyknDQo+IA0KPiArICAgIHwgICAneycgTnVtYmVyICgnLCcgTnVtYmVy KSogJ30nDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJJbWFnZVRhZw0KPiANCj4g K2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfSU1BR0VfT1ApXQ0KPiANCj4gKyAgICA6 ICAgJ2ltYWdlJyAnPScgJ0lNQUdFX1RPS0VOJyAnKCcgTnVtYmVyICcpJw0KPiANCj4gKyAgICA7 DQo+IA0KPiArDQo+IA0KPiArdmZyTG9ja2VkVGFnDQo+IA0KPiArbG9jYWxzW05vZGU9VmZyVHJl ZU5vZGUoRUZJX0lGUl9MT0NLRURfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ2xvY2tlZCcNCj4gDQo+ ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFN0YXRUYWcNCj4gDQo+ICtsb2Nh bHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIHZmckltYWdlVGFnIHwgdmZyTG9ja2VkVGFnDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdFtOb2RlXQ0K PiANCj4gKyAgICA6ICAgdmZyU3RhdGVtZW50U3RhdFRhZyAoJywnIHZmclN0YXRlbWVudFN0YXRU YWcpKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyRm9ybURlZmluaXRpb24NCj4g DQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0ZPUk1fT1ApXQ0KPiANCj4gKyAg ICA6ICAgJ2Zvcm0nICdmb3JtaWQnICc9JyBOdW1iZXIgJywnDQo+IA0KPiArICAgICAgICAndGl0 bGUnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnOycNCj4gDQo+ICsgICAgICAg ICh2ZnJGb3JtKSoNCj4gDQo+ICsgICAgICAgICdlbmRmb3JtJyAnOycNCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gK3ZmckZvcm0NCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAg Og0KPiANCj4gKyAgICAoICAgdmZyU3RhdGVtZW50SW1hZ2UNCj4gDQo+ICsgICAgfCAgIHZmclN0 YXRlbWVudExvY2tlZA0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50UnVsZXMNCj4gDQo+ICsg ICAgfCAgIHZmclN0YXRlbWVudERlZmF1bHQNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFN0 YXQNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFF1ZXN0aW9ucw0KPiANCj4gKyAgICB8ICAg dmZyU3RhdGVtZW50Q29uZGl0aW9uYWwNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudExhYmVs DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRCYW5uZXINCj4gDQo+ICsgICAgfCAgIHZmclN0 YXRlbWVudEludmFsaWQNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudEV4dGVuc2lvbg0KPiAN Cj4gKyAgICB8ICAgdmZyU3RhdGVtZW50TW9kYWwNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVu dFJlZnJlc2hFdmVudCAnOycNCj4gDQo+ICsgICAgKQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+ IA0KPiArdmZyRm9ybU1hcERlZmluaXRpb24NCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9k ZShFRklfSUZSX0ZPUk1fTUFQX09QKV0NCj4gDQo+ICsgICAgOiAgICdmb3JtbWFwJyAnZm9ybWlk JyAnPScgUzE9TnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgKCAgICdtYXB0aXRsZScgJz0nICdT VFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICc7Jw0KPiANCj4gKyAgICAgICAgICAgICdtYXBn dWlkJyAnPScgZ3VpZERlZmluaXRpb24gJzsnDQo+IA0KPiArICAgICAgICApKg0KPiANCj4gKyAg ICAgICAgKHZmckZvcm0pKg0KPiANCj4gKyAgICAgICAgJ2VuZGZvcm0nICc7Jw0KPiANCj4gKyAg ICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50SW1hZ2UNCj4gDQo+ICtsb2NhbHNbTm9k ZV0NCj4gDQo+ICsgICAgOiAgIHZmckltYWdlVGFnICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiAr DQo+IA0KPiArdmZyU3RhdGVtZW50TG9ja2VkDQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiAr ICAgIDogICB2ZnJMb2NrZWRUYWcgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2 ZnJTdGF0ZW1lbnRSdWxlcw0KPiANCj4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJf UlVMRV9PUCldDQo+IA0KPiArICAgIDogICAncnVsZScgU3RyaW5nSWRlbnRpZmllciAnLCcNCj4g DQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24NCj4gDQo+ICsgICAgICAgICdlbmRy dWxlJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFN0YXQN Cj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIHZmclN0YXRlbWVudFN1YlRpdGxl DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0DQo+IA0KPiArICAgIHwgICB2 ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiAr dmZyU3RhdGVtZW50U3ViVGl0bGUNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklf SUZSX1NVQlRJVExFX09QKSwgT3BPYmo9Q0lmclN1YnRpdGxlKCldDQo+IA0KPiArICAgIDogICAn c3VidGl0bGUnDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAndGV4dCcgJz0nICdTVFJJTkdfVE9L RU4nICcoJyBOdW1iZXIgJyknDQo+IA0KPiArICAgICAgICAoJywnICdmbGFncycgJz0nIHZmclN1 YnRpdGxlRmxhZ3MpPw0KPiANCj4gKyAgICAgICAgKCAgICgnLCcgdmZyU3RhdGVtZW50U3RhdFRh Z0xpc3RbbG9jYWxjdHguTm9kZV0pPyAnOycNCj4gDQo+ICsgICAgICAgIHwNCj4gDQo+ICsgICAg ICAgICAgICAoJywnIHZmclN0YXRlbWVudFN0YXRUYWdMaXN0W2xvY2FsY3R4Lk5vZGVdKT8NCj4g DQo+ICsgICAgICAgICAgICAoJywnICh2ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudCkqICk/ DQo+IA0KPiArICAgICAgICAgICAgJ2VuZHN1YnRpdGxlJyAnOycNCj4gDQo+ICsgICAgICAgICkN Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9u ZW50DQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiArICAgIDogIHZmclN0YXRlbWVudFN0YXQg fCB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3Zm clN1YnRpdGxlRmxhZ3MNCj4gDQo+ICtsb2NhbHNbU3ViRmxhZ3M9MF0NCj4gDQo+ICsgICAgOiAg IHN1YnRpdGxlRmxhZ3NGaWVsZCAoJ3wnIHN1YnRpdGxlRmxhZ3NGaWVsZCkqDQo+IA0KPiArICAg IDsNCj4gDQo+ICtzdWJ0aXRsZUZsYWdzRmllbGQNCj4gDQo+ICtsb2NhbHNbRmxhZz0wXQ0KPiAN Cj4gKyAgICA6ICAgTnVtYmVyIHwgJ0hPUklaT05UQUwnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsN Cj4gDQo+ICt2ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0DQo+IA0KPiArbG9jYWxzW05vZGU9VmZyVHJl ZU5vZGUoRUZJX0lGUl9URVhUX09QKV0NCj4gDQo+ICsgICAgOiAgICd0ZXh0Jw0KPiANCj4gKyAg ICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgUzE9TnVtYmVyICcpJyAnLCcNCj4g DQo+ICsgICAgICAgICd0ZXh0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIFMyPU51bWJlciAnKScN Cj4gDQo+ICsgICAgICAgICgnLCcgJ3RleHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgUzM9TnVt YmVyICcpJyk/DQo+IA0KPiArICAgICAgICAoJywnIEY9J2ZsYWdzJyAnPScgc3RhdGljVGV4dEZs YWdzRmllbGQgKCd8JyBzdGF0aWNUZXh0RmxhZ3NGaWVsZCkqICcsJyAna2V5JyAnPScNCj4gUzQ9 TnVtYmVyKT8NCj4gDQo+ICsgICAgICAgICgnLCcgdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RbbG9j YWxjdHguTm9kZV0pPyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3N0YXRpY1Rl eHRGbGFnc0ZpZWxkDQo+IA0KPiArbG9jYWxzW0ZsYWc9MF0NCj4gDQo+ICsgICAgOiAgIE49TnVt YmVyIHwgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4g DQo+ICt2ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZQ0KPiANCj4gK2xvY2Fsc1tOb2RlXQ0KPiAN Cj4gKyAgICA6ICAgdmZyU3RhdGVtZW50R290byB8IHZmclN0YXRlbWVudFJlc2V0QnV0dG9uDQo+ IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRHb3RvDQo+IA0KPiArbG9j YWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9SRUZfT1ApLCBPcE9iaj1Ob25lLCBPSE9iaj1O b25lLA0KPiBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1JFRl0NCj4gDQo+ICsgICAg OiAgICdnb3RvJw0KPiANCj4gKyAgICAgICAgKCAgICggICBEZXZpY2VQYXRoICc9JyAnU1RSSU5H X1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ICsgICAgICAgICAgICAgICAgRm9ybVNl dEd1aWQgJz0nIGd1aWREZWZpbml0aW9uICcsJw0KPiANCj4gKyAgICAgICAgICAgICAgICBGb3Jt SWQgJz0nIE51bWJlciAnLCcNCj4gDQo+ICsgICAgICAgICAgICAgICAgUXVlc3Rpb24gJz0nIE51 bWJlciAnLCcNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgfA0KPiAN Cj4gKyAgICAgICAgICAgICggICBGb3JtU2V0R3VpZCAnPScgZ3VpZERlZmluaXRpb24gJywnDQo+ IA0KPiArICAgICAgICAgICAgICAgIEZvcm1JZCAnPScgTnVtYmVyICcsJw0KPiANCj4gKyAgICAg ICAgICAgICAgICBRdWVzdGlvbiAnPScgTnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgICAgICkN Cj4gDQo+ICsgICAgICAgICAgICB8DQo+IA0KPiArICAgICAgICAgICAgKCAgIEZvcm1JZCAnPScg TnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgICAgICAgICBRdWVzdGlvbiAnPScgKFFOPVN0cmlu Z0lkZW50aWZpZXIgJywnIHwgTnVtYmVyICcsJykNCj4gDQo+ICsgICAgICAgICAgICApDQo+IA0K PiArICAgICAgICAgICAgfA0KPiANCj4gKyAgICAgICAgICAgICggICBOdW1iZXIgJywnICkNCj4g DQo+ICsgICAgICAgICk/DQo+IA0KPiArICAgICAgICB2ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0 eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdDQo+IA0KPiArICAgICAgICAoJywnICdmbGFncycgJz0n IHZmckdvdG9GbGFnc1tsb2NhbGN0eC5PcE9ial0pPw0KPiANCj4gKyAgICAgICAgKCcsJyAna2V5 JyAnPScgTnVtYmVyKT8NCj4gDQo+ICsgICAgICAgICgnLCcgdmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdKT8gJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4g DQo+ICt2ZnJHb3RvRmxhZ3NbT2JqXQ0KPiANCj4gK2xvY2Fsc1tHb3RvRmxhZ3M9MF0NCj4gDQo+ ICsgICAgOiAgIGdvdG9GbGFnc0ZpZWxkKCd8JyBnb3RvRmxhZ3NGaWVsZCkqDQo+IA0KPiArICAg IDsNCj4gDQo+ICsNCj4gDQo+ICtnb3RvRmxhZ3NGaWVsZA0KPiANCj4gK2xvY2Fsc1tGbGFnPTBd DQo+IA0KPiArICAgIDogIE49TnVtYmVyIHwgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbg0KPiANCj4g K2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfUkVTRVRfQlVUVE9OX09QKSwNCj4gT3BP Ymo9Q0lmclJlc2V0QnV0dG9uKCldDQo+IA0KPiArICAgIDogICdyZXNldGJ1dHRvbicNCj4gDQo+ ICsgICAgICAgJ2RlZmF1bHRzdG9yZScgJz0nIE49U3RyaW5nSWRlbnRpZmllciAnLCcNCj4gDQo+ ICsgICAgICAgdmZyU3RhdGVtZW50SGVhZGVyW2xvY2FsY3R4Lk9wT2JqXSAnLCcNCj4gDQo+ICsg ICAgICAgKHZmclN0YXRlbWVudFN0YXRUYWdMaXN0W2xvY2FsY3R4Lk5vZGVdICcsJyk/DQo+IA0K PiArICAgICAgICdlbmRyZXNldGJ1dHRvbicgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4g DQo+ICt2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMNCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsg ICAgOiAgIHZmclN0YXRlbWVudEJvb2xlYW5UeXBlDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1l bnREYXRlDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnROdW1lcmljVHlwZQ0KPiANCj4gKyAg ICB8ICAgdmZyU3RhdGVtZW50U3RyaW5nVHlwZQ0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50 T3JkZXJlZExpc3QNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFRpbWUNCj4gDQo+ICsgICAg Ow0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFF1ZXN0aW9uVGFnDQo+IA0KPiArbG9jYWxz W05vZGVdDQo+IA0KPiArICAgIDogICB2ZnJTdGF0ZW1lbnRTdGF0VGFnICcsJw0KPiANCj4gKyAg ICB8ICAgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRl bWVudE5vU3VibWl0SWYNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0 DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWZyZXNoDQo+IA0KPiArICAgIHwgICB2ZnJT dGF0ZW1lbnRWYXJzdG9yZURldmljZQ0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50RXh0ZW5z aW9uDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQNCj4gDQo+ICsgICAg fCAgIHZmclN0YXRlbWVudFdhcm5pbmdJZg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiAr dmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9k ZShFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9PUCldDQo+IA0KPiArICAgIDogICAnaW5jb25zaXN0 ZW50aWYnDQo+IA0KPiArICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51 bWJlciAnKScgJywnDQo+IA0KPiArICAgICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wn IGZsYWdzRmllbGQpKiAnLCcpPw0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lv bg0KPiANCj4gKyAgICAgICAgJ2VuZGlmJyAoJzsnKT8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0K PiANCj4gK3ZmclN0YXRlbWVudE5vU3VibWl0SWYNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVl Tm9kZShFRklfSUZSX05PX1NVQk1JVF9JRl9PUCldDQo+IA0KPiArICAgIDogICAnbm9zdWJtaXRp ZicNCj4gDQo+ICsgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVy ICcpJyAnLCcNCj4gDQo+ICsgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxh Z3NGaWVsZCkqICcsJyk/DQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQo+ IA0KPiArICAgICAgICAnZW5kaWYnICgnOycpPw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArdmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVl Tm9kZShFRklfSUZSX0RJU0FCTEVfSUZfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ2Rpc2FibGVpZicg dmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudFF1 ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgJ2VuZGlmJyAo JzsnKT8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFJlZnJlc2gN Cj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1JFRlJFU0hfT1ApXQ0KPiAN Cj4gKyAgICA6ICAgJ3JlZnJlc2gnICdpbnRlcnZhbCcgJz0nIE51bWJlcg0KPiANCj4gKyAgICA7 DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2UNCj4gDQo+ICtsb2Nh bHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUCldDQo+IA0KPiAr ICAgIDogICAndmFyc3RvcmVkZXZpY2UnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcp JyAnLCcNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFJlZnJlc2hF dmVudA0KPiANCj4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfUkVGUkVTSF9JRF9P UCldDQo+IA0KPiArICAgIDogICAncmVmcmVzaGd1aWQnICc9JyBndWlkRGVmaW5pdGlvbiAnLCcN Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFdhcm5pbmdJZg0KPiAN Cj4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfV0FSTklOR19JRl9PUCldDQo+IA0K PiArICAgIDogICAnd2FybmluZ2lmJw0KPiANCj4gKyAgICAgICAgJ3Byb21wdCcgJz0nICdTVFJJ TkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgKCd0aW1lb3V0JyAn PScgTnVtYmVyICcsJyk/DQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uDQo+ IA0KPiArICAgICAgICAnZW5kaWYnICgnOycpPw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0W05vZGVdDQo+IA0KPiArICAgIDogICAodmZy U3RhdGVtZW50UXVlc3Rpb25UYWcpKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcNCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsg ICAgOiAgIHZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdA0KPiANCj4gKyAgICB8ICAgdmZyU3Rh dGVtZW50R3JheU91dElmUXVlc3QNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudFZhbHVlDQo+ IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnREZWZhdWx0DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0 ZW1lbnRPcHRpb25zDQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRSZWFkDQo+IA0KPiArICAg IHwgICB2ZnJTdGF0ZW1lbnRXcml0ZQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArZmxh Z3NGaWVsZA0KPiANCj4gKyAgICA6ICAgTnVtYmVyDQo+IA0KPiArICAgIHwgICBJbnRlcmFjdGl2 ZUZsYWcNCj4gDQo+ICsgICAgfCAgIE1hbnVmYWN0dXJpbmdGbGFnDQo+IA0KPiArICAgIHwgICBE ZWZhdWx0RmxhZw0KPiANCj4gKyAgICB8ICAgUmVzZXRSZXF1aXJlZEZsYWcNCj4gDQo+ICsgICAg fCAgIFJlY29ubmVjdFJlcXVpcmVkRmxhZw0KPiANCj4gKyAgICB8ICAgTj1OVkFjY2Vzc0ZsYWcN Cj4gDQo+ICsgICAgfCAgIEw9TGF0ZUNoZWNrRmxhZw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+ IA0KPiArdmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0DQo+IA0KPiArbG9jYWxzW05vZGU9VmZy VHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCldDQo+IA0KPiArICAgIDogICAnc3VwcHJl c3NpZicgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCj4gDQo+ICsgICAgICAgICgnZmxhZ3Mn ICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCApKiAnLCcpPw0KPiANCj4gKyAgICAgICAg dmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQo+IA0KPiArICAg ICAgICAnZW5kaWYnICgnOycpPw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3Rh dGVtZW50R3JheU91dElmUXVlc3QNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklf SUZSX1NVUFBSRVNTX0lGX09QKV0NCj4gDQo+ICsgICAgOiAgICdncmF5b3V0aWYnIHZmclN0YXRl bWVudEV4cHJlc3Npb24gJzsnDQo+IA0KPiArICAgICAgICAoJ2ZsYWdzJyAnPScgZmxhZ3NGaWVs ZCAoJ3wnIGZsYWdzRmllbGQgKSogJywnKT8NCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudFF1 ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgJ2VuZGlmJyAo JzsnKT8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVu dERlZmF1bHQNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0RFRkFVTFRf T1ApXQ0KPiANCj4gKyAgICA6ICAgRD0nZGVmYXVsdCcNCj4gDQo+ICsgICAgICAgICggICAoICAg dmZyU3RhdGVtZW50VmFsdWUgJywnDQo+IA0KPiArICAgICAgICAgICAgfCAgICc9JyB2ZnJDb25z dGFudFZhbHVlRmllbGQgJywnDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg ICAgICggICAnZGVmYXVsdHN0b3JlJyAnPScgU049U3RyaW5nSWRlbnRpZmllciAnLCcNCj4gDQo+ ICsgICAgICAgICAgICApPw0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICA7DQo+IA0KPiAr DQo+IA0KPiArdmZyU3RhdGVtZW50VmFsdWUNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9k ZShFRklfSUZSX1ZBTFVFX09QKV0NCj4gDQo+ICsgICAgOiAgICd2YWx1ZScgJz0nIHZmclN0YXRl bWVudEV4cHJlc3Npb24NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVu dE9wdGlvbnMNCj4gDQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIHZmclN0YXRlbWVu dE9uZU9mT3B0aW9uDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRP bmVPZk9wdGlvbg0KPiANCj4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfT05FX09G X09QVElPTl9PUCldDQo+IA0KPiArICAgIDogICAnb3B0aW9uJw0KPiANCj4gKyAgICAgICAgJ3Rl eHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ICsgICAgICAg ICd2YWx1ZScgJz0nIHZmckNvbnN0YW50VmFsdWVGaWVsZCAnLCcNCj4gDQo+ICsgICAgICAgIEY9 J2ZsYWdzJyAnPScgdmZyT25lT2ZPcHRpb25GbGFncyAoJywnICdrZXknICc9JyBLTj1OdW1iZXIp ID8gKCcsJw0KPiB2ZnJJbWFnZVRhZykqICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArdmZyT25lT2ZPcHRpb25GbGFncw0KPiANCj4gK2xvY2Fsc1tIRmxhZ3M9MCwgTEZsYWdzPTBd DQo+IA0KPiArICAgIDogICBvbmVvZm9wdGlvbkZsYWdzRmllbGQgKCd8JyBvbmVvZm9wdGlvbkZs YWdzRmllbGQpKjsNCj4gDQo+ICsNCj4gDQo+ICtvbmVvZm9wdGlvbkZsYWdzRmllbGQNCj4gDQo+ ICsJbG9jYWxzW0hGbGFnPTAsIExGbGFnPTBdDQo+IA0KPiArICAgIDogICBOdW1iZXINCj4gDQo+ ICsgICAgfCAgIE9wdGlvbkRlZmF1bHQNCj4gDQo+ICsgICAgfCAgIE9wdGlvbkRlZmF1bHRNZmcN Cj4gDQo+ICsgICAgfCAgIEludGVyYWN0aXZlRmxhZw0KPiANCj4gKyAgICB8ICAgUmVzZXRSZXF1 aXJlZEZsYWcNCj4gDQo+ICsgICAgfCAgIFJlc3RTdHlsZUZsYWcNCj4gDQo+ICsgICAgfCAgIFJl Y29ubmVjdFJlcXVpcmVkRmxhZw0KPiANCj4gKyAgICB8ICAgTWFudWZhY3R1cmluZ0ZsYWcNCj4g DQo+ICsgICAgfCAgIERlZmF1bHRGbGFnDQo+IA0KPiArICAgIHwgICBBPU5WQWNjZXNzRmxhZw0K PiANCj4gKyAgICB8ICAgTD1MYXRlQ2hlY2tGbGFnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4g DQo+ICt2ZnJTdGF0ZW1lbnRSZWFkDQo+IA0KPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJ X0lGUl9SRUFEX09QKV0NCj4gDQo+ICsgICAgOiAgICdyZWFkJyB2ZnJTdGF0ZW1lbnRFeHByZXNz aW9uICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50V3JpdGUN Cj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1dSSVRFX09QKV0NCj4gDQo+ ICsgICAgOiAgICd3cml0ZScgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCj4gDQo+ICsgICAg Ow0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtOb2RlXQ0K PiANCj4gKyAgICA6ICAgKHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uKSoNCj4gDQo+ICsgICAg Ow0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFF1ZXN0aW9u T3B0aW9uDQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiArICAgIDogICB2ZnJTdGF0ZW1lbnRR dWVzdGlvblRhZyB8IHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnDQo+IA0KPiArICAgIDsN Cj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZQ0KPiANCj4gK2xvY2Fsc1tO b2RlXQ0KPiANCj4gKyAgICA6ICAgdmZyU3RhdGVtZW50Q2hlY2tCb3ggfCB2ZnJTdGF0ZW1lbnRB Y3Rpb24NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudENoZWNrQm94 DQo+IA0KPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9DSEVDS0JPWF9PUCksDQo+ IE9wT2JqPUNJZnJDaGVja0JveCgpLCBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05P Uk1BTF0NCj4gDQo+ICsgICAgOiAgIEw9J2NoZWNrYm94Jw0KPiANCj4gKyAgICAgICAgdmZyUXVl c3Rpb25CYXNlSW5mb1tsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGVdDQo+IA0KPiArICAg ICAgICB2ZnJTdGF0ZW1lbnRIZWFkZXJbbG9jYWxjdHguT3BPYmpdICcsJw0KPiANCj4gKyAgICAg ICAgKEY9J2ZsYWdzJyAnPScgdmZyQ2hlY2tCb3hGbGFncyAnLCcpPw0KPiANCj4gKyAgICAgICAg KCdrZXknICc9JyBOdW1iZXIgJywnKT8NCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgJ2VuZGNoZWNrYm94 JyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmckNoZWNrQm94RmxhZ3MNCj4g DQo+ICtsb2NhbHNbTEZsYWdzPTAsIEhGbGFncz0wXQ0KPiANCj4gKyAgICA6ICAgY2hlY2tib3hG bGFnc0ZpZWxkICgnfCcgY2hlY2tib3hGbGFnc0ZpZWxkKSoNCj4gDQo+ICsgICAgOw0KPiANCj4g Kw0KPiANCj4gK2NoZWNrYm94RmxhZ3NGaWVsZA0KPiANCj4gK2xvY2Fsc1tMRmxhZz0wLCBIRmxh Zz0wXQ0KPiANCj4gKyAgICA6ICAgTnVtYmVyDQo+IA0KPiArICAgIHwgICBEPSdERUZBVUxUJw0K PiANCj4gKyAgICB8ICAgTT0nTUFOVUZBQ1RVUklORycNCj4gDQo+ICsgICAgfCAgICdDSEVDS0JP WF9ERUZBVUxUJw0KPiANCj4gKyAgICB8ICAgJ0NIRUNLQk9YX0RFRkFVTFRfTUZHJw0KPiANCj4g KyAgICB8ICAgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkDQo+IA0KPiArICAgIDsNCj4gDQo+ICsN Cj4gDQo+ICt2ZnJTdGF0ZW1lbnRBY3Rpb24NCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9k ZShFRklfSUZSX0FDVElPTl9PUCksT3BPYmo9Q0lmckFjdGlvbigpLA0KPiBRVHlwZT1FRklfUVVF U0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTF0NCj4gDQo+ICsgICAgOiAgICdhY3Rpb24nDQo+IA0K PiArICAgICAgICB2ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5 cGVdICcsJw0KPiANCj4gKyAgICAgICAgKCdmbGFncycgJz0nIHZmckFjdGlvbkZsYWdzICcsJyk/ DQo+IA0KPiArICAgICAgICAnY29uZmlnJyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAn KScgJywnDQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3RbbG9jYWxj dHguTm9kZV0NCj4gDQo+ICsgICAgICAgICdlbmRhY3Rpb24nICc7Jw0KPiANCj4gKyAgICA7DQo+ IA0KPiArDQo+IA0KPiArdmZyQWN0aW9uRmxhZ3MNCj4gDQo+ICtsb2NhbHNbSEZsYWdzPTBdDQo+ IA0KPiArICAgIDogICBhY3Rpb25GbGFnc0ZpZWxkICgnfCcgYWN0aW9uRmxhZ3NGaWVsZCkqDQo+ IA0KPiArICAgIDsNCj4gDQo+ICthY3Rpb25GbGFnc0ZpZWxkDQo+IA0KPiArbG9jYWxzW0hGbGFn PTBdDQo+IA0KPiArICAgIDogICBOPU51bWJlciB8IHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZA0K PiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUNCj4g DQo+ICtsb2NhbHNbTm9kZV0NCj4gDQo+ICsgICAgOiAgIHZmclN0YXRlbWVudE51bWVyaWMgfCB2 ZnJTdGF0ZW1lbnRPbmVPZg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVt ZW50TnVtZXJpYw0KPiANCj4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfTlVNRVJJ Q19PUCksIE9wT2JqPUNJZnJOdW1lcmljKCksDQo+IFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVF U1RJT05fTk9STUFMXQ0KPiANCj4gKyAgICA6ICAgJ251bWVyaWMnDQo+IA0KPiArICAgICAgICB2 ZnJRdWVzdGlvbkJhc2VJbmZvW2xvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0NCj4gDQo+ ICsgICAgICAgIHZmclN0YXRlbWVudEhlYWRlcltsb2NhbGN0eC5PcE9ial0gJywnDQo+IA0KPiAr ICAgICAgICAoRj0nZmxhZ3MnICc9JyB2ZnJOdW1lcmljRmxhZ3MgJywnKT8NCj4gDQo+ICsgICAg ICAgICgna2V5JyAnPScgTnVtYmVyICcsJyk/DQo+IA0KPiArICAgICAgICB2ZnJTZXRNaW5NYXhT dGVwW2xvY2FsY3R4Lk9wT2JqXQ0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25MaXN0W2xvY2FsY3R4Lk5vZGVdDQo+IA0KPiArICAgICAgICAnZW5kbnVtZXJpYycgJzsn DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTZXRNaW5NYXhTdGVwW09wT2JqXSAv LyBDSWZyTWluTWF4U3RlcERhdGENCj4gDQo+ICsgICAgOiAgICdtaW5pbXVtJyAnPScgKE4xPSct Jyk/IEk9TnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgJ21heGltdW0nICc9JyAoTjI9Jy0nKT8g QT1OdW1iZXIgJywnDQo+IA0KPiArICAgICAgICAoJ3N0ZXAnICc9JyBTPU51bWJlciAnLCcpPw0K PiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyTnVtZXJpY0ZsYWdzDQo+IA0KPiArbG9j YWxzW0hGbGFncz0wLCBMRmxhZ3M9MCxJc0Rpc3BsYXlTcGVjaWZpZWQ9RmFsc2VdDQo+IA0KPiAr ICAgIDogICBudW1lcmljRmxhZ3NGaWVsZCAoJ3wnIG51bWVyaWNGbGFnc0ZpZWxkKSoNCj4gDQo+ ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK251bWVyaWNGbGFnc0ZpZWxkDQo+IA0KPiArbG9jYWxz W0hGbGFnPTAsSXNTZXRUeXBlPUZhbHNlLElzRGlzcGxheVNwZWNpZmllZD1GYWxzZV0NCj4gDQo+ ICsgICAgOiAgIE49TnVtYmVyDQo+IA0KPiArICAgIHwgICAnTlVNRVJJQ19TSVpFXzEnDQo+IA0K PiArICAgIHwgICAnTlVNRVJJQ19TSVpFXzInDQo+IA0KPiArICAgIHwgICAnTlVNRVJJQ19TSVpF XzQnDQo+IA0KPiArICAgIHwgICAnTlVNRVJJQ19TSVpFXzgnDQo+IA0KPiArICAgIHwgICAnRElT UExBWV9JTlRfREVDJw0KPiANCj4gKyAgICB8ICAgJ0RJU1BMQVlfVUlOVF9ERUMnDQo+IA0KPiAr ICAgIHwgICAnRElTUExBWV9VSU5UX0hFWCcNCj4gDQo+ICsgICAgfCAgIHF1ZXN0aW9uaGVhZGVy RmxhZ3NGaWVsZA0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50T25l T2YNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX09ORV9PRl9PUCksIE9w T2JqPUNJZnJPbmVPZigpLA0KPiBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1B TF0NCj4gDQo+ICsgICAgOiAgICdvbmVvZicNCj4gDQo+ICsgICAgICAgIHZmclF1ZXN0aW9uQmFz ZUluZm9bbG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlXQ0KPiANCj4gKyAgICAgICAgdmZy U3RhdGVtZW50SGVhZGVyW2xvY2FsY3R4Lk9wT2JqXSAnLCcNCj4gDQo+ICsgICAgICAgIChGPSdm bGFncycgJz0nIHZmck9uZW9mRmxhZ3NGaWVsZCAnLCcpPw0KPiANCj4gKyAgICAgICAgKHZmclNl dE1pbk1heFN0ZXBbbG9jYWxjdHguT3BPYmpdKT8NCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgJ2VuZG9u ZW9mJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3Zmck9uZW9mRmxhZ3NGaWVs ZA0KPiANCj4gK2xvY2Fsc1tIRmxhZ3M9MCwgTEZsYWdzPTBdDQo+IA0KPiArICAgIDogICBudW1l cmljRmxhZ3NGaWVsZCAoJ3wnIG51bWVyaWNGbGFnc0ZpZWxkKSoNCj4gDQo+ICsgICAgOw0KPiAN Cj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFN0cmluZ1R5cGUNCj4gDQo+ICtsb2NhbHNbTm9kZV0N Cj4gDQo+ICsgICAgOiAgIHZmclN0YXRlbWVudFN0cmluZyB8IHZmclN0YXRlbWVudFBhc3N3b3Jk DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRTdHJpbmcNCj4gDQo+ ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX1NUUklOR19PUCksIE9wT2JqPUNJZnJT dHJpbmcoKSwNCj4gUVR5cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQo+IA0K PiArICAgIDogICAnc3RyaW5nJw0KPiANCj4gKyAgICAgICAgdmZyUXVlc3Rpb25IZWFkZXJbbG9j YWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlXSAnLCcNCj4gDQo+ICsgICAgICAgIChGPSdmbGFn cycgJz0nIHZmclN0cmluZ0ZsYWdzRmllbGQgJywnKT8NCj4gDQo+ICsgICAgICAgICgna2V5JyAn PScgTnVtYmVyICcsJyk/DQo+IA0KPiArICAgICAgICBNaW49J21pbnNpemUnICc9JyBOdW1iZXIg JywnDQo+IA0KPiArICAgICAgICBNYXg9J21heHNpemUnICc9JyBOdW1iZXIgJywnDQo+IA0KPiAr ICAgICAgICB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RbbG9jYWxjdHguTm9kZV0NCj4g DQo+ICsgICAgICAgICdlbmRzdHJpbmcnICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArdmZyU3RyaW5nRmxhZ3NGaWVsZA0KPiANCj4gK2xvY2Fsc1tIRmxhZ3M9MCwgTEZsYWdzPTBd DQo+IA0KPiArICAgIDogICBzdHJpbmdGbGFnc0ZpZWxkICgnfCcgc3RyaW5nRmxhZ3NGaWVsZCkq DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtzdHJpbmdGbGFnc0ZpZWxkDQo+IA0KPiAr bG9jYWxzW0hGbGFnPTAsIExGbGFnPTBdDQo+IA0KPiArICAgIDogICBOPU51bWJlcg0KPiANCj4g KyAgICB8ICAgJ01VTFRJX0xJTkUnDQo+IA0KPiArICAgIHwgICBxdWVzdGlvbmhlYWRlckZsYWdz RmllbGQNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFBhc3N3b3Jk DQo+IA0KPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9QQVNTV09SRF9PUCksDQo+ IE9wT2JqPUNJZnJQYXNzd29yZCgpLCBRVHlwZT1FRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05P Uk1BTF0NCj4gDQo+ICsgICAgOiAgICdwYXNzd29yZCcNCj4gDQo+ICsgICAgICAgIHZmclF1ZXN0 aW9uSGVhZGVyW2xvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0nLCcNCj4gDQo+ICsgICAg ICAgIChGPSdmbGFncycgJz0nIHZmclBhc3N3b3JkRmxhZ3NGaWVsZCAnLCcpPw0KPiANCj4gKyAg ICAgICAgKCdrZXknICc9JyBOdW1iZXIgJywnKT8NCj4gDQo+ICsgICAgICAgIE1pbj0nbWluc2l6 ZScgJz0nIE51bWJlciAnLCcNCj4gDQo+ICsgICAgICAgIE1heD0nbWF4c2l6ZScgJz0nIE51bWJl ciAnLCcNCj4gDQo+ICsgICAgICAgICgnZW5jb2RpbmcnICc9JyBOdW1iZXIgJywnKT8NCj4gDQo+ ICsgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdFtsb2NhbGN0eC5Ob2RlXQ0K PiANCj4gKyAgICAgICAgJ2VuZHBhc3N3b3JkJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0K PiANCj4gK3ZmclBhc3N3b3JkRmxhZ3NGaWVsZA0KPiANCj4gK2xvY2Fsc1tIRmxhZ3M9MF0NCj4g DQo+ICsgICAgOiAgIHBhc3N3b3JkRmxhZ3NGaWVsZCgnfCcgcGFzc3dvcmRGbGFnc0ZpZWxkKSoN Cj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3Bhc3N3b3JkRmxhZ3NGaWVsZA0KPiANCj4g K2xvY2Fsc1tIRmxhZz0wXQ0KPiANCj4gKyAgICA6ICAgTnVtYmVyDQo+IA0KPiArICAgIHwgICBx dWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3Zm clN0YXRlbWVudE9yZGVyZWRMaXN0DQo+IA0KPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJ X0lGUl9PUkRFUkVEX0xJU1RfT1ApLA0KPiBPcE9iaj1DSWZyT3JkZXJlZExpc3QoKSwgUVR5cGU9 RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUxdDQo+IA0KPiArICAgIDogICAnb3JkZXJl ZGxpc3QnDQo+IA0KPiArICAgICAgICB2ZnJRdWVzdGlvbkhlYWRlcltsb2NhbGN0eC5PcE9iaiwg bG9jYWxjdHguUVR5cGVdICcsJw0KPiANCj4gKyAgICAgICAgKE09J21heGNvbnRhaW5lcnMnICc9 JyBOdW1iZXIgJywnKT8NCj4gDQo+ICsgICAgICAgIChGPSdmbGFncycgJz0nIHZmck9yZGVyZWRM aXN0RmxhZ3MgJywnKT8NCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdFtsb2NhbGN0eC5Ob2RlXQ0KPiANCj4gKyAgICAgICAgJ2VuZGxpc3QnICc7Jw0KPiANCj4g KyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyT3JkZXJlZExpc3RGbGFncw0KPiANCj4gK2xvY2Fs c1tIRmxhZ3M9MCwgTEZsYWdzPTBdDQo+IA0KPiArICAgIDogICBvcmRlcmVkbGlzdEZsYWdzRmll bGQgKCd8JyBvcmRlcmVkbGlzdEZsYWdzRmllbGQpKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+ IA0KPiArb3JkZXJlZGxpc3RGbGFnc0ZpZWxkDQo+IA0KPiArbG9jYWxzW0hGbGFnPTAsIExGbGFn PTBdDQo+IA0KPiArICAgIDogICBOdW1iZXINCj4gDQo+ICsgICAgfCAgICdVTklRVUUnDQo+IA0K PiArICAgIHwgICAnTk9FTVBUWScNCj4gDQo+ICsgICAgfCAgIHF1ZXN0aW9uaGVhZGVyRmxhZ3NG aWVsZA0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50RGF0ZQ0KPiAN Cj4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfREFURV9PUCksIE9wT2JqPUNJZnJE YXRlKCksDQo+IFFUeXBlPUVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURSwgVmFsPUVGSV9J RlJfVFlQRV9WQUxVRSgpXQ0KPiANCj4gKyAgICA6ICAgJ2RhdGUnDQo+IA0KPiArICAgICAgICAo ICAgKCAgIHZmclF1ZXN0aW9uSGVhZGVyW2xvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0g JywnDQo+IA0KPiArICAgICAgICAgICAgICAgIChGMT0nZmxhZ3MnICc9JyB2ZnJEYXRlRmxhZ3Mg JywnKT8NCj4gDQo+ICsgICAgICAgICAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25M aXN0W2xvY2FsY3R4Lk5vZGVdDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAg ICAgIHwNCj4gDQo+ICsgICAgICAgICAgICAoICAgJ3llYXInICd2YXJpZCcgJz0nIFN0cmluZ0lk ZW50aWZpZXIgJy4nIFN0cmluZ0lkZW50aWZpZXIgJywnDQo+IA0KPiArICAgICAgICAgICAgICAg ICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ICsg ICAgICAgICAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAn LCcNCj4gDQo+ICsgICAgICAgICAgICAgICAgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0W2xvY2FsY3R4 LlZhbC5kYXRlLCAwXQ0KPiANCj4gKyAgICAgICAgICAgICAgICAnbW9udGgnICd2YXJpZCcgJz0n IFN0cmluZ0lkZW50aWZpZXIgJy4nIFN0cmluZ0lkZW50aWZpZXIgJywnDQo+IA0KPiArICAgICAg ICAgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcN Cj4gDQo+ICsgICAgICAgICAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVt YmVyICcpJyAnLCcNCj4gDQo+ICsgICAgICAgICAgICAgICAgbWluTWF4RGF0ZVN0ZXBEZWZhdWx0 W2xvY2FsY3R4LlZhbC5kYXRlLCAxXQ0KPiANCj4gKyAgICAgICAgICAgICAgICAnZGF5JyAndmFy aWQnICc9JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KPiANCj4g KyAgICAgICAgICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAn KScgJywnDQo+IA0KPiArICAgICAgICAgICAgICAgICdoZWxwJyAnPScgJ1NUUklOR19UT0tFTicg JygnIE51bWJlciAnKScgJywnDQo+IA0KPiArICAgICAgICAgICAgICAgIG1pbk1heERhdGVTdGVw RGVmYXVsdFtsb2NhbGN0eC5WYWwuZGF0ZSwgMl0NCj4gDQo+ICsgICAgICAgICAgICAgICAgKEYy PSdmbGFncycgJz0nIHZmckRhdGVGbGFncyAnLCcpPw0KPiANCj4gKyAgICAgICAgICAgICAgICAo dmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWYpKg0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ ICsgICAgICAgICkNCj4gDQo+ICsgICAgICAgICdlbmRkYXRlJyAnOycNCj4gDQo+ICsgICAgOw0K PiANCj4gKw0KPiANCj4gK21pbk1heERhdGVTdGVwRGVmYXVsdFtEYXRlLCBLZXlWYWx1ZV0NCj4g DQo+ICsgICAgOiAgICdtaW5pbXVtJyAnPScgTnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgJ21h eGltdW0nICc9JyBOdW1iZXIgJywnDQo+IA0KPiArICAgICAgICAoJ3N0ZXAnICc9JyBOdW1iZXIg JywnKT8NCj4gDQo+ICsgICAgICAgICgnZGVmYXVsdCcgJz0nIE49TnVtYmVyICcsJyk/DQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJEYXRlRmxhZ3MNCj4gDQo+ICtsb2NhbHNbTEZs YWdzPTBdDQo+IA0KPiArICAgIDogICBkYXRlRmxhZ3NGaWVsZCAoJ3wnIGRhdGVGbGFnc0ZpZWxk KSoNCj4gDQo+ICsgICAgOw0KPiANCj4gK2RhdGVGbGFnc0ZpZWxkDQo+IA0KPiArbG9jYWxzW0xG bGFnPTBdDQo+IA0KPiArICAgIDogICBOdW1iZXINCj4gDQo+ICsgICAgfCAgICdZRUFSX1NVUFBS RVNTJw0KPiANCj4gKyAgICB8ICAgJ01PTlRIX1NVUFBSRVNTJw0KPiANCj4gKyAgICB8ICAgJ0RB WV9TVVBQUkVTUycNCj4gDQo+ICsgICAgfCAgICdTVE9SQUdFX05PUk1BTCcNCj4gDQo+ICsgICAg fCAgICdTVE9SQUdFX1RJTUUnDQo+IA0KPiArICAgIHwgICAnU1RPUkFHRV9XQUtFVVAnDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRUaW1lDQo+IA0KPiArbG9jYWxz W05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9USU1FX09QKSwgT3BPYmo9Q0lmclRpbWUoKSwNCj4g UVR5cGU9RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FLCAgVmFsPUVGSV9JRlJfVFlQRV9W QUxVRSgpXQ0KPiANCj4gKyAgICA6ICAgJ3RpbWUnDQo+IA0KPiArICAgICAgICAoICAgKCAgIHZm clF1ZXN0aW9uSGVhZGVyW2xvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZV0gJywnDQo+IA0K PiArICAgICAgICAgICAgICAgIChGMT0nZmxhZ3MnICc9JyB2ZnJUaW1lRmxhZ3MgJywnKT8NCj4g DQo+ICsgICAgICAgICAgICAgICAgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0W2xvY2Fs Y3R4Lk5vZGVdDQo+IA0KPiArICAgICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgICAgIHwNCj4g DQo+ICsgICAgICAgICAgICAoDQo+IA0KPiArICAgICAgICAgICAgICAgICdob3VyJyAndmFyaWQn ICc9JyBTdHJpbmdJZGVudGlmaWVyICcuJyBTdHJpbmdJZGVudGlmaWVyICcsJw0KPiANCj4gKyAg ICAgICAgICAgICAgICAncHJvbXB0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScg JywnDQo+IA0KPiArICAgICAgICAgICAgICAgICdoZWxwJyAnPScgJ1NUUklOR19UT0tFTicgJygn IE51bWJlciAnKScgJywnDQo+IA0KPiArICAgICAgICAgICAgICAgIG1pbk1heFRpbWVTdGVwRGVm YXVsdFtsb2NhbGN0eC5WYWwudGltZSwgMF0NCj4gDQo+ICsgICAgICAgICAgICAgICAgJ21pbnV0 ZScgJ3ZhcmlkJyAnPScgU3RyaW5nSWRlbnRpZmllciAnLicgU3RyaW5nSWRlbnRpZmllciAnLCcN Cj4gDQo+ICsgICAgICAgICAgICAgICAgJ3Byb21wdCcgJz0nICdTVFJJTkdfVE9LRU4nICcoJyBO dW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgICAgICAgICAnaGVscCcgJz0nICdTVFJJTkdf VE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgICAgICAgICBtaW5NYXhU aW1lU3RlcERlZmF1bHRbbG9jYWxjdHguVmFsLnRpbWUsIDFdDQo+IA0KPiArICAgICAgICAgICAg ICAgICdzZWNvbmQnICd2YXJpZCcgJz0nIFN0cmluZ0lkZW50aWZpZXIgJy4nIFN0cmluZ0lkZW50 aWZpZXIgJywnDQo+IA0KPiArICAgICAgICAgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RP S0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ICsgICAgICAgICAgICAgICAgJ2hlbHAnICc9 JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ICsgICAgICAgICAgICAg ICAgbWluTWF4VGltZVN0ZXBEZWZhdWx0W2xvY2FsY3R4LlZhbC50aW1lLCAyXQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAoRjI9J2ZsYWdzJyAnPScgdmZyVGltZUZsYWdzICcsJyk/DQo+IA0KPiAr ICAgICAgICAgICAgICAgICh2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZikqDQo+IA0KPiArICAg ICAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4gKyAgICAgICAgJ2VuZHRpbWUnICc7 Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArbWluTWF4VGltZVN0ZXBEZWZhdWx0W1Rp bWUsIEtleVZhbHVlXQ0KPiANCj4gKyAgICA6ICAgJ21pbmltdW0nICc9JyBOdW1iZXIgJywnDQo+ IA0KPiArICAgICAgICAnbWF4aW11bScgJz0nIE51bWJlciAnLCcNCj4gDQo+ICsgICAgICAgICgn c3RlcCcgJz0nIE51bWJlciAnLCcpPw0KPiANCj4gKyAgICAgICAgKCdkZWZhdWx0JyAnPScgTj1O dW1iZXIgJywnKT8NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclRpbWVGbGFncw0K PiANCj4gK2xvY2Fsc1tMRmxhZ3M9MF0NCj4gDQo+ICsgICAgOiAgIHRpbWVGbGFnc0ZpZWxkICgn fCcgdGltZUZsYWdzRmllbGQpKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdGltZUZs YWdzRmllbGQNCj4gDQo+ICtsb2NhbHNbTEZsYWc9MF0NCj4gDQo+ICsgICAgOiAgIE51bWJlcg0K PiANCj4gKyAgICB8ICAgJ0hPVVJfU1VQUFJFU1MnDQo+IA0KPiArICAgIHwgICAnTUlOVVRFX1NV UFBSRVNTJw0KPiANCj4gKyAgICB8ICAgJ1NFQ09ORF9TVVBQUkVTUycNCj4gDQo+ICsgICAgfCAg ICdTVE9SQUdFX05PUk1BTCcNCj4gDQo+ICsgICAgfCAgICdTVE9SQUdFX1RJTUUnDQo+IA0KPiAr ICAgIHwgICAnU1RPUkFHRV9XQUtFVVAnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2 ZnJTdGF0ZW1lbnRDb25kaXRpb25hbA0KPiANCj4gK2xvY2Fsc1tOb2RlXQ0KPiANCj4gKyAgICA6 ICAgdmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdA0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50 U3VwcHJlc3NJZlN0YXQgLy9lbmhhbmNlIHRvIGJlIGNvbXBhdGlibGUgZm9yDQo+IGZyYW1ld29y ayBlbmRpZg0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdA0KPiANCj4g KyAgICB8ICAgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0ICAgLy90byBiZSBjb21wYXRp YmxlIGZvciBmcmFtZXdvcmsNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gKy8vIG5ldyBz ZWVtcyB0byBiZSB0aGUgc2FtZSBhcyB0aGUgb2xkLCB3aHkgbmV3Pw0KPiANCj4gK3ZmclN0YXRl bWVudENvbmRpdGlvbmFsTmV3DQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiArICAgIDogICB2 ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0DQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRTdXBw cmVzc0lmU3RhdE5ldw0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5l dw0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0ICAgLy90byBi ZSBjb21wYXRpYmxlIGZvciBmcmFtZXdvcmsNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4g K3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0DQo+IA0KPiArbG9jYWxzW05vZGVdDQo+IA0KPiAr ICAgIDogICB2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldw0KPiANCj4gKyAgICA7DQo+IA0K PiArDQo+IA0KPiArdmZyU3RhdGVtZW50R3JheU91dElmU3RhdA0KPiANCj4gK2xvY2Fsc1tOb2Rl XQ0KPiANCj4gKyAgICA6ICAgdmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldw0KPiANCj4gKyAg ICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50U3RhdExpc3QNCj4gDQo+ICtsb2NhbHNb Tm9kZV0NCj4gDQo+ICsgICAgOiAgIHZmclN0YXRlbWVudFN0YXQNCj4gDQo+ICsgICAgfCAgIHZm clN0YXRlbWVudFF1ZXN0aW9ucw0KPiANCj4gKyAgICB8ICAgdmZyU3RhdGVtZW50Q29uZGl0aW9u YWwNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudExhYmVsDQo+IA0KPiArICAgIHwgICB2ZnJT dGF0ZW1lbnRFeHRlbnNpb24NCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudEludmFsaWQNCj4g DQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudFN0YXRMaXN0T2xkDQo+IA0K PiArICAgIDogICB2ZnJTdGF0ZW1lbnRTdGF0DQo+IA0KPiArICAgIHwgICB2ZnJTdGF0ZW1lbnRR dWVzdGlvbnMNCj4gDQo+ICsgICAgfCAgIHZmclN0YXRlbWVudExhYmVsDQo+IA0KPiArICAvLyBK dXN0IGZvciBmcmFtZXdvcmsgdmZyIGNvbXBhdGliaWxpdHkNCj4gDQo+ICsgICAgfCAgIHZmclN0 YXRlbWVudEludmFsaWQNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVu dERpc2FibGVJZlN0YXQNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0RJ U0FCTEVfSUZfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ2Rpc2FibGVpZicgdmZyU3RhdGVtZW50RXhw cmVzc2lvbiAnOycNCj4gDQo+ICsgICAgICAgICh2ZnJTdGF0ZW1lbnRTdGF0TGlzdCkqDQo+IA0K PiArICAgICAgICAnZW5kaWYnICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArLy8gQ29tcGF0aWJsZSBmb3IgZnJhbWV3b3JrIHZmciBmaWxlDQo+IA0KPiArLy8NCj4g DQo+ICt2ZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmDQo+IA0KPiArICAgIDogICAnc3Vw cHJlc3NpZicNCj4gDQo+ICsgICAgICAgICgnZmxhZ3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxh Z3NGaWVsZCkqICcsJyk/DQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uICc7 Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50c3VwcHJlc3NJZkdy YXlPdXRJZg0KPiANCj4gKyAgICA6ICAgJ2dyYXlvdXRpZicNCj4gDQo+ICsgICAgICAgICgnZmxh Z3MnICc9JyBmbGFnc0ZpZWxkICgnfCcgZmxhZ3NGaWVsZCkqICcsJyk/DQo+IA0KPiArICAgICAg ICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uICc7Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXcNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJU cmVlTm9kZShFRklfSUZSX1NVUFBSRVNTX0lGX09QKV0NCj4gDQo+ICsgICAgOiAgICdzdXBwcmVz c2lmJw0KPiANCj4gKyAgICAgICAgKCdmbGFncycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0Zp ZWxkKSogJywnKT8NCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24gJzsnDQo+ IA0KPiArICAgICAgICAodmZyU3RhdGVtZW50U3RhdExpc3QpKg0KPiANCj4gKyAgICAgICAgJ2Vu ZGlmJyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudEdyYXlP dXRJZlN0YXROZXcNCj4gDQo+ICtsb2NhbHNbTm9kZT1WZnJUcmVlTm9kZShFRklfSUZSX0dSQVlf T1VUX0lGX09QKV0NCj4gDQo+ICsgICAgOiAgICdncmF5b3V0aWYnDQo+IA0KPiArICAgICAgICAo J2ZsYWdzJyAnPScgZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQpKiAnLCcpPw0KPiANCj4gKyAg ICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbiAnOycNCj4gDQo+ICsgICAgICAgICh2ZnJTdGF0 ZW1lbnRTdGF0TGlzdCkqDQo+IA0KPiArICAgICAgICAnZW5kaWYnICc7Jw0KPiANCj4gKyAgICA7 DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0DQo+IA0KPiAr bG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJX0lGUl9JTkNPTlNJU1RFTlRfSUZfT1ApXQ0KPiAN Cj4gKyAgICA6ICAgJ2luY29uc2lzdGVudGlmJw0KPiANCj4gKyAgICAgICAgJ3Byb21wdCcgJz0n ICdTVFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgKCdmbGFn cycgJz0nIGZsYWdzRmllbGQgKCd8JyBmbGFnc0ZpZWxkKSogJywnKT8NCj4gDQo+ICsgICAgICAg IHZmclN0YXRlbWVudEV4cHJlc3Npb24NCj4gDQo+ICsgICAgICAgICdlbmRpZicgJzsnDQo+IA0K PiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJTdGF0ZW1lbnRJbnZhbGlkIC8vIGZvciBjb21w YXRpYmlsaXR5DQo+IA0KPiArICAgIDogICB2ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuDQo+IA0K PiArICAgIHwgICB2ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5DQo+IA0KPiArICAgIHwgICB2 ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cw0KPiANCj4gKyAgICA7DQo+IA0K PiArDQo+IA0KPiArdmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbg0KPiANCj4gKyAgICA6ICAgJ2hp ZGRlbicNCj4gDQo+ICsgICAgICAgICd2YWx1ZScgJz0nIE51bWJlciAnLCcNCj4gDQo+ICsgICAg ICAgICdrZXknICc9JyBOdW1iZXIgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2 ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5DQo+IA0KPiArICAgIDogICAnaW52ZW50b3J5Jw0K PiANCj4gKyAgICAgICAgJ2hlbHAnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVtYmVyICcpJyAn LCcNCj4gDQo+ICsgICAgICAgICd0ZXh0JyAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAn KScgJywnDQo+IA0KPiArICAgICAgICAoJ3RleHQnICc9JyAnU1RSSU5HX1RPS0VOJyAnKCcgTnVt YmVyICcpJyk/DQo+IA0KPiArICAgICAgICAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiAN Cj4gK3ZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzDQo+IA0KPiArICAgIDog ICAoICAgJ3NhdmUnDQo+IA0KPiArICAgICAgICB8ICAgJ3Jlc3RvcmUnDQo+IA0KPiArICAgICAg ICApDQo+IA0KPiArICAgICAgICAnZGVmYXVsdHMnICcsJw0KPiANCj4gKyAgICAgICAgJ2Zvcm1p ZCcgJz0nIE51bWJlciAnLCcNCj4gDQo+ICsgICAgICAgICdwcm9tcHQnICc9JyAnU1RSSU5HX1RP S0VOJyAnKCcgTnVtYmVyICcpJyAnLCcNCj4gDQo+ICsgICAgICAgICdoZWxwJyAnPScgJ1NUUklO R19UT0tFTicgJygnIE51bWJlciAnKScNCj4gDQo+ICsgICAgICAgICgnLCcgJ2ZsYWdzJyAnPScg ZmxhZ3NGaWVsZCAoJ3wnIGZsYWdzRmllbGQpKik/DQo+IA0KPiArICAgICAgICAoJywnICdrZXkn ICc9JyBOdW1iZXIpPw0KPiANCj4gKyAgICAgICAgJzsnDQo+IA0KPiArICAgIDsNCj4gDQo+ICt2 ZnJTdGF0ZW1lbnRMYWJlbA0KPiANCj4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJf R1VJRF9PUCldDQo+IA0KPiArICAgIDogICAnbGFiZWwnIE51bWJlciAnOycNCj4gDQo+ICsgICAg Ow0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudEJhbm5lciAvLyBJcyBUaW1lT3V0IG5lZWRl ZA0KPiANCj4gK2xvY2Fsc1tOb2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCldDQo+IA0K PiArICAgIDogICAnYmFubmVyJyAoJywnKT8NCj4gDQo+ICsgICAgICAgICd0aXRsZScgJz0nICdT VFJJTkdfVE9LRU4nICcoJyBOdW1iZXIgJyknICcsJw0KPiANCj4gKyAgICAgICAgKCAgICggICAn bGluZScgTnVtYmVyICcsJw0KPiANCj4gKyAgICAgICAgICAgICAgICAnYWxpZ24nICgnbGVmdCcg fCAnY2VudGVyJyB8ICdyaWdodCcpICc7Jw0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsg ICAgICAgICAgICB8DQo+IA0KPiArICAgICAgICAgICAgKCAgICd0aW1lb3V0JyAnPScgTnVtYmVy ICc7Jw0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICkNCj4gDQo+ICsgICAg Ow0KPiANCj4gKw0KPiANCj4gK3ZmclN0YXRlbWVudEV4dGVuc2lvbg0KPiANCj4gK2xvY2Fsc1tO b2RlPVZmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCksIERhdGFCdWZmLCBTaXplPTAsDQo+IFR5 cGVOYW1lPScnLCBUeXBlU2l6ZT0wLCBJc1N0cnVjdD1GYWxzZSwgQXJyYXlOdW09MF0NCj4gDQo+ ICsgICAgOiAgICdndWlkb3AnDQo+IA0KPiArICAgICAgICAnZ3VpZCcgJz0nIGd1aWREZWZpbml0 aW9uDQo+IA0KPiArICAgICAgICAoICAgJywnIEQ9J2RhdGF0eXBlJyAnPScNCj4gDQo+ICsgICAg ICAgICAgICAoICAgJ1VJTlQ2NCcgKCdbJyBOdW1iZXIgJ10nKT8NCj4gDQo+ICsgICAgICAgICAg ICB8ICAgJ1VJTlQzMicgKCdbJyBOdW1iZXIgJ10nKT8NCj4gDQo+ICsgICAgICAgICAgICB8ICAg J1VJTlQxNicgKCdbJyBOdW1iZXIgJ10nKT8NCj4gDQo+ICsgICAgICAgICAgICB8ICAgJ1VJTlQ4 JyAoJ1snIE51bWJlciAnXScpPw0KPiANCj4gKyAgICAgICAgICAgIHwgICAnQk9PTEVBTicgKCdb JyBOdW1iZXIgJ10nKT8NCj4gDQo+ICsgICAgICAgICAgICB8ICAgJ0VGSV9TVFJJTkdfSUQnICgn WycgTnVtYmVyICddJyk/DQo+IA0KPiArICAgICAgICAgICAgfCAgICdFRklfSElJX0RBVEUnICgn WycgTnVtYmVyICddJyk/DQo+IA0KPiArICAgICAgICAgICAgfCAgICdFRklfSElJX1RJTUUnICgn WycgTnVtYmVyICddJyk/DQo+IA0KPiArICAgICAgICAgICAgfCAgICdFRklfSElJX1JFRicgKCdb JyBOdW1iZXIgJ10nKT8NCj4gDQo+ICsgICAgICAgICAgICB8ICAgU3RyaW5nSWRlbnRpZmllciAo J1snIE51bWJlciAnXScpPw0KPiANCj4gKyAgICAgICAgICAgICkNCj4gDQo+ICsgICAgICAgICAg ICAodmZyRXh0ZW5zaW9uRGF0YVtsb2NhbGN0eC5EYXRhQnVmZl0pKg0KPiANCj4gKyAgICAgICAg KT8NCj4gDQo+ICsgICAgICAgICgNCj4gDQo+ICsgICAgICAgICAgICAnLCcgKHZmclN0YXRlbWVu dEV4dGVuc2lvbikqDQo+IA0KPiArICAgICAgICAgICAgJ2VuZGd1aWRvcCcNCj4gDQo+ICsgICAg ICAgICk/DQo+IA0KPiArICAgICAgICAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gK3ZmckV4dGVuc2lvbkRhdGFbRGF0YUJ1ZmZdDQo+IA0KPiArbG9jYWxzW0lzU3Ry dWN0XQ0KPiANCj4gKyAgICA6ICAgJywnICdkYXRhJyAoJ1snIE51bWJlciAnXScpPw0KPiANCj4g KyAgICAgICAgKCAnLicgYXJyYXlOYW1lKSogICc9JyBOPU51bWJlcg0KPiANCj4gKyAgICA7DQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50TW9kYWwNCj4gDQo+ICtsb2NhbHNb Tm9kZV0NCj4gDQo+ICsgICAgOiB2ZnJNb2RhbFRhZyAnOycNCj4gDQo+ICsgICAgOw0KPiANCj4g Kw0KPiANCj4gK3Zmck1vZGFsVGFnDQo+IA0KPiArbG9jYWxzW05vZGU9VmZyVHJlZU5vZGUoRUZJ X0lGUl9NT0RBTF9UQUdfT1ApXQ0KPiANCj4gKyAgICA6ICAgJ21vZGFsJw0KPiANCj4gKyAgICA7 DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50RXhwcmVzc2lvbg0KPiANCj4gK2xvY2Fsc1tF eHBJbmZvPUV4cHJlc3Npb25JbmZvKCldDQo+IA0KPiArICAgIDogICBhbmRUZXJtW2xvY2FsY3R4 LkV4cEluZm9dICgnT1InIGFuZFRlcm1bbG9jYWxjdHguRXhwSW5mb10pKg0KPiANCj4gKyAgICA7 DQo+IA0KPiArDQo+IA0KPiArdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KPiANCj4gK2xvY2Fs c1tFeHBJbmZvPUV4cHJlc3Npb25JbmZvKCldDQo+IA0KPiArICAgIDogICBhbmRUZXJtW2xvY2Fs Y3R4LkV4cEluZm9dICgnT1InIGFuZFRlcm1bbG9jYWxjdHguRXhwSW5mb10pKg0KPiANCj4gKyAg ICA7DQo+IA0KPiArDQo+IA0KPiArYW5kVGVybVtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tDSWZy QW5kTGlzdD1bXV0NCj4gDQo+ICsgICAgOiAgIGJpdHdpc2VvclRlcm1bRXhwSW5mb10gKCdBTkQn IGJpdHdpc2VvclRlcm1bRXhwSW5mb10pKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiAr Yml0d2lzZW9yVGVybVtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tDSWZyQml0V2lzZU9yTGlzdD1b XV0NCj4gDQo+ICsgICAgOiAgIGJpdHdpc2VhbmRUZXJtW0V4cEluZm9dICgnfCcgYml0d2lzZWFu ZFRlcm1bRXhwSW5mb10pKg0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Yml0d2lzZWFuZFRlcm1bRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbQ0lmckJpdFdpc2VBbmRMaXN0 PVtdXQ0KPiANCj4gKyAgICA6ICAgZXF1YWxUZXJtW0V4cEluZm9dICgnJicgZXF1YWxUZXJtW0V4 cEluZm9dKSoNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2VxdWFsVGVy bVtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tDSWZyRXF1YWxMaXN0PVtdLCBDSWZyTm90RXF1YWxM aXN0PVtdXQ0KPiANCj4gKyAgICA6ICAgY29tcGFyZVRlcm1bbG9jYWxjdHguRXhwSW5mb10NCj4g DQo+ICsgICAgICAgIChlcXVhbFRlcm1TdXBwbGVtZW50YXJ5W2xvY2FsY3R4LkNJZnJFcXVhbExp c3QsDQo+IGxvY2FsY3R4LkNJZnJOb3RFcXVhbExpc3QsIEV4cEluZm9dKSoNCj4gDQo+ICsgICAg Ow0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2VxdWFsVGVybVN1cHBsZW1lbnRhcnlbQ0lmckVx dWFsTGlzdCwgQ0lmck5vdEVxdWFsTGlzdCwgRXhwSW5mb10NCj4gDQo+ICsgICAgOiAgICgnPT0n IGNvbXBhcmVUZXJtW0V4cEluZm9dKSAgIyBlcXVhbFRlcm1FcXVhbFJ1bGUNCj4gDQo+ICsgICAg ICAgIHwNCj4gDQo+ICsgICAgICAgICgnIT0nIGNvbXBhcmVUZXJtW0V4cEluZm9dKSAjIGVxdWFs VGVybU5vdEVxdWFsUnVsZQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArY29tcGFyZVRl cm1bRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbQ0lmckxlc3NUaGFuTGlzdD1bXSwgQ0lmckxlc3NF cXVhbExpc3Q9W10sIENJZnJHcmVhdGVyVGhhbkxpc3Q9W10sDQo+IENJZnJHcmVhdGVyRXF1YWxM aXN0PVtdXQ0KPiANCj4gKyAgICA6ICAgc2hpZnRUZXJtW0V4cEluZm9dDQo+IA0KPiArICAgICAg ICAoY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5W2xvY2FsY3R4LkNJZnJMZXNzVGhhbkxpc3QsDQo+ IGxvY2FsY3R4LkNJZnJMZXNzRXF1YWxMaXN0LCBsb2NhbGN0eC5DSWZyR3JlYXRlclRoYW5MaXN0 LA0KPiBsb2NhbGN0eC5DSWZyR3JlYXRlckVxdWFsTGlzdCwgRXhwSW5mb10pKg0KPiANCj4gKyAg ICA7DQo+IA0KPiArDQo+IA0KPiArY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5W0NJZnJMZXNzVGhh bkxpc3QsIENJZnJMZXNzRXF1YWxMaXN0LA0KPiBDSWZyR3JlYXRlclRoYW5MaXN0LCBDSWZyR3Jl YXRlckVxdWFsTGlzdCwgRXhwSW5mb10NCj4gDQo+ICsgICAgOiAgICgnPCcgc2hpZnRUZXJtW0V4 cEluZm9dKSAgICMgY29tcGFyZVRlcm1MZXNzUnVsZQ0KPiANCj4gKyAgICAgICAgfA0KPiANCj4g KyAgICAgICAgKCc8PScgc2hpZnRUZXJtW0V4cEluZm9dKSAgIyAgY29tcGFyZVRlcm1MZXNzRXF1 YWxSdWxlDQo+IA0KPiArICAgICAgICB8DQo+IA0KPiArICAgICAgICAoJz4nIHNoaWZ0VGVybVtF eHBJbmZvXSkgICAjICBjb21wYXJlVGVybUdyZWF0ZXJSdWxlDQo+IA0KPiArICAgICAgICB8DQo+ IA0KPiArICAgICAgICAoJz49JyBzaGlmdFRlcm1bRXhwSW5mb10pICAjICBjb21wYXJlVGVybUdy ZWF0ZXJFcXVhbFJ1bGUNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3NoaWZ0VGVybVtF eHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tDSWZyU2hpZnRMZWZ0TGlzdD1bXSwgQ0lmclNoaWZ0Umln aHRMaXN0PVtdXQ0KPiANCj4gKyAgICA6ICAgYWRkTWludXNUZXJtW0V4cEluZm9dDQo+IA0KPiAr ICAgICAgICAoc2hpZnRUZXJtU3VwcGxlbWVudGFyeVtsb2NhbGN0eC5DSWZyU2hpZnRMZWZ0TGlz dCwNCj4gbG9jYWxjdHguQ0lmclNoaWZ0UmlnaHRMaXN0LCBFeHBJbmZvXSkqDQo+IA0KPiArICAg IDsNCj4gDQo+ICsNCj4gDQo+ICtzaGlmdFRlcm1TdXBwbGVtZW50YXJ5W0NJZnJTaGlmdExlZnRM aXN0LCBDSWZyU2hpZnRSaWdodExpc3QsIEV4cEluZm9dDQo+IA0KPiArICAgIDogICAoJzw8JyBh ZGRNaW51c1Rlcm1bRXhwSW5mb10pICAjIHNoaWZ0VGVybUxlZnQNCj4gDQo+ICsgICAgICAgIHwN Cj4gDQo+ICsgICAgICAgICgnPj4nIGFkZE1pbnVzVGVybVtFeHBJbmZvXSkgIyBzaGlmdFRlcm1S aWdodA0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArYWRkTWludXNUZXJtW0V4cEluZm9d DQo+IA0KPiArbG9jYWxzW0NJZnJBZGRMaXN0PVtdLCBDSWZyU3VidHJhY3RMaXN0PVtdXQ0KPiAN Cj4gKyAgICA6ICAgbXVsdGRpdm1vZFRlcm1bRXhwSW5mb10NCj4gDQo+ICsgICAgICAgIChhZGRN aW51c1Rlcm1TdXBwbGVtZW50YXJ5W2xvY2FsY3R4LkNJZnJBZGRMaXN0LA0KPiBsb2NhbGN0eC5D SWZyU3VidHJhY3RMaXN0LCBFeHBJbmZvXSkqDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ ICthZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5W0NJZnJBZGRMaXN0LCBDSWZyU3VidHJhY3RMaXN0 LCBFeHBJbmZvXQ0KPiANCj4gKyAgICA6ICAgKCcrJyBtdWx0ZGl2bW9kVGVybVtFeHBJbmZvXSkg IyBhZGRNaW51c1Rlcm1wQWRkDQo+IA0KPiArICAgICAgICB8DQo+IA0KPiArICAgICAgICAoJy0n IG11bHRkaXZtb2RUZXJtW0V4cEluZm9dKSAjIGFkZE1pbnVzVGVybVN1YnRyYWN0DQo+IA0KPiAr ICAgIDsNCj4gDQo+ICsNCj4gDQo+ICttdWx0ZGl2bW9kVGVybVtFeHBJbmZvXQ0KPiANCj4gK2xv Y2Fsc1tDSWZyTXVsdGlwbHlMaXN0PVtdLCBDSWZyRGl2aWRlTGlzdD1bXSwgQ0lmck1vZHVsb0xp c3Q9W11dDQo+IA0KPiArICAgIDogICBjYXN0VGVybVtFeHBJbmZvXQ0KPiANCj4gKyAgICAgICAg KG11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeVtsb2NhbGN0eC5DSWZyTXVsdGlwbHlMaXN0LA0K PiBsb2NhbGN0eC5DSWZyRGl2aWRlTGlzdCwgbG9jYWxjdHguQ0lmck1vZHVsb0xpc3QsIEV4cElu Zm9dKSoNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK211bHRkaXZtb2RUZXJtU3VwcGxl bWVudGFyeVtDSWZyTXVsdGlwbHlMaXN0LCBDSWZyRGl2aWRlTGlzdCwNCj4gQ0lmck1vZHVsb0xp c3QsIEV4cEluZm9dDQo+IA0KPiArICAgIDogICAoJyonIGNhc3RUZXJtW0V4cEluZm9dKSAjIG11 bHRkaXZtb2RUZXJtTXVsDQo+IA0KPiArICAgICAgICB8DQo+IA0KPiArICAgICAgICAoJy8nIGNh c3RUZXJtW0V4cEluZm9dKSAjIG11bHRkaXZtb2RUZXJtRGl2DQo+IA0KPiArICAgICAgICB8DQo+ IA0KPiArICAgICAgICAoJyUnIGNhc3RUZXJtW0V4cEluZm9dKSAjIG11bHRkaXZtb2RUZXJtTW9k dWxvDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtjYXN0VGVybVtFeHBJbmZvXQ0KPiAN Cj4gK2xvY2Fsc1tUQk9iaj1Ob25lLCBUVU9iaj1Ob25lXQ0KPiANCj4gKyAgICA6ICAgKCAgICco Jw0KPiANCj4gKyAgICAgICAgICAgICggICdCT09MRUFOJw0KPiANCj4gKyAgICAgICAgICAgIHwg ICdVSU5UNjQnDQo+IA0KPiArICAgICAgICAgICAgfCAgJ1VJTlQzMicNCj4gDQo+ICsgICAgICAg ICAgICB8ICAnVUlOVDE2Jw0KPiANCj4gKyAgICAgICAgICAgIHwgICdVSU5UOCcNCj4gDQo+ICsg ICAgICAgICAgICApDQo+IA0KPiArICAgICAgICAgICAgJyknDQo+IA0KPiArICAgICAgICApKg0K PiANCj4gKyAgICAgICAgYXRvbVRlcm1bRXhwSW5mb10NCj4gDQo+ICsgICAgOw0KPiANCj4gKw0K PiANCj4gK2F0b21UZXJtW0V4cEluZm9dDQo+IA0KPiArICAgIDogICB2ZnJFeHByZXNzaW9uQ2F0 ZW5hdGVbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHZmckV4cHJlc3Npb25NYXRjaFtFeHBJbmZv XQ0KPiANCj4gKyAgICB8ICAgdmZyRXhwcmVzc2lvbk1hdGNoMltFeHBJbmZvXQ0KPiANCj4gKyAg ICB8ICAgdmZyRXhwcmVzc2lvblBhcmVuW0V4cEluZm9dDQo+IA0KPiArICAgIHwgICB2ZnJFeHBy ZXNzaW9uQnVpbGRJbkZ1bmN0aW9uW0V4cEluZm9dDQo+IA0KPiArICAgIHwgICB2ZnJFeHByZXNz aW9uQ29uc3RhbnRbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHZmckV4cHJlc3Npb25VbmFyeU9w W0V4cEluZm9dDQo+IA0KPiArICAgIHwgICB2ZnJFeHByZXNzaW9uVGVybmFyeU9wW0V4cEluZm9d DQo+IA0KPiArICAgIHwgICB2ZnJFeHByZXNzaW9uTWFwW0V4cEluZm9dDQo+IA0KPiArICAgIHwg ICAoJ05PVCcgYXRvbVRlcm1bRXhwSW5mb10pDQo+IA0KPiArICAgIHwgICB2ZnJFeHByZXNzaW9u TWF0Y2gyW0V4cEluZm9dDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJFeHByZXNz aW9uQ2F0ZW5hdGVbRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbQ09iaj1Ob25lXQ0KPiANCj4gKyAg ICA6ICAgJ2NhdGVuYXRlJw0KPiANCj4gKyAgICAgICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Np b25TdWIgJywnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQo+IA0KPiArICAgIDsNCj4g DQo+ICsNCj4gDQo+ICt2ZnJFeHByZXNzaW9uTWF0Y2hbRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNb TU9iaj1Ob25lXQ0KPiANCj4gKyAgICA6ICAgJ21hdGNoJw0KPiANCj4gKyAgICAgICAgJygnIHZm clN0YXRlbWVudEV4cHJlc3Npb25TdWIgJywnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJykn DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJFeHByZXNzaW9uTWF0Y2gyW0V4cElu Zm9dDQo+IA0KPiArbG9jYWxzW00yT2JqPU5vbmVdDQo+IA0KPiArICAgIDogICAnbWF0Y2gyJw0K PiANCj4gKyAgICAgICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWInLCcNCj4gDQo+ICsg ICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJywnDQo+IA0KPiArICAgICAgICBndWlk RGVmaW5pdGlvbiAnKScNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmckV4cHJlc3Np b25QYXJlbltFeHBJbmZvXQ0KPiANCj4gKyAgICA6ICAgJygnIHZmclN0YXRlbWVudEV4cHJlc3Np b25TdWIgJyknDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJFeHByZXNzaW9uQnVp bGRJbkZ1bmN0aW9uW0V4cEluZm9dDQo+IA0KPiArICAgIDogICBkdXBFeHBbRXhwSW5mb10NCj4g DQo+ICsgICAgfCAgIHZhcmVxdmFsRXhwW0V4cEluZm9dDQo+IA0KPiArICAgIHwgICBpZGVxdmFs RXhwW0V4cEluZm9dDQo+IA0KPiArICAgIHwgICBpZGVxaWRFeHBbRXhwSW5mb10NCj4gDQo+ICsg ICAgfCAgIGlkZXF2YWxsaXN0RXhwW0V4cEluZm9dDQo+IA0KPiArICAgIHwgICBxdWVzdGlvbnJl ZjFFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHJ1bGVyZWZFeHBbRXhwSW5mb10NCj4gDQo+ ICsgICAgfCAgIHN0cmluZ3JlZjFFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHB1c2h0aGlz RXhwW0V4cEluZm9dDQo+IA0KPiArICAgIHwgICBzZWN1cml0eUV4cFtFeHBJbmZvXQ0KPiANCj4g KyAgICB8ICAgZ2V0RXhwW0V4cEluZm9dDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtk dXBFeHBbRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbRE9iaj1Ob25lXQ0KPiANCj4gKyAgICA6ICAg J2R1cCcNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK3ZhcmVxdmFsRXhw W0V4cEluZm9dDQo+IA0KPiArICAgIDogICAndmFyZXF2YWwnDQo+IA0KPiArICAgICAgICAndmFy JyAnKCcgTnVtYmVyICcpJw0KPiANCj4gKyAgICAgICAgKCAgICc9PScgTnVtYmVyDQo+IA0KPiAr CSAgICB8ICAgJzw9JyBOdW1iZXINCj4gDQo+ICsJICAgIHwgICAnPCcgTnVtYmVyDQo+IA0KPiAr CSAgICB8ICAgJz49JyBOdW1iZXINCj4gDQo+ICsJICAgIHwgICAnPicgTnVtYmVyDQo+IA0KPiAr ICAgICAgICApDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtpZGVxdmFsRXhwW0V4cElu Zm9dDQo+IA0KPiArICAgIDogICBJPSdpZGVxdmFsJyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUN Cj4gDQo+ICsgICAgICAgICggICAnPT0nIE51bWJlcg0KPiANCj4gKwkgICAgfCAgICc8PScgTnVt YmVyDQo+IA0KPiArCSAgICB8ICAgJzwnIE51bWJlcg0KPiANCj4gKwkgICAgfCAgICc+PScgTnVt YmVyDQo+IA0KPiArCSAgICB8ICAgJz4nIE51bWJlcg0KPiANCj4gKyAgICAgICAgKQ0KPiANCj4g KyAgICA7DQo+IA0KPiArDQo+IA0KPiAraWRlcWlkRXhwW0V4cEluZm9dDQo+IA0KPiArICAgIDog ICBJPSdpZGVxaWQnIHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiANCj4gKyAgICAgICAgKCAg IEU9Jz09JyB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUNCj4gDQo+ICsJICAgIHwgICBMRT0nPD0n IHZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiANCj4gKwkgICAgfCAgIEw9JzwnIHZmclF1ZXN0 aW9uRGF0YUZpZWxkTmFtZQ0KPiANCj4gKwkgICAgfCAgIEJFPSc+PScgdmZyUXVlc3Rpb25EYXRh RmllbGROYW1lDQo+IA0KPiArCSAgICB8ICAgQj0nPicgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1l DQo+IA0KPiArICAgICAgICApDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtpZGVxdmFs bGlzdEV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICA6ICAgJ2lkZXF2YWxsaXN0JyB2ZnJRdWVzdGlv bkRhdGFGaWVsZE5hbWUgJz09JyAoTnVtYmVyKSsNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiAN Cj4gK3ZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZQ0KPiANCj4gK2xvY2Fsc1tRSWQ9RUZJX1FVRVNU SU9OX0lEX0lOVkFMSUQsIE1hc2s9MCwgVmFySWRTdHI9JycsIExpbmU9Tm9uZV0NCj4gDQo+ICsg ICAgOiAgIChTTjE9U3RyaW5nSWRlbnRpZmllciAnWycgST1OdW1iZXIgJ10nKSAjDQo+IHZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxDQo+IA0KPiArICAgICAgICB8ICAgKFNOMj1TdHJpbmdJ ZGVudGlmaWVyICgnLicgYXJyYXlOYW1lKSopICMNCj4gdmZyUXVlc3Rpb25EYXRhRmllbGROYW1l UnVsZTINCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK2FycmF5TmFtZQ0KPiANCj4gK2xv Y2Fsc1tTdWJTdHI9JycsIFN1YlN0clo9JyddDQo+IA0KPiArICAgIDogU3RyaW5nSWRlbnRpZmll ciAoJ1snIE49TnVtYmVyICddJyk/DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtxdWVz dGlvbnJlZjFFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgOiAgICdxdWVzdGlvbnJlZicNCj4gDQo+ ICsgICAgICAgICcoJyAoIFN0cmluZ0lkZW50aWZpZXIgfCBOdW1iZXIgKSAnKScNCj4gDQo+ICsg ICAgOw0KPiANCj4gKw0KPiANCj4gK3J1bGVyZWZFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgOiAg ICdydWxlcmVmJyAnKCcgU3RyaW5nSWRlbnRpZmllciAnKScNCj4gDQo+ICsgICAgOw0KPiANCj4g Kw0KPiANCj4gK3N0cmluZ3JlZjFFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgOiAgICdzdHJpbmdy ZWYnICcoJw0KPiANCj4gKyAgICAgICAgKA0KPiANCj4gKyAgICAgICAgICAgICdTVFJJTkdfVE9L RU4nICcoJyBOdW1iZXIgJyknDQo+IA0KPiArICAgICAgICB8ICAgTnVtYmVyDQo+IA0KPiArICAg ICAgICApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICcpJw0KPiANCj4gKyAgICA7DQo+ IA0KPiArDQo+IA0KPiArcHVzaHRoaXNFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgOiAgICdwdXNo dGhpcycNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3NlY3VyaXR5RXhwW0V4cEluZm9d DQo+IA0KPiArICAgIDogICAnc2VjdXJpdHknICcoJyBndWlkRGVmaW5pdGlvbiAnKScNCj4gDQo+ ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK251bWVyaWNWYXJTdG9yZVR5cGUNCj4gDQo+ICtsb2Nh bHNbVmFyVHlwZV0NCj4gDQo+ICsgICAgOiAgICdOVU1FUklDX1NJWkVfMScNCj4gDQo+ICsgICAg fCAgICdOVU1FUklDX1NJWkVfMicNCj4gDQo+ICsgICAgfCAgICdOVU1FUklDX1NJWkVfNCcNCj4g DQo+ICsgICAgfCAgICdOVU1FUklDX1NJWkVfOCcNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiAN Cj4gK2dldEV4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tCYXNlSW5mbz1FRklfVkFSU1RPUkVf SU5GTygpLCBHT2JqPU5vbmVdDQo+IA0KPiArICAgIDogICAnZ2V0JyAnKCcgdmZyU3RvcmFnZVZh cklkW2xvY2FsY3R4LkJhc2VJbmZvLCBGYWxzZV0oJ3wnICdmbGFncycgJz0nDQo+IG51bWVyaWNW YXJTdG9yZVR5cGUpPyAnKScNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3ZmckV4cHJl c3Npb25Db25zdGFudFtFeHBJbmZvXQ0KPiANCj4gKyAgICA6ICAgJ1RSVUUnDQo+IA0KPiArICAg IHwgICAnRkFMU0UnDQo+IA0KPiArICAgIHwgICAnT05FJw0KPiANCj4gKyAgICB8ICAgJ09ORVMn DQo+IA0KPiArICAgIHwgICAnWkVSTycNCj4gDQo+ICsgICAgfCAgICdVTkRFRklORUQnDQo+IA0K PiArICAgIHwgICAnVkVSU0lPTicNCj4gDQo+ICsgICAgfCAgIE51bWJlcg0KPiANCj4gKyAgICA7 DQo+IA0KPiArDQo+IA0KPiArdmZyRXhwcmVzc2lvblVuYXJ5T3BbRXhwSW5mb10NCj4gDQo+ICsg ICAgOiAgIGxlbmd0aEV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8ICAgYml0d2lzZW5vdEV4cFtF eHBJbmZvXQ0KPiANCj4gKyAgICB8ICAgcXVlc3Rpb24yM3JlZkV4cFtFeHBJbmZvXQ0KPiANCj4g KyAgICB8ICAgc3RyaW5ncmVmMkV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8ICAgdG9ib29sRXhw W0V4cEluZm9dDQo+IA0KPiArICAgIHwgICB0b3N0cmluZ0V4cFtFeHBJbmZvXQ0KPiANCj4gKyAg ICB8ICAgdW5pbnRFeHBbRXhwSW5mb10NCj4gDQo+ICsgICAgfCAgIHRvdXBwZXJFeHBbRXhwSW5m b10NCj4gDQo+ICsgICAgfCAgIHRvbHdlckV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8ICAgc2V0 RXhwW0V4cEluZm9dDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtsZW5ndGhFeHBbRXhw SW5mb10NCj4gDQo+ICtsb2NhbHNbTE9iaj1Ob25lXQ0KPiANCj4gKyAgICA6ICAgJ2xlbmd0aCcg JygnIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIgJyknDQo+IA0KPiArICAgIDsNCj4gDQo+ICsN Cj4gDQo+ICtiaXR3aXNlbm90RXhwW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW0JXTk9iaj1Ob25l XQ0KPiANCj4gKyAgICA6ICAgJ34nICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViICcpJw0K PiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArcXVlc3Rpb24yM3JlZkV4cFtFeHBJbmZvXQ0K PiANCj4gKyAgICA6ICAgJ3F1ZXN0aW9ucmVmdmFsJw0KPiANCj4gKyAgICAgICAgJygnDQo+IA0K PiArICAgICAgICAoRGV2aWNlUGF0aCAnPScgJ1NUUklOR19UT0tFTicgJygnIE51bWJlciAnKScg JywnICk/DQo+IA0KPiArICAgICAgICAoVXVpZCAnPScgZ3VpZERlZmluaXRpb24gJywnICk/DQo+ IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQo+IA0KPiArICAgICAgICAn KScNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3N0cmluZ3JlZjJFeHBbRXhwSW5mb10N Cj4gDQo+ICtsb2NhbHNbU1IyT2JqPU5vbmVdDQo+IA0KPiArICAgIDogICAnc3RyaW5ncmVmdmFs JyAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAnKScNCj4gDQo+ICsgICAgOw0KPiANCj4g Kw0KPiANCj4gK3RvYm9vbEV4cFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tUQk9iaj1Ob25lXQ0K PiANCj4gKyAgICA6ICAgJ2Jvb2x2YWwnICcoJyB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViICcp Jw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArdG9zdHJpbmdFeHBbRXhwSW5mb10NCj4g DQo+ICtsb2NhbHNbVFNPYmo9Tm9uZV0NCj4gDQo+ICsgICAgOiAgICdzdHJpbmd2YWwnICgnZm9y bWF0JyAnPScgTnVtYmVyICcsJyApPw0KPiANCj4gKyAgICAgICAgJygnIHZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWIgJyknDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt1bmludEV4cFtF eHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tUVU9iaj1Ob25lXQ0KPiANCj4gKyAgICA6ICAgJ3VuaW50 dmFsJyAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiAnKScNCj4gDQo+ICsgICAgOw0KPiAN Cj4gKw0KPiANCj4gK3RvdXBwZXJFeHBbRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbVFVPYmo9Tm9u ZV0NCj4gDQo+ICsgICAgOiAgICd0b3VwcGVyJyAnKCcgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 YiAnKScNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK3RvbHdlckV4cFtFeHBJbmZvXQ0K PiANCj4gK2xvY2Fsc1tUTE9iaj1Ob25lXQ0KPiANCj4gKyAgICA6ICAgJ3RvbG93ZXInICcoJyB2 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0K PiArc2V0RXhwW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW0Jhc2VJbmZvPUVGSV9WQVJTVE9SRV9J TkZPKCksIFRTT2JqPU5vbmVdDQo+IA0KPiArICAgIDogICAnc2V0Jw0KPiANCj4gKyAgICAgICAg JygnDQo+IA0KPiArICAgICAgICB2ZnJTdG9yYWdlVmFySWRbbG9jYWxjdHguQmFzZUluZm8sIEZh bHNlXSgnfCcgJ2ZsYWdzJyAnPScNCj4gbnVtZXJpY1ZhclN0b3JlVHlwZSk/ICcsJw0KPiANCj4g KyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KPiANCj4gKyAgICAgICAgJyknDQo+ IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICt2ZnJFeHByZXNzaW9uVGVybmFyeU9wW0V4cElu Zm9dDQo+IA0KPiArICAgIDogICBjb25kaXRpb25hbEV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8 ICAgZmluZEV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8ICAgbWlkRXhwW0V4cEluZm9dDQo+IA0K PiArICAgIHwgICB0b2tlbkV4cFtFeHBJbmZvXQ0KPiANCj4gKyAgICB8ICAgc3BhbkV4cFtFeHBJ bmZvXQ0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArY29uZGl0aW9uYWxFeHBbRXhwSW5m b10NCj4gDQo+ICtsb2NhbHNbQ09iaj1Ob25lXQ0KPiANCj4gKyAgICA6ICAgJ2NvbmQnDQo+IA0K PiArICAgICAgICAnKCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIg Ly8NCj4gDQo+ICsgICAgICAgICc/Jw0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVz c2lvblN1YiAvLw0KPiANCj4gKyAgICAgICAgJzonDQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViIC8vDQo+IA0KPiArICAgICAgICAnKScNCj4gDQo+ICsgICAgOw0KPiAN Cj4gKw0KPiANCj4gK2ZpbmRFeHBbRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbRk9iaj1Ob25lXQ0K PiANCj4gKyAgICA6ICAgJ2ZpbmQnDQo+IA0KPiArICAgICAgICAnKCcNCj4gDQo+ICsgICAgICAg IGZpbmRGb3JtYXRbRXhwSW5mb10gKCd8JyBmaW5kRm9ybWF0W0V4cEluZm9dKSoNCj4gDQo+ICsg ICAgICAgICcsJw0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KPiAN Cj4gKyAgICAgICAgJywnDQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi DQo+IA0KPiArICAgICAgICAnLCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Np b25TdWINCj4gDQo+ICsgICAgICAgICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiAr ZmluZEZvcm1hdFtFeHBJbmZvXQ0KPiANCj4gK2xvY2Fsc1tGb3JtYXQ9MF0NCj4gDQo+ICsgICAg OiAgICdTRU5TSVRJVkUnIHwgJ0lOU0VOU0lUSVZFJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+ IA0KPiArbWlkRXhwW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW01PYmo9Tm9uZV0NCj4gDQo+ICsg ICAgOiAgICdtaWQnDQo+IA0KPiArICAgICAgICAnKCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWINCj4gDQo+ICsgICAgICAgICcsJw0KPiANCj4gKyAgICAgICAgdmZy U3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KPiANCj4gKyAgICAgICAgJywnDQo+IA0KPiArICAgICAg ICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQo+IA0KPiArICAgICAgICAnKScNCj4gDQo+ICsg ICAgOw0KPiANCj4gKw0KPiANCj4gK3Rva2VuRXhwW0V4cEluZm9dDQo+IA0KPiArbG9jYWxzW1RP Ymo9Tm9uZV0NCj4gDQo+ICsgICAgOiAgICd0b2tlbicNCj4gDQo+ICsgICAgICAgICcoJw0KPiAN Cj4gKyAgICAgICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KPiANCj4gKyAgICAgICAgJywn DQo+IA0KPiArICAgICAgICB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViDQo+IA0KPiArICAgICAg ICAnLCcNCj4gDQo+ICsgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWINCj4gDQo+ICsg ICAgICAgICcpJw0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiArc3BhbkV4cFtFeHBJbmZv XQ0KPiANCj4gK2xvY2Fsc1tTT2JqPU5vbmVdDQo+IA0KPiArICAgIDogICAnc3BhbicNCj4gDQo+ ICsgICAgICAgICcoJw0KPiANCj4gKyAgICAgICAgJ2ZsYWdzJyAnPScgc3BhbkZsYWdzICgnfCcg c3BhbkZsYWdzKSoNCj4gDQo+ICsgICAgICAgICcsJw0KPiANCj4gKyAgICAgICAgdmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1Yg0KPiANCj4gKyAgICAgICAgJywnDQo+IA0KPiArICAgICAgICB2ZnJT dGF0ZW1lbnRFeHByZXNzaW9uU3ViDQo+IA0KPiArICAgICAgICAnLCcNCj4gDQo+ICsgICAgICAg IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWINCj4gDQo+ICsgICAgICAgICcpJw0KPiANCj4gKyAg ICA7DQo+IA0KPiArDQo+IA0KPiArc3BhbkZsYWdzDQo+IA0KPiArbG9jYWxzW0ZsYWc9MF0NCj4g DQo+ICsgICAgOiAgIE51bWJlcg0KPiANCj4gKyAgICB8ICAgJ0xBU1RfTk9OX01BVENIJw0KPiAN Cj4gKyAgICB8ICAgJ0ZJUlNUX05PTl9NQVRDSCcNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiAN Cj4gK3ZmckV4cHJlc3Npb25NYXBbRXhwSW5mb10NCj4gDQo+ICtsb2NhbHNbTU9iaj1Ob25lXQ0K PiANCj4gKyAgICA6ICAgJ21hcCcNCj4gDQo+ICsgICAgICAgICcoJw0KPiANCj4gKyAgICAgICAg dmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yg0KPiANCj4gKyAgICAgICAgJzonDQo+IA0KPiArICAg ICAgICAoICAgdmZyU3RhdGVtZW50RXhwcmVzc2lvbg0KPiANCj4gKyAgICAgICAgICAgICcsJw0K PiANCj4gKyAgICAgICAgICAgIHZmclN0YXRlbWVudEV4cHJlc3Npb24NCj4gDQo+ICsgICAgICAg ICAgICAnOycNCj4gDQo+ICsgICAgICAgICkqDQo+IA0KPiArICAgICAgICAnKScNCj4gDQo+ICsg ICAgOw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK0RlZmluZSA6JyNkZWZpbmUnOw0KPiANCj4g K0luY2x1ZGUgOiAnI2luY2x1ZGUnOw0KPiANCj4gK0Zvcm1Qa2dUeXBlIDogJ2Zvcm1wa2d0eXBl JzsNCj4gDQo+ICtPcGVuQnJhY2UgOiAneyc7DQo+IA0KPiArQ2xvc2VCcmFjZSA6ICd9JzsNCj4g DQo+ICtPcGVuUGFyZW4gOiAnKCc7DQo+IA0KPiArQ2xvc2VQYXJlbiA6ICcpJzsNCj4gDQo+ICtP cGVuQnJhY2tldCA6ICdbJzsNCj4gDQo+ICtDbG9zZUJyYWNrZXQgOiAnXSc7DQo+IA0KPiArRG90 IDogJy4nOw0KPiANCj4gK05lZ2F0aXZlIDogJy0nOw0KPiANCj4gK0NvbG9uIDogJzonOw0KPiAN Cj4gK1NsYXNoIDogJy8nOw0KPiANCj4gK1NlbWljb2xvbiA6ICc7JzsNCj4gDQo+ICtDb21tYSA6 ICcsJzsNCj4gDQo+ICtFcXVhbCA6ICc9PSc7DQo+IA0KPiArTm90RXF1YWwgOiAnIT0nOw0KPiAN Cj4gK0xlc3NFcXVhbDogJzw9JzsNCj4gDQo+ICtMZXNzOic8JzsNCj4gDQo+ICtHcmVhdGVyRXF1 YWw6Jz49JzsNCj4gDQo+ICtHcmVhdGVyOic+JzsNCj4gDQo+ICtCaXRXaXNlT3I6ICd8JzsNCj4g DQo+ICtCaXRXaXNlQW5kOiAnJic7DQo+IA0KPiArDQo+IA0KPiArRGV2aWNlUGF0aCA6ICdkZXZp Y2VwYXRoJzsNCj4gDQo+ICtGb3JtU2V0IDogJ2Zvcm1zZXQnOw0KPiANCj4gK0Zvcm1TZXRJZCA6 ICdmb3Jtc2V0aWQnOw0KPiANCj4gK0VuZEZvcm1TZXQgOiAnZW5kZm9ybXNldCc7DQo+IA0KPiAr VGl0bGUgOiAndGl0bGUnOw0KPiANCj4gK0Zvcm1JZCA6ICdmb3JtaWQnOw0KPiANCj4gK09uZU9m IDogJ29uZW9mJzsNCj4gDQo+ICtFbmRPbmVPZiA6ICdlbmRvbmVvZic7DQo+IA0KPiArUHJvbXB0 IDogJ3Byb21wdCc7DQo+IA0KPiArT3JkZXJlZExpc3QgOiAnb3JkZXJlZGxpc3QnOw0KPiANCj4g K01heENvbnRhaW5lcnMgOiAnbWF4Y29udGFpbmVycyc7DQo+IA0KPiArRW5kTGlzdCA6ICdlbmRs aXN0JzsNCj4gDQo+ICtFbmRGb3JtIDogJ2VuZGZvcm0nOw0KPiANCj4gK0Zvcm0gOiAnZm9ybSc7 DQo+IA0KPiArRm9ybU1hcCA6ICdmb3JtbWFwJzsNCj4gDQo+ICtNYXBUaXRsZSA6ICdtYXB0aXRs ZSc7DQo+IA0KPiArTWFwR3VpZCA6ICdtYXBndWlkJzsNCj4gDQo+ICtTdWJ0aXRsZSA6ICdzdWJ0 aXRsZSc7DQo+IA0KPiArRW5kU3VidGl0bGUgOiAnZW5kc3VidGl0bGUnOw0KPiANCj4gK0hlbHAg OiAnaGVscCc7DQo+IA0KPiArVGV4dCA6ICd0ZXh0JzsNCj4gDQo+ICtPcHRpb24gOiAnb3B0aW9u JzsNCj4gDQo+ICtGTEFHUyA6ICdmbGFncyc7DQo+IA0KPiArRGF0ZSA6ICdkYXRlJzsNCj4gDQo+ ICtFbmREYXRlIDogJ2VuZGRhdGUnOw0KPiANCj4gK1llYXIgOiAneWVhcic7DQo+IA0KPiArTW9u dGggOiAnbW9udGgnOw0KPiANCj4gK0RheSA6ICdkYXknOw0KPiANCj4gK1RpbWUgOiAndGltZSc7 DQo+IA0KPiArRW5kVGltZSA6ICdlbmR0aW1lJzsNCj4gDQo+ICtIb3VyIDogJ2hvdXInOw0KPiAN Cj4gK01pbnV0ZSA6ICdtaW51dGUnOw0KPiANCj4gK1NlY29uZCA6ICdzZWNvbmQnOw0KPiANCj4g K0dyYXlPdXRJZiA6ICdncmF5b3V0aWYnOw0KPiANCj4gK0xhYmVsIDogJ2xhYmVsJzsNCj4gDQo+ ICtUaW1lb3V0IDogJ3RpbWVvdXQnOw0KPiANCj4gK0ludmVudG9yeSA6ICdpbnZlbnRvcnknOw0K PiANCj4gK05vbk52RGF0YU1hcCA6ICdfTk9OX05WX0RBVEFfTUFQJzsNCj4gDQo+ICtTdHJ1Y3Qg OiAnc3RydWN0JzsNCj4gDQo+ICtVbmlvbiA6ICd1bmlvbic7DQo+IA0KPiArQm9vbGVhbiA6ICdC T09MRUFOJzsNCj4gDQo+ICtVaW50NjQgOiAnVUlOVDY0JzsNCj4gDQo+ICtVaW50MzIgOiAnVUlO VDMyJzsNCj4gDQo+ICtVaW50MTYgOiAnVUlOVDE2JzsNCj4gDQo+ICtVaW50OCA6J1VJTlQ4JzsN Cj4gDQo+ICtFRklfU1RSSU5HX0lEIDonRUZJX1NUUklOR19JRCc7DQo+IA0KPiArRUZJX0hJSV9E QVRFIDogJ0VGSV9ISUlfREFURSc7DQo+IA0KPiArRUZJX0hJSV9USU1FIDogJ0VGSV9ISUlfVElN RSc7DQo+IA0KPiArRUZJX0hJSV9SRUYgOiAnRUZJX0hJSV9SRUYnOw0KPiANCj4gK1V1aWQgOiAn Z3VpZCc7DQo+IA0KPiArQ2hlY2tCb3ggOiAnY2hlY2tib3gnOw0KPiANCj4gK0VuZENoZWNrQm94 IDogJ2VuZGNoZWNrYm94JzsNCj4gDQo+ICtOdW1lcmljIDogJ251bWVyaWMnOw0KPiANCj4gK0Vu ZE51bWVyaWMgOiAnZW5kbnVtZXJpYyc7DQo+IA0KPiArTWluaW11bSA6ICdtaW5pbXVtJzsNCj4g DQo+ICtNYXhpbXVtIDogJ21heGltdW0nOw0KPiANCj4gK1N0ZXAgOiAnc3RlcCc7DQo+IA0KPiAr RGVmYXVsdCA6ICdkZWZhdWx0JzsNCj4gDQo+ICtQYXNzd29yZCA6ICdwYXNzd29yZCc7DQo+IA0K PiArRW5kUGFzc3dvcmQgOiAnZW5kcGFzc3dvcmQnOw0KPiANCj4gK1N0cmluZyA6ICdzdHJpbmcn Ow0KPiANCj4gK0VuZFN0cmluZyA6ICdlbmRzdHJpbmcnOw0KPiANCj4gK01pblNpemUgOiAnbWlu c2l6ZSc7DQo+IA0KPiArTWF4U2l6ZSA6ICdtYXhzaXplJzsNCj4gDQo+ICtFbmNvZGluZyA6ICdl bmNvZGluZyc7DQo+IA0KPiArU3VwcHJlc3NJZiA6ICdzdXBwcmVzc2lmJzsNCj4gDQo+ICtEaXNh YmxlSWYgOiAnZGlzYWJsZWlmJzsNCj4gDQo+ICtIaWRkZW4gOiAnaGlkZGVuJzsNCj4gDQo+ICtH b3RvIDogJ2dvdG8nOw0KPiANCj4gK0Zvcm1TZXRHdWlkIDogJ2Zvcm1zZXRndWlkJzsNCj4gDQo+ ICtJbmNvbnNpc3RlbnRJZiA6ICdpbmNvbnNpc3RlbnRpZic7DQo+IA0KPiArV2FybmluZ0lmIDog J3dhcm5pbmdpZic7DQo+IA0KPiArTm9TdWJtaXRJZiA6ICdub3N1Ym1pdGlmJzsNCj4gDQo+ICtF bmRJZiA6ICdlbmRpZic7DQo+IA0KPiArS2V5IDogJ2tleSc7DQo+IA0KPiArRGVmYXVsdEZsYWcg OiAnREVGQVVMVCc7DQo+IA0KPiArTWFudWZhY3R1cmluZ0ZsYWcgOiAnTUFOVUZBQ1RVUklORyc7 DQo+IA0KPiArQ2hlY2tCb3hEZWZhdWx0RmxhZyA6ICdDSEVDS0JPWF9ERUZBVUxUJzsNCj4gDQo+ ICtDaGVja0JveERlZmF1bHRNZmdGbGFnIDogJ0NIRUNLQk9YX0RFRkFVTFRfTUZHJzsNCj4gDQo+ ICtJbnRlcmFjdGl2ZUZsYWcgOiAnSU5URVJBQ1RJVkUnOw0KPiANCj4gK05WQWNjZXNzRmxhZyA6 ICdOVl9BQ0NFU1MnOw0KPiANCj4gK1Jlc2V0UmVxdWlyZWRGbGFnIDogJ1JFU0VUX1JFUVVJUkVE JzsNCj4gDQo+ICtSZWNvbm5lY3RSZXF1aXJlZEZsYWcgOiAnUkVDT05ORUNUX1JFUVVJUkVEJzsN Cj4gDQo+ICtMYXRlQ2hlY2tGbGFnIDogJ0xBVEVfQ0hFQ0snOw0KPiANCj4gK1JlYWRPbmx5Rmxh ZyA6ICdSRUFEX09OTFknOw0KPiANCj4gK09wdGlvbk9ubHlGbGFnIDogJ09QVElPTlNfT05MWSc7 DQo+IA0KPiArUmVzdFN0eWxlRmxhZyA6ICdSRVNUX1NUWUxFJzsNCj4gDQo+ICtDbGFzcyA6ICdj bGFzcyc7DQo+IA0KPiArU3ViY2xhc3MgOiAnc3ViY2xhc3MnOw0KPiANCj4gK0NsYXNzR3VpZCA6 ICdjbGFzc2d1aWQnOw0KPiANCj4gK1R5cGVEZWYgOiAndHlwZWRlZic7DQo+IA0KPiArUmVzdG9y ZSA6ICdyZXN0b3JlJzsNCj4gDQo+ICtTYXZlIDogJ3NhdmUnOw0KPiANCj4gK0RlZmF1bHRzIDog J2RlZmF1bHRzJzsNCj4gDQo+ICtCYW5uZXIgOiAgJ2Jhbm5lcic7DQo+IA0KPiArQWxpZ24gOiAn YWxpZ24nOw0KPiANCj4gK0xlZnQgOiAnbGVmdCc7DQo+IA0KPiArUmlnaHQgOiAncmlnaHQnOw0K PiANCj4gK0NlbnRlciA6ICdjZW50ZXInOw0KPiANCj4gK0xpbmUgOiAnbGluZSc7DQo+IA0KPiAr TmFtZSA6ICduYW1lJzsNCj4gDQo+ICsNCj4gDQo+ICtWYXJJZDogJ3ZhcmlkJzsNCj4gDQo+ICtR dWVzdGlvbjogJ3F1ZXN0aW9uJzsNCj4gDQo+ICtRdWVzdGlvbklkOiAncXVlc3Rpb25pZCc7DQo+ IA0KPiArSW1hZ2U6ICdpbWFnZSc7DQo+IA0KPiArTG9ja2VkOiAnbG9ja2VkJzsNCj4gDQo+ICtS dWxlOiAncnVsZSc7DQo+IA0KPiArRW5kUnVsZTogJ2VuZHJ1bGUnOw0KPiANCj4gK1ZhbHVlOiAn dmFsdWUnOw0KPiANCj4gK1JlYWQ6ICdyZWFkJzsNCj4gDQo+ICtXcml0ZTogJ3dyaXRlJzsNCj4g DQo+ICtSZXNldEJ1dHRvbjogJ3Jlc2V0YnV0dG9uJzsNCj4gDQo+ICtFbmRSZXNldEJ1dHRvbjog J2VuZHJlc2V0YnV0dG9uJzsNCj4gDQo+ICtEZWZhdWx0U3RvcmU6ICdkZWZhdWx0c3RvcmUnOw0K PiANCj4gK0F0dHJpYnV0ZTogJ2F0dHJpYnV0ZSc7DQo+IA0KPiArVmFyc3RvcmU6ICd2YXJzdG9y ZSc7DQo+IA0KPiArRWZpdmFyc3RvcmU6ICdlZml2YXJzdG9yZSc7DQo+IA0KPiArVmFyU2l6ZTog J3ZhcnNpemUnOw0KPiANCj4gK05hbWVWYWx1ZVZhclN0b3JlOiAnbmFtZXZhbHVldmFyc3RvcmUn Ow0KPiANCj4gK0FjdGlvbjogJ2FjdGlvbic7DQo+IA0KPiArQ29uZmlnOiAnY29uZmlnJzsNCj4g DQo+ICtFbmRBY3Rpb246ICdlbmRhY3Rpb24nOw0KPiANCj4gK1JlZnJlc2g6ICdyZWZyZXNoJzsN Cj4gDQo+ICtJbnRlcnZhbDogJ2ludGVydmFsJzsNCj4gDQo+ICtWYXJzdG9yZURldmljZTogJ3Zh cnN0b3JlZGV2aWNlJzsNCj4gDQo+ICtHdWlkT3A6ICdndWlkb3AnOw0KPiANCj4gK0VuZEd1aWRP cDogJ2VuZGd1aWRvcCc7DQo+IA0KPiArRGF0YVR5cGU6ICdkYXRhdHlwZSc7DQo+IA0KPiArRGF0 YTogJ2RhdGEnOw0KPiANCj4gK01vZGFsOiAnbW9kYWwnOw0KPiANCj4gKw0KPiANCj4gKy8vDQo+ IA0KPiArLy8gRGVmaW5lIHRoZSBjbGFzcyBhbmQgc3ViY2xhc3MgdG9rZW5zDQo+IA0KPiArLy8N Cj4gDQo+ICsvLw0KPiANCj4gK0NsYXNzTm9uRGV2aWNlOiAnTk9OX0RFVklDRSc7DQo+IA0KPiAr Q2xhc3NEaXNrRGV2aWNlOiAnRElTS19ERVZJQ0UnOw0KPiANCj4gK0NsYXNzVmlkZW9EZXZpY2U6 ICdWSURFT19ERVZJQ0UnOw0KPiANCj4gK0NsYXNzTmV0d29ya0RldmljZTogJ05FVFdPUktfREVW SUNFJzsNCj4gDQo+ICtDbGFzc0lucHV0RGV2aWNlOiAnSU5QVVRfREVWSUNFJzsNCj4gDQo+ICtD bGFzc09uQm9hcmREZXZpY2U6ICdPTkJPQVJEX0RFVklDRSc7DQo+IA0KPiArQ2xhc3NPdGhlckRl dmljZTogJ09USEVSX0RFVklDRSc7DQo+IA0KPiArDQo+IA0KPiArU3ViY2xhc3NTZXR1cEFwcGxp Y2F0aW9uOiAnU0VUVVBfQVBQTElDQVRJT04nOw0KPiANCj4gK1N1YmNsYXNzR2VuZXJhbEFwcGxp Y2F0aW9uOiAnR0VORVJBTF9BUFBMSUNBVElPTic7DQo+IA0KPiArU3ViY2xhc3NGcm9udFBhZ2U6 ICdGUk9OVF9QQUdFJzsNCj4gDQo+ICtTdWJjbGFzc1NpbmdsZVVzZTogJ1NJTkdMRV9VU0UnOw0K PiANCj4gKw0KPiANCj4gK1llYXJTdXBwcHJlc3NGbGFnOiAnWUVBUl9TVVBQUkVTUyc7DQo+IA0K PiArTW9udGhTdXBwcmVzc0ZsYWc6ICdNT05USF9TVVBQUkVTUyc7DQo+IA0KPiArRGF5U3VwcHJl c3NGbGFnOiAnREFZX1NVUFBSRVNTJzsNCj4gDQo+ICtIb3VyU3VwcHByZXNzRmxhZzogJ0hPVVJf U1VQUFJFU1MnOw0KPiANCj4gK01pbnV0ZVN1cHByZXNzRmxhZzogJ01JTlVURV9TVVBQUkVTUyc7 DQo+IA0KPiArU2Vjb25kU3VwcHJlc3NGbGFnOiAnU0VDT05EX1NVUFBSRVNTJzsNCj4gDQo+ICtT dG9yYWdlTm9ybWFsRmxhZzogJ1NUT1JBR0VfTk9STUFMJzsNCj4gDQo+ICtTdG9yYWdlVGltZUZs YWc6ICdTVE9SQUdFX1RJTUUnOw0KPiANCj4gK1N0b3JhZ2VXYWtlVXBGbGFnOiAnU1RPUkFHRV9X QUtFVVAnOw0KPiANCj4gKw0KPiANCj4gK1VuaVF1ZUZsYWc6ICdVTklRVUUnOw0KPiANCj4gK05v RW1wdHlGbGFnOiAnTk9FTVBUWSc7DQo+IA0KPiArDQo+IA0KPiArQ29uZDogJ2NvbmQnOw0KPiAN Cj4gK0ZpbmQ6ICdmaW5kJzsNCj4gDQo+ICtNaWQ6ICdtaWQnOw0KPiANCj4gK1RvazogJ3Rva2Vu JzsNCj4gDQo+ICtTcGFuOiAnc3Bhbic7DQo+IA0KPiArDQo+IA0KPiArLy8gVGhlIHN5bnRheCBv ZiBleHByZXNzaW9uDQo+IA0KPiArDQo+IA0KPiArRHVwOiAnZHVwJzsNCj4gDQo+ICtWYXJFcVZh bDogJ3ZhcmVxdmFsJzsNCj4gDQo+ICtWYXI6ICd2YXInOw0KPiANCj4gK0lkRXFWYWw6ICdpZGVx dmFsJzsNCj4gDQo+ICtJZEVxSWQ6ICdpZGVxaWQnOw0KPiANCj4gK0lkRXFWYWxMaXN0OiAnaWRl cXZhbGxpc3QnOw0KPiANCj4gK1F1ZXN0aW9uUmVmOiAncXVlc3Rpb25yZWYnOw0KPiANCj4gK1J1 bGVSZWY6ICdydWxlcmVmJzsNCj4gDQo+ICtTdHJpbmdSZWY6ICdzdHJpbmdyZWYnOw0KPiANCj4g K1B1c2hUaGlzOiAncHVzaHRoaXMnOw0KPiANCj4gK1NlY3VyaXR5OiAnc2VjdXJpdHknOw0KPiAN Cj4gK0dldDogJ2dldCc7DQo+IA0KPiArVHJ1ZVN5bWJvbDogJ1RSVUUnOw0KPiANCj4gK0ZhbHNl U3ltYm9sOiAnRkFMU0UnOw0KPiANCj4gK09uZTogJ09ORSc7DQo+IA0KPiArT25lczogJ09ORVMn Ow0KPiANCj4gK1plcm86ICdaRVJPJzsNCj4gDQo+ICtVbmRlZmluZWQ6ICdVTkRFRklORUQnOw0K PiANCj4gK1ZlcnNpb246ICdWRVJTSU9OJzsNCj4gDQo+ICtMZW5ndGg6ICdsZW5ndGgnOw0KPiAN Cj4gK0FORDogJ0FORCc7DQo+IA0KPiArT1I6ICdPUic7DQo+IA0KPiArTk9UOiAnTk9UJzsNCj4g DQo+ICtTZXQ6ICdzZXQnOw0KPiANCj4gK0JpdFdpc2VOb3Q6ICd+JzsNCj4gDQo+ICtCb29sVmFs OiAnYm9vbHZhbCc7DQo+IA0KPiArU3RyaW5nVmFsOiAnc3RyaW5ndmFsJzsNCj4gDQo+ICtVbklu dFZhbDogJ3VuaW50dmFsJzsNCj4gDQo+ICtUb1VwcGVyOiAndG91cHBlcic7DQo+IA0KPiArVG9M b3dlcjogJ3RvbG93ZXInOw0KPiANCj4gK01hdGNoOiAnbWF0Y2gnOw0KPiANCj4gK01hdGNoMjog J21hdGNoMic7DQo+IA0KPiArQ2F0ZW5hdGU6ICdjYXRlbmF0ZSc7DQo+IA0KPiArUXVlc3Rpb25S ZWZWYWw6ICdxdWVzdGlvbnJlZnZhbCc7DQo+IA0KPiArU3RyaW5nUmVmVmFsOiAnc3RyaW5ncmVm dmFsJzsNCj4gDQo+ICtNYXA6ICdtYXAnOw0KPiANCj4gK1JlZnJlc2hHdWlkOiAncmVmcmVzaGd1 aWQnOw0KPiANCj4gK1N0cmluZ1Rva2VuOiAnU1RSSU5HX1RPS0VOJzsNCj4gDQo+ICsNCj4gDQo+ ICtPcHRpb25EZWZhdWx0OiAnT1BUSU9OX0RFRkFVTFQnOw0KPiANCj4gK09wdGlvbkRlZmF1bHRN Zmc6ICdPUFRJT05fREVGQVVMVF9NRkcnOw0KPiANCj4gKw0KPiANCj4gK051bWVyaWNTaXplT25l OiAnTlVNRVJJQ19TSVpFXzEnOw0KPiANCj4gK051bWVyaWNTaXplVHdvOiAnTlVNRVJJQ19TSVpF XzInOw0KPiANCj4gK051bWVyaWNTaXplRm91cjogJ05VTUVSSUNfU0laRV80JzsNCj4gDQo+ICtO dW1lcmljU2l6ZUVpZ2h0OiAnTlVNRVJJQ19TSVpFXzgnOw0KPiANCj4gK0Rpc1BsYXlJbnREZWM6 ICdESVNQTEFZX0lOVF9ERUMnOw0KPiANCj4gK0Rpc1BsYXlVSW50RGVjOiAnRElTUExBWV9VSU5U X0RFQyc7DQo+IA0KPiArRGlzUGxheVVJbnRIZXg6ICdESVNQTEFZX1VJTlRfSEVYJzsNCj4gDQo+ ICsNCj4gDQo+ICtJbnNlbnNpdGl2ZTogICdJTlNFTlNJVElWRSc7DQo+IA0KPiArU2Vuc2l0aXZl OiAnU0VOU0lUSVZFJzsNCj4gDQo+ICsNCj4gDQo+ICtMYXN0Tm9uTWF0Y2g6ICdMQVNUX05PTl9N QVRDSCc7DQo+IA0KPiArRmlyc3ROb25NYXRjaDogJ0ZJUlNUX05PTl9NQVRDSCc7DQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArTnVtYmVyDQo+IA0KPiArICAgIDogICAoJzB4J1sw LTlBLUZhLWZdKykgfCBbMC05XSsNCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK1N0cmlu Z0lkZW50aWZpZXINCj4gDQo+ICsgICAgOiAgIFtBLVphLXpfXVtBLVphLXpfMC05XSoNCj4gDQo+ ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK0NvbXBsZXhEZWZpbmUNCj4gDQo+ICsgICAgOiAgICcj JyBXaGl0ZXNwYWNlPyAnZGVmaW5lJyAgflsjXHJcbl0qDQo+IA0KPiArICAgICAgICAtPiBza2lw DQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtMaW5lRGVmaW5pdGlvbg0K PiANCj4gKyAgICA6ICAgJyMnIFdoaXRlc3BhY2U/ICdsaW5lJyAgflsjXHJcbl0qDQo+IA0KPiAr ICAgICAgICAtPiBza2lwDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ICtJbmNsdWRlRGVm aW5pdGlvbg0KPiANCj4gKyAgICA6ICAgJyMnIFdoaXRlc3BhY2U/ICdpbmNsdWRlJyAgflsjXHJc bl0qDQo+IA0KPiArICAgICAgICAtPiBza2lwDQo+IA0KPiArICAgIDsNCj4gDQo+ICsNCj4gDQo+ ICtXaGl0ZXNwYWNlDQo+IA0KPiArICAgIDogICBbIFx0XSsNCj4gDQo+ICsgICAgICAgIC0+IHNr aXANCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gK05ld2xpbmUNCj4gDQo+ICsgICAgOiAg ICggICAnXHInICdcbic/DQo+IA0KPiArICAgICAgICB8ICAgJ1xuJw0KPiANCj4gKyAgICAgICAg KQ0KPiANCj4gKyAgICAgICAgLT4gc2tpcA0KPiANCj4gKyAgICA7DQo+IA0KPiArDQo+IA0KPiAr TGluZUNvbW1lbnQNCj4gDQo+ICsgICAgOiAgICcvLycgfltcclxuXSoNCj4gDQo+ICsgICAgICAg IC0+IHNraXANCj4gDQo+ICsgICAgOw0KPiANCj4gKw0KPiANCj4gKy8vIFNraXAgb3ZlciAnZXh0 ZXJuJyBpbiBhbnkgaW5jbHVkZWQgLkggZmlsZQ0KPiANCj4gK0V4dGVybg0KPiANCj4gKyAgICA6 ICdleHRlcm4nIH5bI1xyXG5dKg0KPiANCj4gKyAgICAgICAgLT4gc2tpcA0KPiANCj4gKyAgICA7 DQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xz L1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3ludGF4TGV4ZXIucHkNCj4gYi9CYXNlVG9v bHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhMZXhlci5weQ0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi4yYjdhNWMzMmEzDQo+IC0tLSAvZGV2 L251bGwNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3lu dGF4TGV4ZXIucHkNCj4gQEAgLTAsMCArMSwxNzA5IEBADQo+ICsjIEdlbmVyYXRlZCBmcm9tIFZm clN5bnRheC5nNCBieSBBTlRMUiA0LjcuMg0KPiANCj4gK2Zyb20gYW50bHI0IGltcG9ydCAqDQo+ IA0KPiArZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8NCj4gDQo+ICtmcm9tIHR5cGluZyBpbXBvcnQg VGV4dElPDQo+IA0KPiAraW1wb3J0IHN5cw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gK2Zyb20gVmZyQ29tcGlsZXIuQ29tbW9uQ3R5cGVzIGltcG9ydCAqDQo+IA0KPiArZnJvbSBW ZnJDb21waWxlci5WZnJGb3JtUGtnIGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5W ZnJVdGlsaXR5IGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5WZnJUcmVlIGltcG9y dCAqDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArZGVmIHNlcmlhbGl6ZWRBVE4o KToNCj4gDQo+ICsgICAgd2l0aCBTdHJpbmdJTygpIGFzIGJ1ZjoNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1NjA4Ylx1YTcyYVx1ODEzM1x1YjllZFx1NDE3Y1x1M2JlN1x1Nzc4Nlx1NTk2NFwy XHUwMTANCj4gMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGFiN1xiXDFcNFwyXHRc Mlw0XDNcdFwzXDRcNFx0XDRcNFw1XHRcNVw0XDZcdFw2XDRcNyIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlx0XDdcNFxiXHRcYlw0XHRcdFx0XDRcblx0XG5cNFwxM1x0XDEzXDRcZlx0XGZc NFxyXHRcciIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw0XDE2XHRcMTZcNFwxN1x0XDE3 XDRcMjBcdFwyMFw0XDIxXHRcMjFcNFwyMlx0XDIyXDRcMjMiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcdFwyM1w0XDI0XHRcMjRcNFwyNVx0XDI1XDRcMjZcdFwyNlw0XDI3XHRcMjdcNFwz MFx0XDMwIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDRcMzFcdFwzMVw0XDMyXHRcMzJc NFwzM1x0XDMzXDRcMzRcdFwzNFw0XDM1XHRcMzVcNFwzNiIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlx0XDM2XDRcMzdcdFwzN1w0IFx0IFw0IVx0IVw0XCJcdFwiXDQjXHQjXDQkXHQkXDQl XHQlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDQmXHQmXDRcJ1x0XCdcNChcdChcNClc dClcNCpcdCpcNCtcdCtcNCxcdCxcNC1cdC1cNC4iKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcdC5cNC9cdC9cNFw2MFx0XDYwXDRcNjFcdFw2MVw0XDYyXHRcNjJcNFw2M1x0XDYzXDRcNjQi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdFw2NFw0XDY1XHRcNjVcNFw2Nlx0XDY2XDRc NjdcdFw2N1w0OFx0OFw0OVx0OVw0Olx0OiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw0 O1x0O1w0PFx0PFw0PVx0PVw0Plx0Plw0P1x0P1w0QFx0QFw0QVx0QVw0Qlx0Qlw0Q1x0IikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiQ1w0RFx0RFw0RVx0RVw0Rlx0Rlw0R1x0R1w0SFx0SFw0 SVx0SVw0Slx0Slw0S1x0S1w0TFx0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJMXDRNXHRNXDRO XHROXDRPXHRPXDRQXHRQXDRRXHRRXDRSXHRSXDRTXHRTXDRUXHRUXDRVXHQiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJVXDRWXHRWXDRXXHRXXDRYXHRYXDRZXHRZXDRaXHRaXDRbXHRbXDRc XFx0XFxcNF1cdF1cNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIl5cdF5cNF9cdF9cNGBc dGBcNGFcdGFcNGJcdGJcNGNcdGNcNGRcdGRcNGVcdGVcNGZcdGZcNCIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoImdcdGdcNGhcdGhcNGlcdGlcNGpcdGpcNGtcdGtcNGxcdGxcNG1cdG1cNG5c dG5cNG9cdG9cNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoInBcdHBcNHFcdHFcNHJcdHJc NHNcdHNcNHRcdHRcNHVcdHVcNHZcdHZcNHdcdHdcNHhcdHhcNCIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoInlcdHlcNHpcdHpcNHtcdHtcNHxcdHxcNH1cdH1cNH5cdH5cNFwxNzdcdFwxNzdc NFx1MDA4MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwODBcNFx1MDA4MVx0XHUwMDgx XDRcdTAwODJcdFx1MDA4Mlw0XHUwMDgzXHRcdTAwODMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilw0XHUwMDg0XHRcdTAwODRcNFx1MDA4NVx0XHUwMDg1XDRcdTAwODZcdFx1MDA4Nlw0XHUwMDg3 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDA4N1w0XHUwMDg4XHRcdTAwODhcNFx1MDA4 OVx0XHUwMDg5XDRcdTAwOGFcdFx1MDA4YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAw OGJcdFx1MDA4Ylw0XHUwMDhjXHRcdTAwOGNcNFx1MDA4ZFx0XHUwMDhkXDRcdTAwOGUiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMDhlXDRcdTAwOGZcdFx1MDA4Zlw0XHUwMDkwXHRcdTAw OTBcNFx1MDA5MVx0XHUwMDkxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1MDA5Mlx0XHUw MDkyXDRcdTAwOTNcdFx1MDA5M1w0XHUwMDk0XHRcdTAwOTRcNFx1MDA5NSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHRcdTAwOTVcNFx1MDA5Nlx0XHUwMDk2XDRcdTAwOTdcdFx1MDA5N1w0XHUw MDk4XHRcdTAwOTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw0XHUwMDk5XHRcdTAwOTlcNFx1 MDA5YVx0XHUwMDlhXDRcdTAwOWJcdFx1MDA5Ylw0XHUwMDljIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdFx1MDA5Y1w0XHUwMDlkXHRcdTAwOWRcNFx1MDA5ZVx0XHUwMDllXDRcdTAwOWZcdFx1 MDA5ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAwYTBcdFx1MDBhMFw0XHUwMGExXHRc dTAwYTFcNFx1MDBhMlx0XHUwMGEyXDRcdTAwYTMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx0 XHUwMGEzXDRcdTAwYTRcdFx1MDBhNFw0XHUwMGE1XHRcdTAwYTVcNFx1MDBhNlx0XHUwMGE2IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1MDBhN1x0XHUwMGE3XDRcdTAwYThcdFx1MDBhOFw0 XHUwMGE5XHRcdTAwYTlcNFx1MDBhYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwYWFc NFx1MDBhYlx0XHUwMGFiXDRcdTAwYWNcdFx1MDBhY1w0XHUwMGFkXHRcdTAwYWQiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw0XHUwMGFlXHRcdTAwYWVcNFx1MDBhZlx0XHUwMGFmXDRcdTAwYjBc dFx1MDBiMFw0XHUwMGIxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBiMVw0XHUwMGIy XHRcdTAwYjJcNFx1MDBiM1x0XHUwMGIzXDRcdTAwYjRcdFx1MDBiNCIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDRcdTAwYjVcdFx1MDBiNVw0XHUwMGI2XHRcdTAwYjZcNFx1MDBiN1x0XHUwMGI3 XDRcdTAwYjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMGI4XDRcdTAwYjlcdFx1MDBi OVw0XHUwMGJhXHRcdTAwYmFcNFx1MDBiYlx0XHUwMGJiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcNFx1MDBiY1x0XHUwMGJjXDRcdTAwYmRcdFx1MDBiZFw0XHUwMGJlXHRcdTAwYmVcNFx1MDBi ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwYmZcNFx1MDBjMFx0XHUwMGMwXDRcdTAw YzFcdFx1MDBjMVw0XHUwMGMyXHRcdTAwYzIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw0XHUw MGMzXHRcdTAwYzNcNFx1MDBjNFx0XHUwMGM0XDRcdTAwYzVcdFx1MDBjNVw0XHUwMGM2IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBjNlw0XHUwMGM3XHRcdTAwYzdcNFx1MDBjOFx0XHUw MGM4XDRcdTAwYzlcdFx1MDBjOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAwY2FcdFx1 MDBjYVw0XHUwMGNiXHRcdTAwY2JcNFx1MDBjY1x0XHUwMGNjXDRcdTAwY2QiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx0XHUwMGNkXDRcdTAwY2VcdFx1MDBjZVw0XHUwMGNmXHRcdTAwY2ZcNFx1 MDBkMFx0XHUwMGQwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1MDBkMVx0XHUwMGQxXDRc dTAwZDJcdFx1MDBkMlw0XHUwMGQzXHRcdTAwZDNcNFx1MDBkNCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHRcdTAwZDRcNFx1MDBkNVx0XHUwMGQ1XDRcdTAwZDZcdFx1MDBkNlw0XHUwMGQ3XHRc dTAwZDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw0XHUwMGQ4XHRcdTAwZDhcNFx1MDBkOVx0 XHUwMGQ5XDRcdTAwZGFcdFx1MDBkYVw0XHUwMGRiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dFx1MDBkYlw0XHUwMGRjXHRcdTAwZGNcNFx1MDBkZFx0XHUwMGRkXDRcdTAwZGVcdFx1MDBkZSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAwZGZcdFx1MDBkZlw0XHUwMGUwXHRcdTAwZTBc NFx1MDBlMVx0XHUwMGUxXDRcdTAwZTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMGUy XDRcdTAwZTNcdFx1MDBlM1w0XHUwMGU0XHRcdTAwZTRcNFx1MDBlNVx0XHUwMGU1IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcNFx1MDBlNlx0XHUwMGU2XDRcdTAwZTdcdFx1MDBlN1w0XHUwMGU4 XHRcdTAwZThcNFx1MDBlOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwZTlcNFx1MDBl YVx0XHUwMGVhXDRcdTAwZWJcdFx1MDBlYlw0XHUwMGVjXHRcdTAwZWMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlw0XHUwMGVkXHRcdTAwZWRcNFx1MDBlZVx0XHUwMGVlXDRcdTAwZWZcdFx1MDBl Zlw0XHUwMGYwIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwZjBcNFx1MDBmMVx0 XHUwMGYxXDRcdTAwZjJcdFx1MDBmMlw0XHUwMGYzXHRcdTAwZjMiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlw0XHUwMGY0XHRcdTAwZjRcNFx1MDBmNVx0XHUwMGY1XDRcdTAwZjZcdFx1MDBmNlw0 XHUwMGY3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwZjdcNFx1MDBmOFx0XHUw MGY4XDRcdTAwZjlcdFx1MDBmOVw0XHUwMGZhXHRcdTAwZmEiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlw0XHUwMGZiXHRcdTAwZmJcNFx1MDBmY1x0XHUwMGZjXDRcdTAwZmRcdFx1MDBmZFw0XHUw MGZlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBmZVw0XHUwMGZmXHRcdTAwZmZcNFx1 MDEwMFx0XHUwMTAwXDRcdTAxMDFcdFx1MDEwMSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IlwzXDJcM1wyXDNcMlwzXDJcM1wyXDNcM1wzXDNcM1wzXDNcM1wzXDNcM1w0XDNcNFwzXDRcMyIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw0XDNcNVwzXDVcM1w1XDNcNVwzXDVcM1w1XDNc NVwzXDVcM1w2XDNcNlwzXDZcM1w2XDNcNiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwz XDdcM1w3XDNcYlwzXGJcM1xiXDNcYlwzXGJcM1xiXDNcYlwzXGJcM1xiXDNcYlwzXGJcMyIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlxiXDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwz XHRcM1x0XDNcdFwzXHRcM1xuXDNcbiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXG5c M1xuXDNcblwzXG5cM1xuXDNcblwzXG5cM1xuXDNcblwzXDEzXDNcMTNcM1wxM1wzIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXGZcM1xmXDNcZlwzXHJcM1xyXDNcMTZcM1wxNlwzXDE3XDNc MTdcM1wyMFwzXDIwXDNcMjAiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyMFwzXDIw XDNcMjBcM1wyMFwzXDIxXDNcMjFcM1wyMlwzXDIyXDNcMjJcM1wyMlwzXDIyIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMjJcM1wyMlwzXDIyXDNcMjNcM1wyM1wzXDIzXDNcMjNcM1wy M1wzXDIzXDNcMjNcM1wyMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDIzXDNcMjRc M1wyNFwzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjQiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyNFwzXDI0XDNcMjVcM1wyNVwzXDI2XDNcMjZcM1wyN1wzXDI3 XDNcMzBcM1wzMFwzXDMxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMzFcM1wzMlwz XDMyXDNcMzNcM1wzM1wzXDM0XDNcMzRcM1wzNVwzXDM1XDNcMzZcM1wzNiIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlwzXDM3XDNcMzdcMyBcMyBcMyFcMyFcMyFcM1wiXDNcIlwzXCJcMyNc MyNcMyNcMyRcMyRcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIiVcMyVcMyVcMyZcMyZc M1wnXDNcJ1wzKFwzKFwzKVwzKVwzKVwzKVwzKVwzKVwzKVwzKVwzIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCIpXDMpXDMpXDMqXDMqXDMqXDMqXDMqXDMqXDMqXDMqXDMrXDMrXDMrXDMrXDMrXDMr XDMrXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCIrXDMrXDMrXDMsXDMsXDMsXDMsXDMs XDMsXDMsXDMsXDMsXDMsXDMsXDMtXDMtXDMtXDMtXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCItXDMtXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMvXDMvXDMvXDMvXDMvXDMvXDNcNjBcM1w2 MCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDYwXDNcNjBcM1w2MFwzXDYwXDNcNjBc M1w2MFwzXDYwXDNcNjFcM1w2MVwzXDYxXDNcNjEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcM1w2MVwzXDYxXDNcNjFcM1w2MlwzXDYyXDNcNjJcM1w2MlwzXDYyXDNcNjJcM1w2MlwzXDYy IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcNjJcM1w2MlwzXDYyXDNcNjJcM1w2M1wz XDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2MyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IlwzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjRcM1w2NFwzXDY0XDNcNjQi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY1XDNc NjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDNcNjVcM1w2NlwzXDY2XDNcNjZcM1w2NlwzXDY2XDNcNjdcM1w2N1wzXDY3XDNcNjdcM1w2NyIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDY3XDNcNjdcM1w2N1wzOFwzOFwzOFwzOFwz OFwzOFwzOFwzOFwzOFwzOVwzOVwzOVwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiOVwz OVwzOVwzOVwzOVwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzOlwzO1wzO1wzO1wzO1wzIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiO1wzO1wzO1wzO1wzO1wzO1wzO1wzO1wzPFwzPFwzPFwz PFwzPFwzPVwzPVwzPVwzPVwzPVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCI+XDM+XDM+XDM+ XDM+XDM+XDM+XDM/XDM/XDM/XDM/XDM/XDM/XDNAXDNAXDNAXDNAXDNAXDMNCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDNCXDNCXDNCXDNCXDNCXDND XDNDXDNDXDNDXDNDXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIkNcM0RcM0RcM0RcM0RcM0Vc M0VcM0VcM0VcM0VcM0ZcM0ZcM0ZcM0ZcM0ZcM0ZcM0ZcM0ZcMyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiR1wzR1wzR1wzR1wzR1wzSFwzSFwzSFwzSFwzSFwzSFwzSFwzSVwzSVwzSVwzSVwzSVwz SVwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiSVwzSlwzSlwzSlwzSlwzSlwzSlwzSlwz SlwzSlwzSlwzS1wzS1wzS1wzS1wzS1wzS1wzTFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJM XDNMXDNMXDNMXDNMXDNMXDNMXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDNNXDMNCj4gTlwz IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJOXDNOXDNOXDNOXDNOXDNOXDNOXDNOXDNOXDNOXDNO XDNOXDNOXDNOXDNOXDNOXDNPXDNPDQo+IFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJPXDNP XDNPXDNPXDNPXDNQXDNQXDNQXDNQXDNQXDNQXDNRXDNRXDNRXDNRXDNRXDNRXDNRXDMNCj4gIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJRXDNSXDNSXDNSXDNSXDNSXDNSXDNSXDNTXDNTXDNTXDNT XDNTXDNTXDNTXDNUXDNUXDNUXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlRcM1RcM1RcM1Rc M1VcM1VcM1VcM1VcM1VcM1VcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcM1ZcMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiVlwzVlwzVlwzVlwzVlwzVlwzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wzV1wz V1wzDQo+IFdcM1dcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiV1wzWFwzWFwzWFwzWFwzWFwz WFwzWFwzWFwzWFwzWFwzWFwzWFwzWFwzWVwzWVwzWVwzWVwzIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiWVwzWVwzWVwzWVwzWVwzWVwzWVwzWVwzWlwzWlwzWlwzWlwzWlwzW1wzW1wzW1wz W1wzW1wzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiW1wzW1wzW1wzW1wzXFxcM1xcXDNc XFwzXFxcM1xcXDNcXFwzXFxcM1xcXDNcXFwzXFxcM1xcIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXDNcXFwzXVwzXVwzXVwzXVwzXVwzXVwzXVwzXVwzXlwzXlwzXlwzXlwzXlwzXlwzXlwz XlwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXlwzXlwzXlwzX1wzX1wzX1wzX1wzX1wz X1wzX1wzX1wzYFwzYFwzYFwzYFwzYFwzYFwzYFwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiYFwzYVwzYVwzYVwzYVwzYVwzYlwzYlwzYlwzYlwzYlwzYlwzYlwzYlwzY1wzY1wzY1wzY1wz IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJjXDNjXDNjXDNjXDNjXDNkXDNkXDNkXDNkXDNkXDNk XDNkXDNkXDNkXDNkXDNkXDNkXDNlXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJlXDNl XDNlXDNlXDNlXDNlXDNmXDNmXDNmXDNmXDNmXDNmXDNmXDNmXDNmXDNmXDNnXDNnXDMiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJnXDNnXDNnXDNnXDNnXDNnXDNoXDNoXDNoXDNoXDNoXDNo XDNoXDNoXDNpXDNpXDNpXDNpXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJpXDNpXDNp XDNpXDNpXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNqXDNrXDNrXDMiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJrXDNrXDNrXDNrXDNrXDNrXDNrXDNrXDNsXDNsXDNsXDNsXDNs XDNsXDNsXDNtXDNtXDNtXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIm1cM21cM25cM25cM25c M25cM25cM25cM25cM25cM25cM25cM25cM25cM29cM29cM29cM29cMyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgib1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzb1wzcFwzcFwzcFwzcFwzcFwz cFwzcFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJwXDNwXDNwXDNxXDNxXDNxXDNxXDNxXDNx XDNxXDNxXDNxXDNxXDNxXDNyXDNyXDNyXDNyXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJyXDNyXDNzXDNzXDNzXDNzXDN0XDN0XDN0XDN0XDN0XDN0XDN0XDN0XDN1XDN1XDN1XDN1XDMi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInVcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3Zc M3ZcM3ZcM3ZcM3ZcM3ZcM3ZcM3ZcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgidlwzdlwzdlwz dlwzdlwzdlwzdlwzdlwzdlwzd1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzd1wzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJ3XDN3XDN3XDN3XDN3XDN3XDN3XDN3XDN3XDN3XDN3XDN3XDN4XDN4XDN4 XDN4XDN4XDN4XA0KPiAzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgieFwzeFwzeFwzeFwz eFwzeFwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzelwzelwzIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgielwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelwzelwze1wz e1wze1wze1wze1wzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgie1wze1wze1wze1wze1wz e1wze1wze1wze1wze1wze1wze1wze1wze1wzfFwzfFwzfFwzfFwzIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgifFwzfFwzfFwzfFwzfFwzfFwzfFwzfVwzfVwzfVwzfVwzfVwzfVwzfVwzfVwz fVwzfVwzflwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ+XDN+XDN+XDN+XDN+XDN+XDN+XDN+ XDN+XDN+XDN+XDN+XDNcMTc3XDNcMTc3XDNcMTc3XDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcMTc3XDNcMTc3XDNcMTc3XDNcMTc3XDNcMTc3XDNcMTc3XDNcMTc3XDNcMTc3XDNcdTAw ODAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDgwXDNcdTAwODBcM1x1MDA4MFwzXHUw MDgwXDNcdTAwODBcM1x1MDA4MVwzXHUwMDgxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1 MDA4MVwzXHUwMDgxXDNcdTAwODFcM1x1MDA4MVwzXHUwMDgxXDNcdTAwODFcM1x1MDA4MSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwODJcM1x1MDA4MlwzXHUwMDgyXDNcdTAwODJcM1x1 MDA4MlwzXHUwMDgyXDNcdTAwODIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDgyXDNc dTAwODJcM1x1MDA4MlwzXHUwMDgzXDNcdTAwODNcM1x1MDA4M1wzXHUwMDgzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDA4M1wzXHUwMDgzXDNcdTAwODNcM1x1MDA4M1wzXHUwMDg0XDNc dTAwODRcM1x1MDA4NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwODRcM1x1MDA4NFwz XHUwMDg0XDNcdTAwODRcM1x1MDA4NFwzXHUwMDg1XDNcdTAwODUiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMDg1XDNcdTAwODVcM1x1MDA4NVwzXHUwMDg2XDNcdTAwODZcM1x1MDA4Nlwz XHUwMDg2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZc M1x1MDA4NlwzXHUwMDg2XDNcdTAwODdcM1x1MDA4NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcdTAwODdcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4N1wzXHUwMDg4XDNcdTAwODgi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4 XDNcdTAwODlcM1x1MDA4OVwzXHUwMDg5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4 OVwzXHUwMDg5XDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGFcM1x1MDA4YSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGFcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4 YlwzXHUwMDhiXDNcdTAwOGIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDhiXDNcdTAw OGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhkIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcM1x1MDA4ZFwzXHUwMDhkXDNcdTAwOGRcM1x1MDA4ZFwzXHUwMDhlXDNcdTAw OGVcM1x1MDA4ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGVcM1x1MDA4ZVwzXHUw MDhlXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGYiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA5MFwzXHUw MDkwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA5MFwzXHUwMDkwXDNcdTAwOTBcM1x1 MDA5MFwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwOTBcM1x1MDA5MFwzXHUwMDkxXDNcdTAwOTFcM1x1MDA5MVwzXHUwMDkxXDNcdTAwOTEiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDkxXDNcdTAwOTJcM1x1MDA5MlwzXHUwMDkyXDNc dTAwOTJcM1x1MDA5MlwzXHUwMDkyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA5Mlwz XHUwMDkzXDNcdTAwOTNcM1x1MDA5M1wzXHUwMDkzXDNcdTAwOTNcM1x1MDA5NCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwOTRcM1x1MDA5NFwzXHUwMDk0XDNcdTAwOTRcM1x1MDA5NFwz XHUwMDk0XDNcdTAwOTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDk1XDNcdTAwOTVc M1x1MDA5NVwzXHUwMDk1XDNcdTAwOTVcM1x1MDA5NVwzXHUwMDk2IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDA5NlwzXHUwMDk2XDNcdTAwOTZcM1x1MDA5NlwzXHUwMDk3XDNcdTAwOTdc M1x1MDA5NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOTdcM1x1MDA5N1wzXHUwMDk3 XDNcdTAwOThcM1x1MDA5OFwzXHUwMDk4XDNcdTAwOTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXHUwMDk4XDNcdTAwOThcM1x1MDA5OFwzXHUwMDk4XDNcdTAwOThcM1x1MDA5OFwzXHUwMDk4 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA5OFwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5 OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw OTlcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5OVwzXHUwMDk5XDNcdTAwOTkiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDk5XDNcdTAwOTlcM1x1MDA5YVwzXHUwMDlhXDNcdTAw OWFcM1x1MDA5YVwzXHUwMDlhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA5YVwzXHUw MDlhXDNcdTAwOWFcM1x1MDA5YVwzXHUwMDlhXDNcdTAwOWFcM1x1MDA5YSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcdTAwOWFcM1x1MDA5YlwzXHUwMDliXDNcdTAwOWJcM1x1MDA5YlwzXHUw MDliXDNcdTAwOWIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDliXDNcdTAwOWJcM1x1 MDA5YlwzXHUwMDliXDNcdTAwOWNcM1x1MDA5Y1wzXHUwMDljIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDA5Y1wzXHUwMDljXDNcdTAwOWNcM1x1MDA5Y1wzXHUwMDljXDNcdTAwOWNcM1x1 MDA5ZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNc dTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMDlkXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkXDNcdTAwOWVcM1x1MDA5ZVwzXHUwMDllIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA5ZVwzXHUwMDllXDNcdTAwOWVcM1x1MDA5ZVwz XHUwMDllXDNcdTAwOWZcM1x1MDA5ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWZc M1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWYiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwzXHUwMDlmXDNcdTAwOWZcM1x1MDA5ZlwzXHUwMDlmXDNcdTAwOWZc M1x1MDA5ZlwzXHUwMDlmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA5ZlwzXHUwMDlm XDNcdTAwYTBcM1x1MDBhMFwzXHUwMGEwXDNcdTAwYTBcM1x1MDBhMCIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcdTAwYTBcM1x1MDBhMFwzXHUwMGExXDNcdTAwYTFcM1x1MDBhMVwzXHUwMGEx XDNcdTAwYTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGExXDNcdTAwYTFcM1x1MDBh MlwzXHUwMGEyXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcM1x1MDBhMlwzXHUwMGEyXDNcdTAwYTJcM1x1MDBhMlwzXHUwMGEyXDNcdTAwYTNcM1x1MDBh MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAw YTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUw MGE0XDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhNFwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUw MGE1XDNcdTAwYTVcM1x1MDBhNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYTVcM1x1 MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTUiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNlwzXHUwMGE2XDNcdTAwYTZcM1x1 MDBhNlwzXHUwMGE2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhNlwzXHUwMGE2XDNc dTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTdcM1x1MDBhNyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE4XDNc dTAwYTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwz XHUwMGE4XDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1x1MDBhOVwzXHUwMGE5XDNcdTAwYTlcM1x1MDBhOVwzXHUwMGE5XDNcdTAwYWFcM1x1MDBhYSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWFcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFc M1x1MDBhYlwzXHUwMGFiXDNcdTAwYWIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGFi XDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYlwzXHUwMGFiIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhYlwzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFj XDNcdTAwYWNcM1x1MDBhYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWNcM1x1MDBh Y1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWQiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWRcM1x1MDBh ZFwzXHUwMGFkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhZFwzXHUwMGFkXDNcdTAw YWRcM1x1MDBhZFwzXHUwMGFkXDNcdTAwYWVcM1x1MDBhZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDNcdTAw YWUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUw MGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1 MDBhZlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWZcM1x1MDBhZiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWZcM1x1 MDBhZlwzXHUwMGIwXDNcdTAwYjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGIwXDNc dTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIwXDNc dTAwYjBcM1x1MDBiMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjFcM1x1MDBiMVwz XHUwMGIxXDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjEiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMGIxXDNcdTAwYjFcM1x1MDBiMVwzXHUwMGIxXDNcdTAwYjFcM1x1MDBiMlwz XHUwMGIyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjJc M1x1MDBiMlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiM1wzXHUwMGIz XDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBi M1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBiMyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjNcM1x1MDBiM1wzXHUwMGIzXDNcdTAwYjNcM1x1MDBi M1wzXHUwMGIzXDNcdTAwYjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGIzXDNcdTAw YjRcM1x1MDBiNFwzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI0IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcM1x1MDBiNFwzXHUwMGI0XDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI0XDNcdTAw YjVcM1x1MDBiNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjVcM1x1MDBiNVwzXHUw MGI1XDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI1XDNcdTAwYjUiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwzXHUwMGI1XDNcdTAwYjVcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlwzXHUw MGI2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjZcM1x1 MDBiNlwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwYjZcM1x1MDBiNlwzXHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNcdTAwYjciKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGI3XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI3XDNc dTAwYjdcM1x1MDBiN1wzXHUwMGI3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiN1wz XHUwMGI3XDNcdTAwYjdcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwz XHUwMGI4XDNcdTAwYjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGI4XDNcdTAwYjhc M1x1MDBiOVwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5XDNcdTAwYjlc M1x1MDBiOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjlcM1x1MDBiOVwzXHUwMGJh XDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJh IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBi YVwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw YmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmINCj4gIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwz XHUwMGJiXDNcdTAwYmJcM1x1MDBiYw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUw MGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJjIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUw MGJjXDNcdTAwYmNcM1x1MDBiYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmRcM1x1 MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmQNCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiZFwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJk XDNcdTAwYmRcM1x1MDBiZQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGJlXDNc dTAwYmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlDQo+ICIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlXDNcdTAwYmVcM1x1MDBi ZVwzXHUwMGJlXDNcdTAwYmUNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiZlwz XHUwMGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNcdTAwYmZcM1x1MDBiZiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwYzBcM1x1MDBjMFwzXHUwMGMwXDNcdTAwYzBcM1x1MDBjMFwz XHUwMGMwXDNcdTAwYzAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGMwXDNcdTAwYzFc M1x1MDBjMVwzXHUwMGMxXDNcdTAwYzFcM1x1MDBjMVwzXHUwMGMyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDBjMlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBjMlwzXHUwMGMzXDNcdTAwYzNc M1x1MDBjMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYzNcM1x1MDBjNFwzXHUwMGM0 XDNcdTAwYzRcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNlwzXHUwMGM2 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjNlwzXHUwMGM2XDNcdTAwYzdcM1x1MDBj N1wzXHUwMGM3XDNcdTAwYzdcM1x1MDBjNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw YzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzdcM1x1MDBjOFwzXHUwMGM4XDNcdTAwYzgiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGM4XDNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNcdTAw YzlcM1x1MDBjOVwzXHUwMGM5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjOVwzXHUw MGM5XDNcdTAwY2FcM1x1MDBjYVwzXHUwMGNhXDNcdTAwY2FcM1x1MDBjYSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcdTAwY2FcM1x1MDBjYVwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUw MGNiXDNcdTAwY2IiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGNiXDNcdTAwY2JcM1x1 MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjXDNcdTAwY2NcM1x1 MDBjYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwY2NcM1x1MDBjY1wzXHUwMGNjXDNc dTAwY2NcM1x1MDBjY1wzXHUwMGNkXDNcdTAwY2QiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMGNkXDNcdTAwY2RcM1x1MDBjZFwzXHUwMGNkXDNcdTAwY2RcM1x1MDBjZFwzXHUwMGNlIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjZVwzXHUwMGNlXDNcdTAwY2VcM1x1MDBjZVwz XHUwMGNlXDNcdTAwY2VcM1x1MDBjZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwY2Vc M1x1MDBjZVwzXHUwMGNmXDNcdTAwY2ZcM1x1MDBjZlwzXHUwMGNmXDNcdTAwY2YiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwzXHUwMGNmXDNcdTAwY2ZcM1x1MDBjZlwzXHUwMGNmXDNcdTAwZDBc M1x1MDBkMFwzXHUwMGQwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBkMFwzXHUwMGQw XDNcdTAwZDBcM1x1MDBkMFwzXHUwMGQwXDNcdTAwZDBcM1x1MDBkMSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcdTAwZDFcM1x1MDBkMVwzXHUwMGQxXDNcdTAwZDJcM1x1MDBkMlwzXHUwMGQy XDNcdTAwZDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGQyXDNcdTAwZDNcM1x1MDBk M1wzXHUwMGQzXDNcdTAwZDNcM1x1MDBkM1wzXHUwMGQzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcM1x1MDBkNFwzXHUwMGQ0XDNcdTAwZDRcM1x1MDBkNFwzXHUwMGQ1XDNcdTAwZDVcM1x1MDBk NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZDVcM1x1MDBkNVwzXHUwMGQ2XDNcdTAw ZDZcM1x1MDBkNlwzXHUwMGQ2XDNcdTAwZDYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUw MGQ3XDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ3XDNcdTAwZDdcM1x1MDBkN1wzXHUwMGQ3IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBkN1wzXHUwMGQ3XDNcdTAwZDdcM1x1MDBkOFwzXHUw MGQ4XDNcdTAwZDhcM1x1MDBkOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZDhcM1x1 MDBkOFwzXHUwMGQ4XDNcdTAwZDhcM1x1MDBkOVwzXHUwMGQ5XDNcdTAwZDkiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzXHUwMGQ5XDNcdTAwZDlcM1x1MDBkOVwzXHUwMGQ5XDNcdTAwZGFcM1x1 MDBkYVwzXHUwMGRhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBkYVwzXHUwMGRiXDNc dTAwZGJcM1x1MDBkYlwzXHUwMGRjXDNcdTAwZGNcM1x1MDBkYyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNcdTAwZGNcM1x1MDBkZFwzXHUwMGRkXDNcdTAwZGRcM1x1MDBkZFwzXHUwMGRlXDNc dTAwZGUNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBkZlwzXHUwMGRmXDNcdTAw ZGZcM1x1MDBkZlwzXHUwMGRmXDNcdTAwZGZcM1x1MDBkZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcdTAwZGZcM1x1MDBlMFwzXHUwMGUwXDNcdTAwZTBcM1x1MDBlMFwzXHUwMGUwXDNcdTAw ZTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGUwXDNcdTAwZTBcM1x1MDBlMFwzXHUw MGUwXDNcdTAwZTFcM1x1MDBlMVwzXHUwMGUxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1 MDBlMVwzXHUwMGUxXDNcdTAwZTFcM1x1MDBlMVwzXHUwMGUxXDNcdTAwZTFcM1x1MDBlMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZTJcM1x1MDBlMlwzXHUwMGUyXDNcdTAwZTJcM1x1 MDBlMlwzXHUwMGUyXDNcdTAwZTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGUzXDNc dTAwZTNcM1x1MDBlM1wzXHUwMGUzXDNcdTAwZTNcM1x1MDBlM1wzXHUwMGUzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDBlM1wzXHUwMGU0XDNcdTAwZTRcM1x1MDBlNFwzXHUwMGU0XDNc dTAwZTRcM1x1MDBlNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZTVcM1x1MDBlNVwz XHUwMGU1XDNcdTAwZTVcM1x1MDBlNVwzXHUwMGU1XDNcdTAwZTUiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMGU2XDNcdTAwZTZcM1x1MDBlNlwzXHUwMGU2XDNcdTAwZTZcM1x1MDBlNlwz XHUwMGU2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBlNlwzXHUwMGU2XDNcdTAwZTdc M1x1MDBlN1wzXHUwMGU3XDNcdTAwZTdcM1x1MDBlNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU3XDNcdTAwZTci KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGU3XDNcdTAwZTdcM1x1MDBlN1wzXHUwMGU4 XDNcdTAwZThcM1x1MDBlOFwzXHUwMGU4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBl OFwzXHUwMGU4XDNcdTAwZThcM1x1MDBlOFwzXHUwMGU4XDNcdTAwZThcM1x1MDBlOCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZThcM1x1MDBlOFwzXHUwMGU5XDNcdTAwZTlcM1x1MDBl OVwzXHUwMGU5XDNcdTAwZWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGVhXDNcdTAw ZWFcM1x1MDBlYVwzXHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGVhIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcM1x1MDBlYVwzXHUwMGVhXDNcdTAwZWFcM1x1MDBlYVwzXHUwMGViXDNcdTAw ZWJcM1x1MDBlYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWJcM1x1MDBlYlwzXHUw MGViXDNcdTAwZWJcM1x1MDBlYlwzXHUwMGViXDNcdTAwZWINCj4gIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDBlYlwzXHUwMGViXDNcdTAwZWJcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWNc M1x1MDBlYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVj XDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXHUwMGVjXDNcdTAwZWNcM1x1MDBlY1wzXHUwMGVjXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVk IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBlZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBl ZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVkDQo+ ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWRcM1x1MDBlZFwzXHUwMGVlXDNcdTAw ZWVcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWUNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1x1MDBlZVwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZQ0K PiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGVlXDNcdTAwZWVcM1x1MDBlZVwzXHUw MGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1 MDBlZlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZWZcM1x1MDBlZiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZWZcM1x1MDBlZlwzXHUwMGVmXDNcdTAwZWZcM1x1 MDBmMFwzXHUwMGYwXDNcdTAwZjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGYwXDNc dTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYwIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDBmMFwzXHUwMGYwXDNcdTAwZjBcM1x1MDBmMFwzXHUwMGYwXDNc dTAwZjFcM1x1MDBmMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZjFcM1x1MDBmMVwz XHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjEiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwzXHUwMGYxXDNcdTAwZjFcM1x1MDBmMVwz XHUwMGYyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJc M1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJcM1x1MDBmMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjJcM1x1MDBmMlwzXHUwMGYyXDNcdTAwZjIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGYyXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYz XDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBm M1wzXHUwMGYzXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjNcM1x1MDBmMyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZjNcM1x1MDBmM1wzXHUwMGYzXDNcdTAwZjNcM1x1MDBm NFwzXHUwMGY0XDNcdTAwZjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGY0XDNcdTAw ZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcM1x1MDBmNFwzXHUwMGY0XDNcdTAwZjRcM1x1MDBmNFwzXHUwMGY0XDNcdTAw ZjRcM1x1MDBmNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwZjVcM1x1MDBmNVwzXHUw MGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1XDNcdTAwZjUiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNVwzXHUwMGY1XDNcdTAwZjVcM1x1MDBmNlwzXHUw MGY2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBmNlwzXHUwMGY2XDNcdTAwZjZcM1x1 MDBmNlwzXHUwMGY2XDNcdTAwZjZcM1x1MDBmNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwZjZcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3XDNcdTAwZjciKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGY3XDNcdTAwZjdcM1x1MDBmN1wzXHUwMGY3XDNc dTAwZjdcM1x1MDBmN1wzXHUwMGY3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBmN1wz XHUwMGY3XDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwZjhcM1x1MDBmOFwzXHUwMGY4XDNcdTAwZjhcM1x1MDBmOFwz XHUwMGY4XDNcdTAwZjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGY4XDNcdTAwZjhc M1x1MDBmOFwzXHUwMGY4XDNcdTAwZjlcM1x1MDBmOVwzXHUwMGY5IikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDNcdTAwZjlcNlx1MDBmOVx1MGE0NFxuXHUwMGY5XHJcdTAwZjlcMTZcdTAw ZjlcdTBhNDUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmOVw2XHUwMGY5XHUw YTQ5XG5cdTAwZjlcclx1MDBmOVwxNlx1MDBmOVx1MGE0YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDVcdTAwZjlcdTBhNGRcblx1MDBmOVwzXHUwMGZhXDNcdTAwZmFcN1x1MDBmYVx1MGE1MVxu IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGZhXGZcdTAwZmFcMTZcdTAwZmFcdTBh NTRcMTNcdTAwZmFcM1x1MDBmYlwzXHUwMGZiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1 MDBmYlx1MGE1OFxuXHUwMGZiXDNcdTAwZmJcM1x1MDBmYlwzXHUwMGZiXDNcdTAwZmIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGZiXDNcdTAwZmJcM1x1MDBmYlwzXHUwMGZiXDdcdTAw ZmJcdTBhNjJcblx1MDBmYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXGZcdTAwZmJcMTZcdTAw ZmJcdTBhNjVcMTNcdTAwZmJcM1x1MDBmYlwzXHUwMGZiXDNcdTAwZmMiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcM1x1MDBmY1w1XHUwMGZjXHUwYTZiXG5cdTAwZmNcM1x1MDBmY1wzXHUw MGZjXDNcdTAwZmMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBmY1wzXHUwMGZj XDNcdTAwZmNcN1x1MDBmY1x1MGE3M1xuXHUwMGZjXGZcdTAwZmMiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwxNlx1MDBmY1x1MGE3NlwxM1x1MDBmY1wzXHUwMGZjXDNcdTAwZmNcM1x1MDBmZFwz XHUwMGZkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDBmZFx1MGE3Y1xuXHUwMGZkXDNc dTAwZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAwZmQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMGZkXDNcdTAwZmRcM1x1MDBmZFwzXHUwMGZkXDNcdTAwZmRcN1x1MDBmZFx1MGE4NyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXG5cdTAwZmRcZlx1MDBmZFwxNlx1MDBmZFx1MGE4YVwxM1x1 MDBmZFwzXHUwMGZkXDNcdTAwZmQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1x1MDBm ZVw2XHUwMGZlXHUwYThmXG5cdTAwZmVcclx1MDBmZVwxNlx1MDBmZVx1MGE5MCIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlwzXHUwMGZlXDNcdTAwZmVcM1x1MDBmZlwzXHUwMGZmXDVcdTAw ZmZcdTBhOTdcblx1MDBmZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXHUwMGZmXDVc dTAwZmZcdTBhOWFcblx1MDBmZlwzXHUwMGZmXDNcdTAwZmZcM1x1MDEwMCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcdTAxMDBcM1x1MDEwMFwzXHUwMTAwXDdcdTAxMDBcdTBhYTJcblx1MDEw MFxmXHUwMTAwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMTZcdTAxMDBcdTBhYTVcMTNcdTAx MDBcM1x1MDEwMFwzXHUwMTAwXDNcdTAxMDFcM1x1MDEwMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcdTAxMDFcM1x1MDEwMVwzXHUwMTAxXDNcdTAxMDFcM1x1MDEwMVwzXHUwMTAxXDdcdTAx MDEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGFiMVxuXHUwMTAxXGZcdTAxMDFcMTZcdTAx MDFcdTBhYjRcMTNcdTAxMDFcM1x1MDEwMSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwz XHUwMTAxXDJcMlx1MDEwMlwzXDNcNVw0XDdcNVx0XDZcMTNcN1xyXGJcMTdcdFwyMVxuIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDIzXDEzXDI1XGZcMjdcclwzMVwxNlwzM1wxN1wzNVwy MFwzN1wyMSFcMjIjXDIzJVwyNFwnIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDI1KVwy NitcMjctXDMwL1wzMVw2MVwzMlw2M1wzM1w2NVwzNFw2N1wzNTlcMzY7XDM3PSAiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCI/IUFcIkMjRSRHJUkmS1wnTShPKVEqUytVLFctDQo+IFkuWy9d XDYwX1w2MWFcNjJjXDYzZVw2NGciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw2NWlcNjZrXDY3 bThvOXE6czt1PHc9eT57P31AXDE3N0FcdTAwODFCXHUwMDgzQ1x1MDA4NSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiRFx1MDA4N0VcdTAwODlGXHUwMDhiR1x1MDA4ZEhcdTAwOGZJXHUwMDkxSlx1 MDA5M0tcdTAwOTUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIkxcdTAwOTdNXHUwMDk5Tlx1MDA5 Yk9cdTAwOWRQXHUwMDlmUVx1MDBhMVJcdTAwYTNTXHUwMGENCj4gNSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiVFx1MDBhN1VcdTAwYTlWXHUwMGFiV1x1MDBhZFhcdTAwYWZZXHUwMGIxWlx1MDBi M1tcdTAwYg0KPiA1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcXFx1MDBiN11cdTAwYjleXHUw MGJiX1x1MDBiZGBcdTAwYmZhXHUwMGMxYlx1MDBjM2NcdTAwYzUiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoImRcdTAwYzdlXHUwMGM5Zlx1MDBjYmdcdTAwY2RoXHUwMGNmaVx1MDBkMWpcdTAwZDNr XHUwMGQ1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJsXHUwMGQ3bVx1MDBkOW5cdTAwZGJvXHUw MGRkcFx1MDBkZnFcdTAwZTFyXHUwMGUzc1x1MDBlNQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoInRcdTAwZTd1XHUwMGU5dlx1MDBlYndcdTAwZWR4XHUwMGVmeVx1MDBmMXpcdTAwZjN7XHUw MGY1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ8XHUwMGY3fVx1MDBmOX5cdTAwZmJcMTc3XHUw MGZkXHUwMDgwXHUwMGZmXHUwMDgxXHUwMTAxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAw ODJcdTAxMDNcdTAwODNcdTAxMDVcdTAwODRcdTAxMDdcdTAwODVcdTAxMDlcdTAwODYiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDEwYlx1MDA4N1x1MDEwZFx1MDA4OFx1MDEwZlx1MDA4OVx1 MDExMVx1MDA4YVx1MDExMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMDhiXHUwMTE1XHUw MDhjXHUwMTE3XHUwMDhkXHUwMTE5XHUwMDhlXHUwMTFiXHUwMDhmIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTAxMWRcdTAwOTBcdTAxMWZcdTAwOTFcdTAxMjFcdTAwOTJcdTAxMjNcdTAwOTNc dTAxMjUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDA5NFx1MDEyN1x1MDA5NVx1MDEyOVx1 MDA5Nlx1MDEyYlx1MDA5N1x1MDEyZFx1MDA5OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw MTJmXHUwMDk5XHUwMTMxXHUwMDlhXHUwMTMzXHUwMDliXHUwMTM1XHUwMDljXHUwMTM3IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwOWRcdTAxMzlcdTAwOWVcdTAxM2JcdTAwOWZcdTAxM2Rc dTAwYTBcdTAxM2ZcdTAwYTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE0MVx1MDBhMlx1 MDE0M1x1MDBhM1x1MDE0NVx1MDBhNFx1MDE0N1x1MDBhNVx1MDE0OSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMGE2XHUwMTRiXHUwMGE3XHUwMTRkXHUwMGE4XHUwMTRmXHUwMGE5XHUwMTUx XHUwMGFhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxNTNcdTAwYWJcdTAxNTVcdTAwYWNc dTAxNTdcdTAwYWRcdTAxNTlcdTAwYWVcdTAxNWIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDBhZlx1MDE1ZFx1MDBiMFx1MDE1Zlx1MDBiMVx1MDE2MVx1MDBiMlx1MDE2M1x1MDBiMyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTY1XHUwMGI0XHUwMTY3XHUwMGI1XHUwMTY5XHUwMGI2 XHUwMTZiXHUwMGI3XHUwMTZkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYjhcdTAxNmZc dTAwYjlcdTAxNzFcdTAwYmFcdTAxNzNcdTAwYmJcdTAxNzVcdTAwYmMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDE3N1x1MDBiZFx1MDE3OVx1MDBiZVx1MDE3Ylx1MDBiZlx1MDE3ZFx1MDBj MFx1MDE3ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGMxXHUwMTgxXHUwMGMyXHUwMTgz XHUwMGMzXHUwMTg1XHUwMGM0XHUwMTg3XHUwMGM1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAxODlcdTAwYzZcdTAxOGJcdTAwYzdcdTAxOGRcdTAwYzhcdTAxOGZcdTAwYzlcdTAxOTEiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBjYVx1MDE5M1x1MDBjYlx1MDE5NVx1MDBjY1x1MDE5 N1x1MDBjZFx1MDE5OVx1MDBjZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTliXHUwMGNm XHUwMTlkXHUwMGQwXHUwMTlmXHUwMGQxXHUwMWExXHUwMGQyXHUwMWEzIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAwZDNcdTAxYTVcdTAwZDRcdTAxYTdcdTAwZDVcdTAxYTlcdTAwZDZcdTAx YWJcdTAwZDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFhZFx1MDBkOFx1MDFhZlx1MDBk OVx1MDFiMVx1MDBkYVx1MDFiM1x1MDBkYlx1MDFiNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMGRjXHUwMWI3XHUwMGRkXHUwMWI5XHUwMGRlXHUwMWJiXHUwMGRmXHUwMWJkXHUwMGUwIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxYmZcdTAwZTFcdTAxYzFcdTAwZTJcdTAxYzNcdTAw ZTNcdTAxYzVcdTAwZTRcdTAxYzciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBlNVx1MDFj OVx1MDBlNlx1MDFjYlx1MDBlN1x1MDFjZFx1MDBlOFx1MDFjZlx1MDBlOSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMWQxXHUwMGVhXHUwMWQzXHUwMGViXHUwMWQ1XHUwMGVjXHUwMWQ3XHUw MGVkXHUwMWQ5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwZWVcdTAxZGJcdTAwZWZcdTAx ZGRcdTAwZjBcdTAxZGZcdTAwZjFcdTAxZTFcdTAwZjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDFlM1x1MDBmM1x1MDFlNVx1MDBmNFx1MDFlN1x1MDBmNVx1MDFlOVx1MDBmNlx1MDFlYiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGY3XHUwMWVkXHUwMGY4XHUwMWVmXHUwMGY5XHUw MWYxXHUwMGZhXHUwMWYzXHUwMGZiIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMWY1 XHUwMGZjXHUwMWY3XHUwMGZkXHUwMWY5XHUwMGZlXHUwMWZiXHUwMGZmXHUwMWZkIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAxMDBcdTAxZmZcdTAxMDFcdTAyMDFcdTAxMDJcM1wyXHRcNVwy XDYyO0NIY2hcM1wyXDYyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiO1w1XDJDXFxhYWN8 XDZcMlw2MjtDXFxhYWN8XDVcMlxmXGZcMTdcMTclJVw0XDJcMTNcMTMiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcIlwiXDRcMlxmXGZcMTdcMTdcMlx1MGFjNVwyXDNcM1wyXDJcMlwyXDVc M1wyXDJcMlwyXDciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHRcM1wy XDJcMlwyXDEzXDNcMlwyXDJcMlxyXDNcMlwyXDJcMlwxN1wzXDIiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcMlwyXDJcMjFcM1wyXDJcMlwyXDIzXDNcMlwyXDJcMlwyNVwzXDJcMlwyXDJc MjdcM1wyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDMxXDNcMlwyXDJcMlwz M1wzXDJcMlwyXDJcMzVcM1wyXDJcMlwyXDM3XDNcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcMiFcM1wyXDJcMlwyI1wzXDJcMlwyXDIlXDNcMlwyXDJcMlwnXDNcMlwyXDJcMilc M1wyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyK1wzXDJcMlwyXDItXDNcMlwy XDJcMi9cM1wyXDJcMlwyXDYxXDNcMlwyXDJcMlw2MyIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlwzXDJcMlwyXDJcNjVcM1wyXDJcMlwyXDY3XDNcMlwyXDJcMjlcM1wyXDJcMlwyO1wzXDJc MiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDI9XDNcMlwyXDJcMj9cM1wyXDJcMlwy QVwzXDJcMlwyXDJDXDNcMlwyXDJcMkVcM1wyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDJcMlwyR1wzXDJcMlwyXDJJXDNcMlwyXDJcMktcM1wyXDJcMlwyTVwzXDJcMlwyXDJPXDMiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcMlFcM1wyXDJcMlwyU1wzXDJcMlwyXDJV XDNcMlwyXDJcMldcM1wyXDJcMlwyWSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyXDJbXDNcMlwyXDJcMl1cM1wyXDJcMlwyX1wzXDJcMlwyXDJhXDNcMlwyXDJcMiIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoImNcM1wyXDJcMlwyZVwzXDJcMlwyXDJnXDNcMlwyXDJcMmlc M1wyXDJcMlwya1wzXDJcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJtXDNcMlwy XDJcMm9cM1wyXDJcMlwycVwzXDJcMlwyXDJzXDNcMlwyXDJcMnVcM1wyXDIiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcMlwyd1wzXDJcMlwyXDJ5XDNcMlwyXDJcMntcM1wyXDJcMlwyfVwz XDJcMlwyXDJcMTc3XDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXDJcMlx1MDA4 MVwzXDJcMlwyXDJcdTAwODNcM1wyXDJcMlwyXHUwMDg1XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXHUwMDg3XDNcMlwyXDJcMlx1MDA4OVwzXDJcMlwyXDJcdTAwOGJcM1wyXDJc MlwyXHUwMDhkIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDA4Zlwz XDJcMlwyXDJcdTAwOTFcM1wyXDJcMlwyXHUwMDkzXDNcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcMlwyXHUwMDk1XDNcMlwyXDJcMlx1MDA5N1wzXDJcMlwyXDJcdTAwOTlcM1wyXDJcMlwy XHUwMDliIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDA5ZFwzXDJc MlwyXDJcdTAwOWZcM1wyXDJcMlwyXHUwMGExXDNcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXHUwMGEzXDNcMlwyXDJcMlx1MDBhNVwzXDJcMlwyXDJcdTAwYTdcM1wyXDJcMlwyXHUw MGE5IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcMlx1MDBhYlwzXDJcMlwy XDJcdTAwYWRcM1wyXDJcMlwyXHUwMGFmXDNcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc MlwyXHUwMGIxXDNcMlwyXDJcMlx1MDBiM1wzXDJcMlwyXDJcdTAwYjVcM1wyXDJcMlwyXHUwMGI3 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGI5XDNcMlwyXDJcMlx1MDBi YlwzXDJcMlwyXDJcdTAwYmRcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAw YmZcM1wyXDJcMlwyXHUwMGMxXDNcMlwyXDJcMlx1MDBjM1wzXDJcMlwyXDJcdTAwYzUiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGM3XDNcMlwyXDJcMlx1MDBjOVwz XDJcMlwyXDJcdTAwY2JcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAwY2Rc M1wyXDJcMlwyXHUwMGNmXDNcMlwyXDJcMlx1MDBkMVwzXDJcMlwyXDJcdTAwZDMiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGQ1XDNcMlwyXDJcMlx1MDBkN1wzXDJc MlwyXDJcdTAwZDlcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAwZGJcM1wy XDJcMlwyXHUwMGRkXDNcMlwyXDJcMlx1MDBkZlwzXDJcMlwyXDJcdTAwZTEiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGUzXDNcMlwyXDJcMlx1MDBlNVwzXDJcMlwy XDJcdTAwZTdcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAwZTlcM1wyXDJc MlwyXHUwMGViXDNcMlwyXDJcMlx1MDBlZFwzXDJcMlwyXDJcdTAwZWYiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGYxXDNcMlwyXDJcMlx1MDBmM1wzXDJcMlwyXDJc dTAwZjVcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAwZjdcM1wyXDJcMlwy XHUwMGY5XDNcMlwyXDJcMlx1MDBmYlwzXDJcMlwyXDJcdTAwZmQiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMGZmXDNcMlwyXDJcMlx1MDEwMVwzXDJcMlwyXDJcdTAx MDNcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAxMDVcM1wyXDJcMlwyXHUw MTA3XDNcMlwyXDJcMlx1MDEwOVwzXDJcMlwyXDJcdTAxMGIiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcM1wyXDJcMlwyXHUwMTBkXDNcMlwyXDJcMlx1MDEwZlwzXDJcMlwyXDJcdTAxMTFc M1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAxMTNcM1wyXDJcMlwyXHUwMTE1 XDNcMlwyXDJcMlx1MDExN1wzXDJcMlwyXDJcdTAxMTkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcM1wyXDJcMlwyXHUwMTFiXDNcMlwyXDJcMlx1MDExZFwzXDJcMlwyXDJcdTAxMWZcM1wy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAxMjFcM1wyXDJcMlwyXHUwMTIzXDNc MlwyXDJcMlx1MDEyNVwzXDJcMlwyXDJcdTAxMjciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcM1wyXDJcMlwyXHUwMTI5XDNcMlwyXDJcMlx1MDEyYlwzXDJcMlwyXDJcdTAxMmRcM1wyXDIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAxMmZcM1wyXDJcMlwyXHUwMTMxXDNcMlwy XDJcMlx1MDEzM1wzXDJcMlwyXDJcdTAxMzUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc M1wyXDJcMlwyXHUwMTM3XDNcMlwyXDJcMlx1MDEzOVwzXDJcMlwyXDJcdTAxM2JcM1wyXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAxM2RcM1wyXDJcMlwyXHUwMTNmXDNcMlwyXDJc Mlx1MDE0MVwzXDJcMlwyXDJcdTAxNDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wy XDJcMlwyXHUwMTQ1XDNcMlwyXDJcMlx1MDE0N1wzXDJcMlwyXDJcdTAxNDlcM1wyXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAxNGJcM1wyXDJcMlwyXHUwMTRkXDNcMlwyXDJcMlx1 MDE0ZlwzXDJcMlwyXDJcdTAxNTEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc MlwyXHUwMTUzXDNcMlwyXDJcMlx1MDE1NVwzXDJcMlwyXDJcdTAxNTdcM1wyXDIiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwyXDJcdTAxNTlcM1wyXDJcMlwyXHUwMTViXDNcMlwyXDJcMlx1MDE1 ZFwzXDJcMlwyXDJcdTAxNWYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwy XHUwMTYxXDNcMlwyXDJcMlx1MDE2M1wzXDJcMlwyXDJcdTAxNjVcM1wyXDIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwyXDJcdTAxNjdcM1wyXDJcMlwyXHUwMTY5XDNcMlwyXDJcMlx1MDE2Ylwz XDJcMlwyXDJcdTAxNmQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUw MTZmXDNcMlwyXDJcMlx1MDE3MVwzXDJcMlwyXDJcdTAxNzNcM1wyXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXDJcdTAxNzVcM1wyXDJcMlwyXHUwMTc3XDNcMlwyXDJcMlx1MDE3OVwzXDJc MlwyXDJcdTAxN2IiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMTdk XDNcMlwyXDJcMlx1MDE3ZlwzXDJcMlwyXDJcdTAxODFcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwyXDJcdTAxODNcM1wyXDJcMlwyXHUwMTg1XDNcMlwyXDJcMlx1MDE4N1wzXDJcMlwy XDJcdTAxODkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMThiXDNc MlwyXDJcMlx1MDE4ZFwzXDJcMlwyXDJcdTAxOGZcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwyXDJcdTAxOTFcM1wyXDJcMlwyXHUwMTkzXDNcMlwyXDJcMlx1MDE5NVwzXDJcMlwyXDJc dTAxOTciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMTk5XDNcMlwy XDJcMlx1MDE5YlwzXDJcMlwyXDJcdTAxOWRcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXDJcdTAxOWZcM1wyXDJcMlwyXHUwMWExXDNcMlwyXDJcMlx1MDFhM1wzXDJcMlwyXDJcdTAx YTUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWE3XDNcMlwyXDJc Mlx1MDFhOVwzXDJcMlwyXDJcdTAxYWJcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwy XDJcdTAxYWRcM1wyXDJcMlwyXHUwMWFmXDNcMlwyXDJcMlx1MDFiMVwzXDJcMlwyXDJcdTAxYjMi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWI1XDNcMlwyXDJcMlx1 MDFiN1wzXDJcMlwyXDJcdTAxYjlcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJc dTAxYmJcM1wyXDJcMlwyXHUwMWJkXDNcMlwyXDJcMlx1MDFiZlwzXDJcMlwyXDJcdTAxYzEiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWMzXDNcMlwyXDJcMlx1MDFj NVwzXDJcMlwyXDJcdTAxYzdcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAx YzlcM1wyXDJcMlwyXHUwMWNiXDNcMlwyXDJcMlx1MDFjZFwzXDJcMlwyXDJcdTAxY2YiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWQxXDNcMlwyXDJcMlx1MDFkM1wz XDJcMlwyXDJcdTAxZDVcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAxZDdc M1wyXDJcMlwyXHUwMWQ5XDNcMlwyXDJcMlx1MDFkYlwzXDJcMlwyXDJcdTAxZGQiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWRmXDNcMlwyXDJcMlx1MDFlMVwzXDJc MlwyXDJcdTAxZTNcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAxZTVcM1wy XDJcMlwyXHUwMWU3XDNcMlwyXDJcMlx1MDFlOVwzXDJcMlwyXDJcdTAxZWIiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWVkXDNcMlwyXDJcMlx1MDFlZlwzXDJcMlwy XDJcdTAxZjFcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAxZjNcM1wyXDJc MlwyXHUwMWY1XDNcMlwyXDJcMlx1MDFmN1wzXDJcMlwyXDJcdTAxZjkiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcM1wyXDJcMlwyXHUwMWZiXDNcMlwyXDJcMlx1MDFmZFwzXDJcMlwyXDJc dTAxZmZcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAyMDFcM1wyXDJcMlwz XHUwMjAzXDNcMlwyXDJcNVx1MDIwOFwzXDJcMlwyXDdcdTAyMGQiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcM1wyXDJcMlx0XHUwMjExXDNcMlwyXDJcMTNcdTAyMTlcM1wyXDJcMlxyXHUw MjFlXDNcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcMTdcdTAyMjBcM1wyXDJc MlwyMVx1MDIyY1wzXDJcMlwyXDIzXHUwMjM3XDNcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXDJcMjVcdTAyNDJcM1wyXDJcMlwyN1x1MDI0NVwzXDJcMlwyXDMxXHUwMjQ4XDNcMlwy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzM1x1MDI0YVwzXDJcMlwyXDM1XHUwMjRjXDNc MlwyXDJcMzdcdTAyNGVcM1wyXDJcMiFcdTAyNTUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcM1wyXDJcMiNcdTAyNTdcM1wyXDJcMiVcdTAyNWZcM1wyXDJcMlwnXHUwMjY4XDNcMlwyXDIi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCIpXHUwMjc0XDNcMlwyXDIrXHUwMjc2XDNcMlwy XDItXHUwMjc4XDNcMlwyXDIvXHUwMjdhXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc MlwyXDJcNjFcdTAyN2NcM1wyXDJcMlw2M1x1MDI3ZVwzXDJcMlwyXDY1XHUwMjgwXDNcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlw2N1x1MDI4MlwzXDJcMlwyOVx1MDI4NFwzXDJcMlwy O1x1MDI4NlwzXDJcMlwyPVx1MDI4OCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJc MlwyP1x1MDI4YVwzXDJcMlwyQVx1MDI4Y1wzXDJcMlwyQ1x1MDI4ZlwzXDJcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJFXHUwMjkyXDNcMlwyXDJHXHUwMjk1XDNcMlwyXDJJXHUwMjk3XDNc MlwyXDJLXHUwMjlhXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMk1cdTAyOWNcM1wy XDJcMk9cdTAyOWVcM1wyXDJcMlFcdTAyYTBcM1wyXDJcMlNcdTAyYQ0KPiBiIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1wyXDJcMlVcdTAyYjNcM1wyXDJcMldcdTAyYmRcM1wyXDJcMllcdTAy YzhcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiW1x1MDJjZVwzXDJcMlwyXVx1MDJk NVwzXDJcMlwyX1x1MDJkYlwzXDJcMlwyYVx1MDJlNFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXDJjXHUwMmViXDNcMlwyXDJlXHUwMmY3XDNcMlwyXDJnXHUwMzA1XDNcMlwyXDJpXHUw MzBkIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJrXHUwMzE1XDNcMlwyXDJt XHUwMzFhXDNcMlwyXDJvXHUwMzIyXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInFc dTAzMmJcM1wyXDJcMnNcdTAzMzNcM1wyXDJcMnVcdTAzM2NcM1wyXDJcMndcdTAzNDhcMyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyeVx1MDM0ZFwzXDJcMlwye1x1MDM1MlwzXDJcMlwy fVx1MDM1OVwzXDJcMlwyXDE3NyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDM1Zlwz XDJcMlwyXHUwMDgxXHUwMzY0XDNcMlwyXDJcdTAwODNcdTAzNmNcM1wyXDJcMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwMDg1XHUwMzcxXDNcMlwyXDJcdTAwODdcdTAzNzdcM1wyXDJcMlx1 MDA4OVx1MDM3YlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAwOGJcdTAzODBc M1wyXDJcMlx1MDA4ZFx1MDM4OFwzXDJcMlwyXHUwMDhmXHUwMzhkIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDA5MVx1MDM5NFwzXDJcMlwyXHUwMDkzXHUwMzliXDNcMlwyXDJc dTAwOTUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNhNVwzXDJcMlwyXHUwMDk3XHUwM2Fi XDNcMlwyXDJcdTAwOTlcdTAzYjNcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw MDliXHUwM2JkXDNcMlwyXDJcdTAwOWRcdTAzY2VcM1wyXDJcMlx1MDA5Zlx1MDNkNVwzIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAwYTFcdTAzZGJcM1wyXDJcMlx1MDBhM1x1MDNl M1wzXDJcMlwyXHUwMGE1XHUwM2VhDQo+ICIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwz XDJcMlwyXHUwMGE3XHUwM2YxXDNcMlwyXDJcdTAwYTlcdTAzZjhcM1wyXDJcMlx1MDBhYiIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDNmZVwzXDJcMlwyXHUwMGFkXHUwNDBjXDNcMlwy XDJcdTAwYWZcdTA0MTlcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGIxXHUw NDI2XDNcMlwyXDJcdTAwYjNcdTA0MzJcM1wyXDJcMlx1MDBiNVx1MDQzN1wzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMlwyXDJcdTAwYjdcdTA0NDBcM1wyXDJcMlx1MDBiOVx1MDQ0Y1wzXDJc MlwyXHUwMGJiXHUwNDU0DQo+ICIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwy XHUwMGJkXHUwNDVmXDNcMlwyXDJcdTAwYmZcdTA0NjdcM1wyXDJcMlx1MDBjMSIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlx1MDQ2ZlwzXDJcMlwyXHUwMGMzXHUwNDc0XDNcMlwyXDJcdTAw YzVcdTA0N2NcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGM3XHUwNDg1XDNc MlwyXDJcdTAwYzlcdTA0OTFcM1wyXDJcMlx1MDBjYlx1MDQ5OFwzIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcMlwyXDJcdTAwY2RcdTA0YTJcM1wyXDJcMlx1MDBjZlx1MDRhYVwzXDJcMlwyXHUw MGQxXHUwNGIyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDBkM1x1MDRiYlwz XDJcMlwyXHUwMGQ1XHUwNGM2XDNcMlwyXDJcdTAwZDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDRkMFwzXDJcMlwyXHUwMGQ5XHUwNGQ3XDNcMlwyXDJcdTAwZGJcdTA0ZGNcM1wyXDJcMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGRkXHUwNGU4XDNcMlwyXDJcdTAwZGZcdTA0Zjdc M1wyXDJcMlx1MDBlMVx1MDUwMVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAw ZTNcdTA1MGNcM1wyXDJcMlx1MDBlNVx1MDUxMlwzXDJcMlwyXHUwMGU3XHUwNTE2DQo+ICIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwZTlcdTA1MWVcM1wyXDJcMlx1MDBlYlx1 MDUyY1wzXDJcMlwyXHUwMGVkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1M2RcM1wyXDJc Mlx1MDBlZlx1MDU1MlwzXDJcMlwyXHUwMGYxXHUwNTVlXDNcMlwyXDIiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcdTAwZjNcdTA1NjhcM1wyXDJcMlx1MDBmNVx1MDU3N1wzXDJcMlwyXHUw MGY3XHUwNThhXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDBmOVx1MDU5NVwz XDJcMlwyXHUwMGZiXHUwNTlmXDNcMlwyXDJcdTAwZmRcdTA1YWMiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwMGZmXHUwNWI3XDNcMlwyXDJcdTAxMDFcdTA1YmRcM1wyXDJcMlx1 MDEwMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWM2XDNcMlwyXDJcdTAxMDVcdTA1ZDBc M1wyXDJcMlx1MDEwN1x1MDVkOFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAx MDlcdTA1ZTBcM1wyXDJcMlx1MDEwYlx1MDVlNVwzXDJcMlwyXHUwMTBkXHUwNWVlXDMiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDEwZlx1MDVmNVwzXDJcMlwyXHUwMTExXHUwNWZi XDNcMlwyXDJcdTAxMTNcdTA2MDAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUw MTE1XHUwNjA2XDNcMlwyXDJcdTAxMTdcdTA2MGRcM1wyXDJcMlx1MDExOSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNjEyXDNcMlwyXDJcdTAxMWJcdTA2MTdcM1wyXDJcMlx1MDExZFx1MDYx ZFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMWZcdTA2MjZcM1wyXDJcMlx1 MDEyMVx1MDYzMVwzXDJcMlwyXHUwMTIzXHUwNjM3XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXDJcMlx1MDEyNVx1MDYzZVwzXDJcMlwyXHUwMTI3XHUwNjQzXDNcMlwyXDJcdTAxMjlcdTA2 NGINCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDEyYlx1MDY1MVwzXDJc MlwyXHUwMTJkXHUwNjU2XDNcMlwyXDJcdTAxMmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDY1Y1wzXDJcMlwyXHUwMTMxXHUwNjY4XDNcMlwyXDJcdTAxMzNcdTA2NzdcM1wyXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTM1XHUwNjg0XDNcMlwyXDJcdTAxMzdcdTA2OGVcM1wy XDJcMlx1MDEzOVx1MDY5N1wzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxM2Jc dTA2YTNcM1wyXDJcMlx1MDEzZFx1MDZhYlwzXDJcMlwyXHUwMTNmXHUwNmJkDQo+ICIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNDFcdTA2YzRcM1wyXDJcMlx1MDE0M1x1MDZj YlwzXDJcMlwyXHUwMTQ1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZDVcM1wyXDJcMlx1 MDE0N1x1MDZkZFwzXDJcMlwyXHUwMTQ5XHUwNmU2XDNcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTAxNGJcdTA2ZjVcM1wyXDJcMlx1MDE0ZFx1MDZmY1wzXDJcMlwyXHUwMTRm XHUwNzA2XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDE1MVx1MDcwZlwzXDJc MlwyXHUwMTUzXHUwNzE0XDNcMlwyXDJcdTAxNTVcdTA3MWEiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwzXDJcMlwyXHUwMTU3XHUwNzI1XDNcMlwyXDJcdTAxNTlcdTA3MzFcM1wyXDJcMlx1MDE1 YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzNlXDNcMlwyXDJcdTAxNWRcdTA3NGRcM1wy XDJcMlx1MDE1Zlx1MDc1YVwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxNjFc dTA3NjlcM1wyXDJcMlx1MDE2M1x1MDc3NlwzXDJcMlwyXHUwMTY1XHUwNzg4XDMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDE2N1x1MDc5Y1wzXDJcMlwyXHUwMTY5XHUwN2E3XDNc MlwyXDJcdTAxNmJcdTA3YjIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDE2ZFx1MDdjMFwzXDJcMlwyXHUwMTZmXHUwN2NmXDNcMlwyXDJcdTAxNzEiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDdkY1wzXDJcMlwyXHUwMTczXHUwN2VhXDNcMlwyXDJcdTAxNzVcdTA3 ZmFcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTc3XHUwODBhXDNcMlwyXDJc dTAxNzlcdTA4MTlcM1wyXDJcMlx1MDE3Ylx1MDgyNlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXDJcdTAxN2RcdTA4MzVcM1wyXDJcMlx1MDE3Zlx1MDgzY1wzXDJcMlwyXHUwMTgxXHUw ODQ0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDE4M1x1MDg0OVwzXDJcMlwy XHUwMTg1XHUwODRlXDNcMlwyXDJcdTAxODciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg1 MlwzXDJcMlwyXHUwMTg5XHUwODU4XDNcMlwyXDJcdTAxOGJcdTA4NWRcM1wyXDJcMiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwMThkXHUwODYxXDNcMlwyXDJcdTAxOGZcdTA4NmFcM1wyXDJc Mlx1MDE5MVx1MDg2ZVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxOTNcdTA4 NzZcM1wyXDJcMlx1MDE5NVx1MDg3ZFwzXDJcMlwyXHUwMTk3XHUwODg5IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcM1wyXDJcMlx1MDE5OVx1MDg5NVwzXDJcMlwyXHUwMTliXHUwODlkXDNcMlwy XDJcdTAxOWQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDhhN1wzXDJcMlwyXHUwMTlmXHUw OGIwXDNcMlwyXDJcdTAxYTFcdTA4YjlcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMWEzXHUwOGJkXDNcMlwyXDJcdTAxYTVcdTA4YzJcM1wyXDJcMlx1MDFhN1x1MDhjOFwzIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAxYTlcdTA4Y2NcM1wyXDJcMlx1MDFhYlx1 MDhkMVwzXDJcMlwyXHUwMWFkXHUwOGQ2DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAxYWZcdTA4ZTBcM1wyXDJcMlx1MDFiMVx1MDhlOFwzXDJcMlwyXHUwMWIzIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGVmXDNcMlwyXDJcdTAxYjVcdTA4ZjNcM1wyXDJc Mlx1MDFiN1x1MDhmNlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxYjlcdTA4 ZmFcM1wyXDJcMlx1MDFiYlx1MDhmZVwzXDJcMlwyXHUwMWJkXHUwOTAwXDMiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwyXDJcMlx1MDFiZlx1MDkwOFwzXDJcMlwyXHUwMWMxXHUwOTEyXDNcMlwy XDJcdTAxYzNcdTA5MWIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDFj NVx1MDkyM1wzXDJcMlwyXHUwMWM3XHUwOTJiXDNcMlwyXDJcdTAxYzkiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDkzMVwzXDJcMlwyXHUwMWNiXHUwOTM4XDNcMlwyXDJcdTAxY2RcdTA5NDFc M1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWNmXHUwOTUwXDNcMlwyXDJcdTAx ZDFcdTA5NWRcM1wyXDJcMlx1MDFkM1x1MDk2MVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc MlwyXDJcdTAxZDVcdTA5NmRcM1wyXDJcMlx1MDFkN1x1MDk3YVwzXDJcMlwyXHUwMWQ5XHUwOTg5 DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxZGJcdTA5OWNcM1wyXDJc Mlx1MDFkZFx1MDlhYlwzXDJcMlwyXHUwMWRmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5 YmFcM1wyXDJcMlx1MDFlMVx1MDljOVwzXDJcMlwyXHUwMWUzXHUwOWQ4XDNcMlwyXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDFlNVx1MDllOFwzXDJcMlwyXHUwMWU3XHUwOWY5XDNcMlwy XDJcdTAxZTlcdTBhMGFcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWViXHUw YTE2XDNcMlwyXDJcdTAxZWRcdTBhMjBcM1wyXDJcMlx1MDFlZlx1MGEyZiIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMWYxXHUwYTRjXDNcMlwyXDJcdTAxZjNcdTBhNGVc M1wyXDJcMlx1MDFmNSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGE1NVwzXDJcMlwy XHUwMWY3XHUwYTY4XDNcMlwyXDJcdTAxZjlcdTBhNzlcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMWZiXHUwYThlXDNcMlwyXDJcdTAxZmRcdTBhOTlcM1wyXDJcMlx1MDFmZlx1 MGE5ZFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAyMDFcdTBhYThcM1wyXDJc Mlx1MDIwM1x1MDIwNFw3dVwyXDJcdTAyMDRcdTAyMDUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcN2pcMlwyXHUwMjA1XHUwMjA2XDdxXDJcMlx1MDIwNlx1MDIwN1w3eVwyXDJcdTAyMDdc NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyMDhcdTAyMDlcN3JcMlwyXHUw MjA5XHUwMjBhXDd3XDJcMlx1MDIwYVx1MDIwYg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilw3dVwyXDJcdTAyMGJcdTAyMGNcN2pcMlwyXHUwMjBjXDZcM1wyXDJcMlx1MDIwZFx1MDIwZSIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3clwyXDJcdTAyMGVcdTAyMGZcN3FcMlwyXHUw MjBmXHUwMjEwXDdyXDJcMlx1MDIxMFxiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDIxMVx1MDIxMlw3JVwyXDJcdTAyMTJcdTAyMTNcN3JcMlwyXHUwMjEzXHUwMjE0DQo+ICIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDd0XDJcMlx1MDIxNFx1MDIxNVw3Y1wyXDJcdTAyMTVc dTAyMTZcN2lcMlwyXHUwMjE2XHUwMjE3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN29cMlwy XHUwMjE3XHUwMjE4XDdjXDJcMlx1MDIxOFxuXDNcMlwyXDJcdTAyMTlcdTAyMWEiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3clwyXDJcdTAyMWFcdTAyMWJcN2NcMlwyXHUwMjFiXHUwMjFjXDdl XDJcMlx1MDIxY1x1MDIxZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3bVwyXDJcdTAy MWRcZlwzXDJcMlwyXHUwMjFlXHUwMjFmXDc/XDJcMlx1MDIxZlwxNlwzIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlwyXDJcdTAyMjBcdTAyMjFcN0tcMlwyXHUwMjIxXHUwMjIyXDdPXDJcMlx1 MDIyMlx1MDIyMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdDXDJcMlx1MDIyM1x1MDIyNFw3 SVwyXDJcdTAyMjRcdTAyMjVcN0dcMlwyXHUwMjI1XHUwMjI2IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcN2FcMlwyXHUwMjI2XHUwMjI3XDdWXDJcMlx1MDIyN1x1MDIyOFw3UVwyXDJcdTAyMjhc dTAyMjkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3TVwyXDJcdTAyMjlcdTAyMmFcN0dcMlwy XHUwMjJhXHUwMjJiXDdQXDJcMlx1MDIyYlwyMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTAyMmNcdTAyMmRcN0pcMlwyXHUwMjJkXHUwMjJlXDdRXDJcMlx1MDIyZVx1MDIyZg0K PiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3VFwyXDJcdTAyMmZcdTAyMzBcN0tcMlwyXHUw MjMwXHUwMjMxXDdcXFwyXDJcdTAyMzFcdTAyMzIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3 UVwyXDJcdTAyMzJcdTAyMzNcN1BcMlwyXHUwMjMzXHUwMjM0XDdWXDJcMlx1MDIzNFx1MDIzNSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdDXDJcMlx1MDIzNVx1MDIzNlw3TlwyXDJcdTAyMzZc MjJcM1wyXDJcMlx1MDIzN1x1MDIzOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdPXDJcMlx1 MDIzOFx1MDIzOVw3V1wyXDJcdTAyMzlcdTAyM2FcN05cMlwyXHUwMjNhXHUwMjMNCj4gYiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdWXDJcMlx1MDIzYlx1MDIzY1w3S1wyXDJcdTAyM2NcdTAy M2RcN2FcMlwyXHUwMjNkXHUwMjNlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN05cMlwyXHUw MjNlXHUwMjNmXDdLXDJcMlx1MDIzZlx1MDI0MFw3UFwyXDJcdTAyNDBcdTAyNDEiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3R1wyXDJcdTAyNDFcMjRcM1wyXDJcMlx1MDI0Mlx1MDI0M1w3Plwy XDJcdTAyNDNcdTAyNDQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3PlwyXDJcdTAyNDRcMjZc M1wyXDJcMlx1MDI0NVx1MDI0Nlw3QFwyXDJcdTAyNDZcdTAyNDciKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcN0BcMlwyXHUwMjQ3XDMwXDNcMlwyXDJcdTAyNDhcdTAyNDlcNy0NCj4gXDJc Mlx1MDI0OVwzMlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAyNGFcdTAyNGJc NyxcMlwyXHUwMjRiXDM0XDNcMlwyXDJcdTAyNGNcdTAyNGQiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlw3XCdcMlwyXHUwMjRkXDM2XDNcMlwyXDJcdTAyNGVcdTAyNGZcN2hcMlwyXHUwMjRmXHUw MjUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN3FcMlwyXHUwMjUwXHUwMjUxXDd0XDJcMlx1 MDI1MVx1MDI1Mlw3b1wyXDJcdTAyNTJcdTAyNTMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcN2NcMlwyXHUwMjUzXHUwMjU0XDd2XDJcMlx1MDI1NCBcM1wyXDJcMlx1MDI1NVx1MDI1NiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdBXDJcMlx1MDI1NlwiXDNcMlwyXDJcdTAyNTdcdTAy NThcNyVcMlwyXHUwMjU4XHUwMjU5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN2ZcMlwyXHUw MjU5XHUwMjVhXDdnXDJcMlx1MDI1YVx1MDI1Ylw3aFwyXDJcdTAyNWJcdTAyNWMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3a1wyXDJcdTAyNWNcdTAyNWRcN3BcMlwyXHUwMjVkXHUwMjVlXDdn XDJcMlx1MDI1ZSRcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjVmXHUwMjYw XDclXDJcMlx1MDI2MFx1MDI2MVw3a1wyXDJcdTAyNjFcdTAyNjIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlw3cFwyXDJcdTAyNjJcdTAyNjNcN2VcMlwyXHUwMjYzXHUwMjY0XDduXDJcMlx1MDI2 NFx1MDI2NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDd3XDJcMlx1MDI2NVx1MDI2Nlw3Zlwy XDJcdTAyNjZcdTAyNjdcN2dcMlwyXHUwMjY3JlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc MlwyXDJcdTAyNjhcdTAyNjlcN2hcMlwyXHUwMjY5XHUwMjZhXDdxXDJcMlx1MDI2YVx1MDI2YiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDd0XDJcMlx1MDI2Ylx1MDI2Y1w3b1wyXDJcdTAyNmNc dTAyNmRcN3JcMlwyXHUwMjZkXHUwMjZlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN21cMlwy XHUwMjZlXHUwMjZmXDdpXDJcMlx1MDI2Zlx1MDI3MFw3dlwyXDJcdTAyNzBcdTAyNzEiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcN3tcMlwyXHUwMjcxXHUwMjcyXDdyXDJcMlx1MDI3Mlx1 MDI3M1w3Z1wyXDJcdTAyNzMoXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDI3 NFx1MDI3NVw3fVwyXDJcdTAyNzUqXDNcMlwyXDJcdTAyNzZcdTAyNzdcNyIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlwxNzdcMlwyXHUwMjc3LFwzXDJcMlwyXHUwMjc4XHUwMjc5XDcqXDJc Mlx1MDI3OS5cM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwMjdhXHUwMjdiXDcr XDJcMlx1MDI3Ylw2MFwzXDJcMlwyXHUwMjdjXHUwMjdkXDciKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJdXDJcMlx1MDI3ZFw2MlwzXDJcMlwyXHUwMjdlXHUwMjdmXDdfXDJcMlx1MDI3Zlw2 NFwzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAyODBcdTAyODFcN1w2MFwyXDJc dTAyODFcNjZcM1wyXDJcMlx1MDI4Mlx1MDI4MyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo Ilw3L1wyXDJcdTAyODM4XDNcMlwyXDJcdTAyODRcdTAyODVcNzxcMlwyXHUwMjg1OlwzXDJcMiIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwMjg2XHUwMjg3XDdcNjFcMlwyXHUwMjg3 PFwzXDJcMlwyXHUwMjg4XHUwMjg5XDc9IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJc Mlx1MDI4OT5cM1wyXDJcMlx1MDI4YVx1MDI4Ylw3LlwyXDJcdTAyOGJAXDNcMlwyXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDI4Y1x1MDI4ZFw3P1wyXDJcdTAyOGRcdTAyOGVcNz9cMlwy XHUwMjhlQlwzXDJcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjhmXHUwMjkw XDcjXDJcMlx1MDI5MFx1MDI5MVw3P1wyXDJcdTAyOTFEXDNcMlwyXDIiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcdTAyOTJcdTAyOTNcNz5cMlwyXHUwMjkzXHUwMjk0XDc/XDJcMlx1MDI5 NEZcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMjk1XHUwMjk2XDc+XDJcMlx1 MDI5NkhcM1wyXDJcMlx1MDI5N1x1MDI5OFw3QFwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDI5OFx1MDI5OVw3P1wyXDJcdTAyOTlKXDNcMlwyXDJcdTAyOWFcdTAyOWJcN0BcMlwyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyOWJMXDNcMlwyXDJcdTAyOWNcdTAyOWRcN35cMlwy XHUwMjlkTlwzXDJcMlwyXHUwMjllIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjlm XDcoXDJcMlx1MDI5ZlBcM1wyXDJcMlx1MDJhMFx1MDJhMVw3ZlwyXDJcdTAyYTEiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDJhMlw3Z1wyXDJcdTAyYTJcdTAyYTNcN3hcMlwyXHUwMmEzXHUw MmE0XDdrXDJcMlx1MDJhNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMmE1XDdlXDJcMlx1 MDJhNVx1MDJhNlw3Z1wyXDJcdTAyYTZcdTAyYTdcN3JcMlwyXHUwMmE3IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAyYThcN2NcMlwyXHUwMmE4XHUwMmE5XDd2XDJcMlx1MDJhOVx1MDJhYVw3 alwyXDJcdTAyYWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlJcM1wyXDJcMlx1MDJhYlx1MDJh Y1w3aFwyXDJcdTAyYWNcdTAyYWRcN3FcMlwyXHUwMmFkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTAyYWVcN3RcMlwyXHUwMmFlXHUwMmFmXDdvXDJcMlx1MDJhZlx1MDJiMFw3dVwyXDJcdTAy YjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJiMVw3Z1wyXDJcdTAyYjFcdTAyYjJcN3Zc MlwyXHUwMmIyVFwzXDJcMlwyXHUwMmIzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyYjRc N2hcMlwyXHUwMmI0XHUwMmI1XDdxXDJcMlx1MDJiNVx1MDJiNlw3dFwyXDJcdTAyYjYiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDJiN1w3b1wyXDJcdTAyYjdcdTAyYjhcN3VcMlwyXHUwMmI4 XHUwMmI5XDdnXDJcMlx1MDJiOQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJiYVw3 dlwyXDJcdTAyYmFcdTAyYmJcN2tcMlwyXHUwMmJiXHUwMmJjXDdmXDJcMlx1MDJiYyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiVlwzXDJcMlwyXHUwMmJkXHUwMmJlXDdnXDJcMlx1MDJiZVx1MDJi Zlw3cFwyXDJcdTAyYmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJjMFw3ZlwyXDJcdTAy YzBcdTAyYzFcN2hcMlwyXHUwMmMxXHUwMmMyXDdxXDJcMlx1MDJjMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMmMzXDd0XDJcMlx1MDJjM1x1MDJjNFw3b1wyXDJcdTAyYzRcdTAyYzVcN3Vc MlwyXHUwMmM1IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMmM2XDdnXDJcMlx1MDJj Nlx1MDJjN1w3dlwyXDJcdTAyYzdYXDNcMlwyXDJcdTAyYzgiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDJjOVw3dlwyXDJcdTAyYzlcdTAyY2FcN2tcMlwyXHUwMmNhXHUwMmNiXDd2XDJcMlx1 MDJjYiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDJjY1w3blwyXDJcdTAyY2NcdTAy Y2RcN2dcMlwyXHUwMmNkWlwzXDJcMlwyXHUwMmNlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAyY2ZcN2hcMlwyXHUwMmNmXHUwMmQwXDdxXDJcMlx1MDJkMFx1MDJkMVw3dFwyXDJcdTAyZDEi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJkMlw3b1wyXDJcdTAyZDJcdTAyZDNcN2tcMlwy XHUwMmQzXHUwMmQ0XDdmXDJcMlx1MDJkNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXFxcM1wy XDJcMlx1MDJkNVx1MDJkNlw3cVwyXDJcdTAyZDZcdTAyZDdcN3BcMlwyXHUwMmQ3IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAyZDhcN2dcMlwyXHUwMmQ4XHUwMmQ5XDdxXDJcMlx1MDJkOVx1 MDJkYVw3aFwyXDJcdTAyZGENCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJeXDNcMlwyXDJc dTAyZGJcdTAyZGNcN2dcMlwyXHUwMmRjXHUwMmRkXDdwXDJcMlx1MDJkZCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMmRlXDdmXDJcMlx1MDJkZVx1MDJkZlw3cVwyXDJcdTAyZGZcdTAyZTBc N3BcMlwyXHUwMmUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyZTFcN2dcMlwyXHUwMmUx XHUwMmUyXDdxXDJcMlx1MDJlMlx1MDJlM1w3aFwyXDJcdTAyZTMNCj4gIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiYFwzXDJcMlwyXHUwMmU0XHUwMmU1XDdyXDJcMlx1MDJlNVx1MDJlNlw3 dFwyXDJcdTAyZTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJlN1w3cVwyXDJcdTAyZTdc dTAyZThcN29cMlwyXHUwMmU4XHUwMmU5XDdyXDJcMlx1MDJlOSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMmVhXDd2XDJcMlx1MDJlYWJcM1wyXDJcMlx1MDJlYlx1MDJlY1w3cVwyXDJcdTAy ZWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJlZFw3dFwyXDJcdTAyZWRcdTAyZWVcN2Zc MlwyXHUwMmVlXHUwMmVmXDdnXDJcMlx1MDJlZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw MmYwXDd0XDJcMlx1MDJmMFx1MDJmMVw3Z1wyXDJcdTAyZjFcdTAyZjJcN2ZcMlwyXHUwMmYyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyZjNcN25cMlwyXHUwMmYzXHUwMmY0XDdrXDJcMlx1 MDJmNFx1MDJmNVw3dVwyXDJcdTAyZjUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAy ZjZcN3ZcMlwyXHUwMmY2ZFwzXDJcMlwyXHUwMmY3XHUwMmY4XDdvXDJcMlx1MDJmOCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwMmY5XDdjXDJcMlx1MDJmOVx1MDJmYVw3elwyXDJcdTAyZmFc dTAyZmJcN2VcMlwyXHUwMmZiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyZmNcN3FcMlwy XHUwMmZjXHUwMmZkXDdwXDJcMlx1MDJmZFx1MDJmZVw3dlwyXDJcdTAyZmUiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDJmZlw3Y1wyXDJcdTAyZmZcdTAzMDBcN2tcMlwyXHUwMzAwXHUwMzAx XDdwXDJcMlx1MDMwMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzAyXDdnXDJcMlx1MDMw Mlx1MDMwM1w3dFwyXDJcdTAzMDNcdTAzMDRcN3VcMlwyXHUwMzA0IikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiZlwzXDJcMlwyXHUwMzA1XHUwMzA2XDdnXDJcMlx1MDMwNlx1MDMwN1w3cFwy XDJcdTAzMDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDMwOFw3ZlwyXDJcdTAzMDhcdTAz MDlcN25cMlwyXHUwMzA5XHUwMzBhXDdrXDJcMlx1MDMwYSIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlx1MDMwYlw3dVwyXDJcdTAzMGJcdTAzMGNcN3ZcMlwyXHUwMzBjaFwzXDJcMlwyXHUw MzBkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzMGVcN2dcMlwyXHUwMzBlXHUwMzBmXDdw XDJcMlx1MDMwZlx1MDMxMFw3ZlwyXDJcdTAzMTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDMxMVw3aFwyXDJcdTAzMTFcdTAzMTJcN3FcMlwyXHUwMzEyXHUwMzEzXDd0XDJcMlx1MDMxMyIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDMxNFw3b1wyXDJcdTAzMTRqXDNcMlwyXDJc dTAzMTVcdTAzMTZcN2hcMlwyXHUwMzE2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzMTdc N3FcMlwyXHUwMzE3XHUwMzE4XDd0XDJcMlx1MDMxOFx1MDMxOVw3b1wyXDJcdTAzMTkiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJsXDNcMlwyXDJcdTAzMWFcdTAzMWJcN2hcMlwyXHUwMzFi XHUwMzFjXDdxXDJcMlx1MDMxYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzFkXDd0XDJc Mlx1MDMxZFx1MDMxZVw3b1wyXDJcdTAzMWVcdTAzMWZcN29cMlwyXHUwMzFmIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMzIwXDdjXDJcMlx1MDMyMFx1MDMyMVw3clwyXDJcdTAzMjFu XDNcMlwyXDJcdTAzMjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDMyM1w3b1wyXDJcdTAz MjNcdTAzMjRcN2NcMlwyXHUwMzI0XHUwMzI1XDdyXDJcMlx1MDMyNSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMzI2XDd2XDJcMlx1MDMyNlx1MDMyN1w3a1wyXDJcdTAzMjdcdTAzMjhcN3Zc MlwyXHUwMzI4IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzI5XDduXDJcMlx1MDMy OVx1MDMyYVw3Z1wyXDJcdTAzMmFwXDNcMlwyXDJcdTAzMmIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDMyY1w3b1wyXDJcdTAzMmNcdTAzMmRcN2NcMlwyXHUwMzJkXHUwMzJlXDdyXDJcMlx1 MDMyZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzJmXDdpXDJcMlx1MDMyZlx1MDMzMFw3 d1wyXDJcdTAzMzBcdTAzMzFcN2tcMlwyXHUwMzMxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMzMyXDdmXDJcMlx1MDMzMnJcM1wyXDJcMlx1MDMzM1x1MDMzNFw3dVwyXDJcdTAzMzQi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDMzNVw3d1wyXDJcdTAzMzVcdTAzMzZcN2RcMlwy XHUwMzM2XHUwMzM3XDd2XDJcMlx1MDMzNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzM4 XDdrXDJcMlx1MDMzOFx1MDMzOVw3dlwyXDJcdTAzMzlcdTAzM2FcN25cMlwyXHUwMzNhIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMzNiXDdnXDJcMlx1MDMzYnRcM1wyXDJcMlx1MDMz Y1x1MDMzZFw3Z1wyXDJcdTAzM2QiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDMzZVw3cFwy XDJcdTAzM2VcdTAzM2ZcN2ZcMlwyXHUwMzNmXHUwMzQwXDd1XDJcMlx1MDM0MCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwMzQxXDd3XDJcMlx1MDM0MVx1MDM0Mlw3ZFwyXDJcdTAzNDJcdTAz NDNcN3ZcMlwyXHUwMzQzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzNDRcN2tcMlwyXHUw MzQ0XHUwMzQ1XDd2XDJcMlx1MDM0NVx1MDM0Nlw3blwyXDJcdTAzNDYiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcdTAzNDdcN2dcMlwyXHUwMzQ3dlwzXDJcMlwyXHUwMzQ4XHUwMzQ5XDdq XDJcMlx1MDM0OSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzRhXDdnXDJcMlx1MDM0YVx1 MDM0Ylw3blwyXDJcdTAzNGJcdTAzNGNcN3JcMlwyXHUwMzRjIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgieFwzXDJcMlwyXHUwMzRkXHUwMzRlXDd2XDJcMlx1MDM0ZVx1MDM0Zlw3Z1wyXDJc dTAzNGYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNTBcN3pcMlwyXHUwMzUwXHUw MzUxXDd2XDJcMlx1MDM1MXpcM1wyXDJcMlx1MDM1MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMzUzXDdxXDJcMlx1MDM1M1x1MDM1NFw3clwyXDJcdTAzNTRcdTAzNTVcN3ZcMlwyXHUwMzU1 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzNTZcN2tcMlwyXHUwMzU2XHUwMzU3XDdxXDJc Mlx1MDM1N1x1MDM1OFw3cFwyXDJcdTAzNTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInxcM1wy XDJcMlx1MDM1OVx1MDM1YVw3aFwyXDJcdTAzNWFcdTAzNWJcN25cMlwyXHUwMzViIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAzNWNcN2NcMlwyXHUwMzVjXHUwMzVkXDdpXDJcMlx1MDM1ZFx1 MDM1ZVw3dVwyXDJcdTAzNWUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ+XDNcMlwyXDJc dTAzNWZcdTAzNjBcN2ZcMlwyXHUwMzYwXHUwMzYxXDdjXDJcMlx1MDM2MSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMzYyXDd2XDJcMlx1MDM2Mlx1MDM2M1w3Z1wyXDJcdTAzNjNcdTAwODBc M1wyXDJcMlx1MDM2NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzY1XDdnXDJcMlx1MDM2 NVx1MDM2Nlw3cFwyXDJcdTAzNjZcdTAzNjdcN2ZcMlwyXHUwMzY3IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTAzNjhcN2ZcMlwyXHUwMzY4XHUwMzY5XDdjXDJcMlx1MDM2OVx1MDM2YVw3dlwy XDJcdTAzNmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM2Ylw3Z1wyXDJcdTAzNmJcdTAw ODJcM1wyXDJcMlx1MDM2Y1x1MDM2ZFw3e1wyXDJcdTAzNmQNCj4gIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTAzNmVcN2dcMlwyXHUwMzZlXHUwMzZmXDdjXDJcMlx1MDM2Zlx1MDM3MFw3dFwy XDJcdTAzNzAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDA4NFwzXDJcMlwyXHUwMzcxXHUw MzcyXDdvXDJcMlx1MDM3Mlx1MDM3M1w3cVwyXDJcdTAzNzMNCj4gIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTAzNzRcN3BcMlwyXHUwMzc0XHUwMzc1XDd2XDJcMlx1MDM3NVx1MDM3Nlw3alwy XDJcdTAzNzYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDA4NlwzXDJcMlwyXHUwMzc3XHUw Mzc4XDdmXDJcMlx1MDM3OFx1MDM3OVw3Y1wyXDJcdTAzNzkiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDM3YVw3e1wyXDJcdTAzN2FcdTAwODhcM1wyXDJcMlx1MDM3Ylx1MDM3Y1w3dlwyXDJc dTAzN2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM3ZFw3a1wyXDJcdTAzN2RcdTAzN2Vc N29cMlwyXHUwMzdlXHUwMzdmXDdnXDJcMlx1MDM3ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMDhhXDNcMlwyXDJcdTAzODBcdTAzODFcN2dcMlwyXHUwMzgxXHUwMzgyXDdwXDJcMlx1MDM4 Mg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM4M1w3ZlwyXDJcdTAzODNcdTAzODRc N3ZcMlwyXHUwMzg0XHUwMzg1XDdrXDJcMlx1MDM4NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMzg2XDdvXDJcMlx1MDM4Nlx1MDM4N1w3Z1wyXDJcdTAzODdcdTAwOGNcM1wyXDJcMlx1MDM4 OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzg5XDdqXDJcMlx1MDM4OVx1MDM4YVw3cVwy XDJcdTAzOGFcdTAzOGJcN3dcMlwyXHUwMzhiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAz OGNcN3RcMlwyXHUwMzhjXHUwMDhlXDNcMlwyXDJcdTAzOGRcdTAzOGVcN29cMlwyXHUwMzhlDQo+ ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzhmXDdrXDJcMlx1MDM4Zlx1MDM5MFw3cFwy XDJcdTAzOTBcdTAzOTFcN3dcMlwyXHUwMzkxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAz OTJcN3ZcMlwyXHUwMzkyXHUwMzkzXDdnXDJcMlx1MDM5M1x1MDA5MFwzXDJcMlwyXHUwMzk0IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzOTVcN3VcMlwyXHUwMzk1XHUwMzk2XDdnXDJcMlx1 MDM5Nlx1MDM5N1w3ZVwyXDJcdTAzOTciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM5OFw3 cVwyXDJcdTAzOThcdTAzOTlcN3BcMlwyXHUwMzk5XHUwMzlhXDdmXDJcMlx1MDM5YSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwMDkyXDNcMlwyXDJcdTAzOWJcdTAzOWNcN2lcMlwyXHUwMzlj XHUwMzlkXDd0XDJcMlx1MDM5ZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzllXDdjXDJc Mlx1MDM5ZVx1MDM5Zlw3e1wyXDJcdTAzOWZcdTAzYTBcN3FcMlwyXHUwM2EwIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAzYTFcN3dcMlwyXHUwM2ExXHUwM2EyXDd2XDJcMlx1MDNhMlx1MDNh M1w3a1wyXDJcdTAzYTMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNhNFw3aFwyXDJcdTAz YTRcdTAwOTRcM1wyXDJcMlx1MDNhNVx1MDNhNlw3blwyXDJcdTAzYTYNCj4gIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAzYTdcN2NcMlwyXHUwM2E3XHUwM2E4XDdkXDJcMlx1MDNhOFx1MDNh OVw3Z1wyXDJcdTAzYTkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNhYVw3blwyXDJcdTAz YWFcdTAwOTZcM1wyXDJcMlx1MDNhYlx1MDNhY1w3dlwyXDJcdTAzYWMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDNhZFw3a1wyXDJcdTAzYWRcdTAzYWVcN29cMlwyXHUwM2FlXHUwM2FmXDdn XDJcMlx1MDNhZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2IwXDdxXDJcMlx1MDNiMFx1 MDNiMVw3d1wyXDJcdTAzYjFcdTAzYjJcN3ZcMlwyXHUwM2IyDQo+ICIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMDk4XDNcMlwyXDJcdTAzYjNcdTAzYjRcN2tcMlwyXHUwM2I0XHUwM2I1XDdw XDJcMlx1MDNiNQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNiNlw3eFwyXDJcdTAz YjZcdTAzYjdcN2dcMlwyXHUwM2I3XHUwM2I4XDdwXDJcMlx1MDNiOA0KPiAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDNiOVw3dlwyXDJcdTAzYjlcdTAzYmFcN3FcMlwyXHUwM2JhXHUwM2Ji XDd0XDJcMlx1MDNiYg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNiY1w3e1wyXDJc dTAzYmNcdTAwOWFcM1wyXDJcMlx1MDNiZFx1MDNiZVw3YVwyXDJcdTAzYmUNCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAzYmZcN1BcMlwyXHUwM2JmXHUwM2MwXDdRXDJcMlx1MDNjMFx1 MDNjMVw3UFwyXDJcdTAzYzEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNjMlw3YVwyXDJc dTAzYzJcdTAzYzNcN1BcMlwyXHUwM2MzXHUwM2M0XDdYXDJcMlx1MDNjNCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwM2M1XDdhXDJcMlx1MDNjNVx1MDNjNlw3RlwyXDJcdTAzYzZcdTAzYzdc N0NcMlwyXHUwM2M3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzYzhcN1ZcMlwyXHUwM2M4 XHUwM2M5XDdDXDJcMlx1MDNjOVx1MDNjYVw3YVwyXDJcdTAzY2EiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDNjYlw3T1wyXDJcdTAzY2JcdTAzY2NcN0NcMlwyXHUwM2NjXHUwM2NkXDdSXDJc Mlx1MDNjZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMDljXDNcMlwyXDJcdTAzY2VcdTAz Y2ZcN3VcMlwyXHUwM2NmXHUwM2QwXDd2XDJcMlx1MDNkMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwM2QxXDd0XDJcMlx1MDNkMVx1MDNkMlw3d1wyXDJcdTAzZDJcdTAzZDNcN2VcMlwyXHUw M2QzDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2Q0XDd2XDJcMlx1MDNkNFx1MDA5 ZVwzXDJcMlwyXHUwM2Q1XHUwM2Q2XDd3XDJcMlx1MDNkDQo+IDYiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDNkN1w3cFwyXDJcdTAzZDdcdTAzZDhcN2tcMlwyXHUwM2Q4XHUwM2Q5XDdxXDJc Mlx1MDNkOQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNkYVw3cFwyXDJcdTAzZGFc dTAwYTBcM1wyXDJcMlx1MDNkYlx1MDNkY1w3RFwyXDJcdTAzZA0KPiBjIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAzZGRcN1FcMlwyXHUwM2RkXHUwM2RlXDdRXDJcMlx1MDNkZVx1MDNkZlw3 TlwyXDJcdTAzZA0KPiBmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzZTBcN0dcMlwyXHUw M2UwXHUwM2UxXDdDXDJcMlx1MDNlMVx1MDNlMlw3UFwyXDJcdTAzZTINCj4gIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAwYTJcM1wyXDJcMlx1MDNlM1x1MDNlNFw3V1wyXDJcdTAzZTRcdTAz ZTVcN0tcMlwyXHUwM2UNCj4gNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwM2U2XDdQXDJc Mlx1MDNlNlx1MDNlN1w3VlwyXDJcdTAzZTdcdTAzZThcNzhcMlwyXHUwM2U4DQo+ICIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwM2U5XDdcNjZcMlwyXHUwM2U5XHUwMGE0XDNcMlwyXDJcdTAz ZWFcdTAzZWJcN1dcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzZWJcdTAzZWNcN0tc MlwyXHUwM2VjXHUwM2VkXDdQXDJcMlx1MDNlZFx1MDNlZVw3ViIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDJcMlx1MDNlZVx1MDNlZlw3XDY1XDJcMlx1MDNlZlx1MDNmMFw3XDY0XDJcMlx1MDNm MFx1MDBhNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAzZjFcdTAzZjJcN1dc MlwyXHUwM2YyXHUwM2YzXDdLXDJcMlx1MDNmM1x1MDNmNCIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlw3UFwyXDJcdTAzZjRcdTAzZjVcN1ZcMlwyXHUwM2Y1XHUwM2Y2XDdcNjNcMlwyXHUw M2Y2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzZjdcNzhcMlwyXHUwM2Y3XHUwMGE4XDNc MlwyXDJcdTAzZjhcdTAzZjlcN1dcMlwyXHUwM2Y5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAzZmFcN0tcMlwyXHUwM2ZhXHUwM2ZiXDdQXDJcMlx1MDNmYlx1MDNmY1w3VlwyXDJcdTAzZmMi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNmZFw3OlwyXDJcdTAzZmRcdTAwYWFcM1wyXDJc Mlx1MDNmZVx1MDNmZlw3R1wyXDJcdTAzZmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQw MFw3SFwyXDJcdTA0MDBcdTA0MDFcN0tcMlwyXHUwNDAxXHUwNDAyXDdhXDJcMlx1MDQwMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDAzXDdVXDJcMlx1MDQwM1x1MDQwNFw3VlwyXDJcdTA0 MDRcdTA0MDVcN1RcMlwyXHUwNDA1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0MDZcN0tc MlwyXHUwNDA2XHUwNDA3XDdQXDJcMlx1MDQwN1x1MDQwOFw3SVwyXDJcdTA0MDgiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDQwOVw3YVwyXDJcdTA0MDlcdTA0MGFcN0tcMlwyXHUwNDBhXHUw NDBiXDdGXDJcMlx1MDQwYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGFjXDNcMlwyXDJc dTA0MGNcdTA0MGRcN0dcMlwyXHUwNDBkXHUwNDBlXDdIXDJcMlx1MDQwDQo+IGUiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDQwZlw3S1wyXDJcdTA0MGZcdTA0MTBcN2FcMlwyXHUwNDEwXHUw NDExXDdKXDJcMlx1MDQxMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDEyXDdLXDJcMlx1 MDQxMlx1MDQxM1w3S1wyXDJcdTA0MTNcdTA0MTRcN2FcMlwyXHUwNDE0IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA0MTVcN0ZcMlwyXHUwNDE1XHUwNDE2XDdDXDJcMlx1MDQxNlx1MDQxN1w3 VlwyXDJcdTA0MTciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQxOFw3R1wyXDJcdTA0MThc dTAwYWVcM1wyXDJcMlx1MDQxOVx1MDQxYVw3R1wyXDJcdTA0MQ0KPiBhIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA0MWJcN0hcMlwyXHUwNDFiXHUwNDFjXDdLXDJcMlx1MDQxY1x1MDQxZFw3 YVwyXDJcdTA0MWQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQxZVw3SlwyXDJcdTA0MWVc dTA0MWZcN0tcMlwyXHUwNDFmXHUwNDIwXDdLXDJcMlx1MDQyMCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNDIxXDdhXDJcMlx1MDQyMVx1MDQyMlw3VlwyXDJcdTA0MjJcdTA0MjNcN0tcMlwy XHUwNDIzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0MjRcN09cMlwyXHUwNDI0XHUwNDI1 XDdHXDJcMlx1MDQyNVx1MDBiMFwzXDJcMlwyXHUwNDINCj4gNiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNDI3XDdHXDJcMlx1MDQyN1x1MDQyOFw3SFwyXDJcdTA0MjhcdTA0MjlcN0tcMlwy XHUwNDI5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0MmFcN2FcMlwyXHUwNDJhXHUwNDJi XDdKXDJcMlx1MDQyYlx1MDQyY1w3S1wyXDJcdTA0MmMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDQyZFw3S1wyXDJcdTA0MmRcdTA0MmVcN2FcMlwyXHUwNDJlXHUwNDJmXDdUXDJcMlx1MDQy ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDMwXDdHXDJcMlx1MDQzMFx1MDQzMVw3SFwy XDJcdTA0MzFcdTAwYjJcM1wyXDJcMlx1MDQzMg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDQzM1w3aVwyXDJcdTA0MzNcdTA0MzRcN3dcMlwyXHUwNDM0XHUwNDM1XDdrXDJcMlx1MDQz NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDM2XDdmXDJcMlx1MDQzNlx1MDBiNFwzXDJc MlwyXHUwNDM3XHUwNDM4XDdlXDJcMlx1MDQzOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw NDM5XDdqXDJcMlx1MDQzOVx1MDQzYVw3Z1wyXDJcdTA0M2FcdTA0M2JcN2VcMlwyXHUwNDNiIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0M2NcN21cMlwyXHUwNDNjXHUwNDNkXDdkXDJcMlx1 MDQzZFx1MDQzZVw3cVwyXDJcdTA0M2UNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0 M2ZcN3pcMlwyXHUwNDNmXHUwMGI2XDNcMlwyXDJcdTA0NDBcdTA0NDFcN2dcMlwyXHUwNDQxIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0NDJcN3BcMlwyXHUwNDQyXHUwNDQzXDdmXDJcMlx1 MDQ0M1x1MDQ0NFw3ZVwyXDJcdTA0NDQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ0NVw3 alwyXDJcdTA0NDVcdTA0NDZcN2dcMlwyXHUwNDQ2XHUwNDQ3XDdlXDJcMlx1MDQ0NyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNDQ4XDdtXDJcMlx1MDQ0OFx1MDQ0OVw3ZFwyXDJcdTA0NDlc dTA0NGFcN3FcMlwyXHUwNDRhDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDRiXDd6 XDJcMlx1MDQ0Ylx1MDBiOFwzXDJcMlwyXHUwNDRjXHUwNDRkXDdwXDJcMlx1MDQ0ZA0KPiAiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ0ZVw3d1wyXDJcdTA0NGVcdTA0NGZcN29cMlwyXHUw NDRmXHUwNDUwXDdnXDJcMlx1MDQ1MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDUxXDd0 XDJcMlx1MDQ1MVx1MDQ1Mlw3a1wyXDJcdTA0NTJcdTA0NTNcN2VcMlwyXHUwNDUzIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAwYmFcM1wyXDJcMlx1MDQ1NFx1MDQ1NVw3Z1wyXDJcdTA0NTVc dTA0NTZcN3BcMlwyXHUwNDU2DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDU3XDdm XDJcMlx1MDQ1N1x1MDQ1OFw3cFwyXDJcdTA0NThcdTA0NTlcN3dcMlwyXHUwNDU5IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA0NWFcN29cMlwyXHUwNDVhXHUwNDViXDdnXDJcMlx1MDQ1Ylx1 MDQ1Y1w3dFwyXDJcdTA0NWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ1ZFw3a1wyXDJc dTA0NWRcdTA0NWVcN2VcMlwyXHUwNDVlXHUwMGJjXDNcMlwyXDJcdTA0NWYNCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA0NjBcN29cMlwyXHUwNDYwXHUwNDYxXDdrXDJcMlx1MDQ2MVx1 MDQ2Mlw3cFwyXDJcdTA0NjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ2M1w3a1wyXDJc dTA0NjNcdTA0NjRcN29cMlwyXHUwNDY0XHUwNDY1XDd3XDJcMlx1MDQ2NSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNDY2XDdvXDJcMlx1MDQ2Nlx1MDBiZVwzXDJcMlwyXHUwNDY3XHUwNDY4 XDdvXDJcMlx1MDQ2OA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ2OVw3Y1wyXDJc dTA0NjlcdTA0NmFcN3pcMlwyXHUwNDZhXHUwNDZiXDdrXDJcMlx1MDQ2YiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNDZjXDdvXDJcMlx1MDQ2Y1x1MDQ2ZFw3d1wyXDJcdTA0NmRcdTA0NmVc N29cMlwyXHUwNDZlDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGMwXDNcMlwyXDJc dTA0NmZcdTA0NzBcN3VcMlwyXHUwNDcwXHUwNDcxXDd2XDJcMlx1MDQ3MSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNDcyXDdnXDJcMlx1MDQ3Mlx1MDQ3M1w3clwyXDJcdTA0NzNcdTAwYzJc M1wyXDJcMlx1MDQ3NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDc1XDdmXDJcMlx1MDQ3 NVx1MDQ3Nlw3Z1wyXDJcdTA0NzZcdTA0NzdcN2hcMlwyXHUwNDc3IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA0NzhcN2NcMlwyXHUwNDc4XHUwNDc5XDd3XDJcMlx1MDQ3OVx1MDQ3YVw3blwy XDJcdTA0N2EiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ3Ylw3dlwyXDJcdTA0N2JcdTAw YzRcM1wyXDJcMlx1MDQ3Y1x1MDQ3ZFw3clwyXDJcdTA0N2QiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDQ3ZVw3Y1wyXDJcdTA0N2VcdTA0N2ZcN3VcMlwyXHUwNDdmXHUwNDgwXDd1XDJcMlx1 MDQ4MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDgxXDd5XDJcMlx1MDQ4MVx1MDQ4Mlw3 cVwyXDJcdTA0ODJcdTA0ODNcN3RcMlwyXHUwNDgzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA0ODRcN2ZcMlwyXHUwNDg0XHUwMGM2XDNcMlwyXDJcdTA0ODVcdTA0ODZcN2dcMlwyXHUwNDg2 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0ODdcN3BcMlwyXHUwNDg3XHUwNDg4XDdmXDJc Mlx1MDQ4OFx1MDQ4OVw3clwyXDJcdTA0ODkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ4 YVw3Y1wyXDJcdTA0OGFcdTA0OGJcN3VcMlwyXHUwNDhiXHUwNDhjXDd1XDJcMlx1MDQ4YyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDhkXDd5XDJcMlx1MDQ4ZFx1MDQ4ZVw3cVwyXDJcdTA0 OGVcdTA0OGZcN3RcMlwyXHUwNDhmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0OTBcN2Zc MlwyXHUwNDkwXHUwMGM4XDNcMlwyXDJcdTA0OTFcdTA0OTJcN3VcMlwyXHUwNDkyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA0OTNcN3ZcMlwyXHUwNDkzXHUwNDk0XDd0XDJcMlx1MDQ5NFx1 MDQ5NVw3a1wyXDJcdTA0OTUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ5Nlw3cFwyXDJc dTA0OTZcdTA0OTdcN2lcMlwyXHUwNDk3XHUwMGNhXDNcMlwyXDJcdTA0OTgiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDQ5OVw3Z1wyXDJcdTA0OTlcdTA0OWFcN3BcMlwyXHUwNDlhXHUwNDli XDdmXDJcMlx1MDQ5YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDljXDd1XDJcMlx1MDQ5 Y1x1MDQ5ZFw3dlwyXDJcdTA0OWRcdTA0OWVcN3RcMlwyXHUwNDllIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA0OWZcN2tcMlwyXHUwNDlmXHUwNGEwXDdwXDJcMlx1MDRhMFx1MDRhMVw3aVwy XDJcdTA0YTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBjY1wzXDJcMlwyXHUwNGEyXHUw NGEzXDdvXDJcMlx1MDRhM1x1MDRhNFw3a1wyXDJcdTA0YTQiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDRhNVw3cFwyXDJcdTA0YTVcdTA0YTZcN3VcMlwyXHUwNGE2XHUwNGE3XDdrXDJcMlx1 MDRhNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGE4XDd8XDJcMlx1MDRhOFx1MDRhOVw3 Z1wyXDJcdTA0YTlcdTAwY2VcM1wyXDJcMlx1MDRhYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwNGFiXDdvXDJcMlx1MDRhYlx1MDRhY1w3Y1wyXDJcdTA0YWNcdTA0YWRcN3pcMlwyXHUwNGFk IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0YWVcN3VcMlwyXHUwNGFlXHUwNGFmXDdrXDJc Mlx1MDRhZlx1MDRiMFw3fFwyXDJcdTA0YjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRi MVw3Z1wyXDJcdTA0YjFcdTAwZDBcM1wyXDJcMlx1MDRiMlx1MDRiM1w3Z1wyXDJcdTA0YjMNCj4g IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0YjRcN3BcMlwyXHUwNGI0XHUwNGI1XDdlXDJc Mlx1MDRiNVx1MDRiNlw3cVwyXDJcdTA0YjYNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA0YjdcN2ZcMlwyXHUwNGI3XHUwNGI4XDdrXDJcMlx1MDRiOFx1MDRiOVw3cFwyXDJcdTA0Yjki KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRiYVw3aVwyXDJcdTA0YmFcdTAwZDJcM1wyXDJc Mlx1MDRiYlx1MDRiY1w3dVwyXDJcdTA0YmMNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA0YmRcN3dcMlwyXHUwNGJkXHUwNGJlXDdyXDJcMlx1MDRiZVx1MDRiZlw3clwyXDJcdTA0YmYi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRjMFw3dFwyXDJcdTA0YzBcdTA0YzFcN2dcMlwy XHUwNGMxXHUwNGMyXDd1XDJcMlx1MDRjMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGMz XDd1XDJcMlx1MDRjM1x1MDRjNFw3a1wyXDJcdTA0YzRcdTA0YzVcN2hcMlwyXHUwNGM1IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwZDRcM1wyXDJcMlx1MDRjNlx1MDRjN1w3ZlwyXDJcdTA0 YzdcdTA0YzhcN2tcMlwyXHUwNGM4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0YzlcN3Vc MlwyXHUwNGM5XHUwNGNhXDdjXDJcMlx1MDRjYVx1MDRjYlw3ZFwyXDJcdTA0Y2IiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDRjY1w3blwyXDJcdTA0Y2NcdTA0Y2RcN2dcMlwyXHUwNGNkXHUw NGNlXDdrXDJcMlx1MDRjZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGNmXDdoXDJcMlx1 MDRjZlx1MDBkNlwzXDJcMlwyXHUwNGQwXHUwNGQxXDdqXDJcMlx1MDRkMSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNGQyXDdrXDJcMlx1MDRkMlx1MDRkM1w3ZlwyXDJcdTA0ZDNcdTA0ZDRc N2ZcMlwyXHUwNGQ0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0ZDVcN2dcMlwyXHUwNGQ1 XHUwNGQ2XDdwXDJcMlx1MDRkNlx1MDBkOFwzXDJcMlwyXHUwNGQNCj4gNyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNGQ4XDdpXDJcMlx1MDRkOFx1MDRkOVw3cVwyXDJcdTA0ZDlcdTA0ZGFc N3ZcMlwyXHUwNGRhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0ZGJcN3FcMlwyXHUwNGRi XHUwMGRhXDNcMlwyXDJcdTA0ZGNcdTA0ZGRcN2hcMlwyXHUwNGQNCj4gZCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNGRlXDdxXDJcMlx1MDRkZVx1MDRkZlw3dFwyXDJcdTA0ZGZcdTA0ZTBc N29cMlwyXHUwNGUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0ZTFcN3VcMlwyXHUwNGUx XHUwNGUyXDdnXDJcMlx1MDRlMlx1MDRlM1w3dlwyXDJcdTA0ZTMNCj4gIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA0ZTRcN2lcMlwyXHUwNGU0XHUwNGU1XDd3XDJcMlx1MDRlNVx1MDRlNlw3 a1wyXDJcdTA0ZTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRlN1w3ZlwyXDJcdTA0ZTdc dTAwZGNcM1wyXDJcMlx1MDRlOFx1MDRlOVw3a1wyXDJcdTA0ZTkNCj4gIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA0ZWFcN3BcMlwyXHUwNGVhXHUwNGViXDdlXDJcMlx1MDRlYlx1MDRlY1w3 cVwyXDJcdTA0ZWMNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0ZWRcN3BcMlwyXHUw NGVkXHUwNGVlXDd1XDJcMlx1MDRlZVx1MDRlZlw3a1wyXDJcdTA0ZWYNCj4gIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA0ZjBcN3VcMlwyXHUwNGYwXHUwNGYxXDd2XDJcMlx1MDRmMVx1MDRm Mlw3Z1wyXDJcdTA0ZjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRmM1w3cFwyXDJcdTA0 ZjNcdTA0ZjRcN3ZcMlwyXHUwNGY0XHUwNGY1XDdrXDJcMlx1MDRmNSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNGY2XDdoXDJcMlx1MDRmNlx1MDBkZVwzXDJcMlwyXHUwNGY3XHUwNGY4XDd5 XDJcMlx1MDRmOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGY5XDdjXDJcMlx1MDRmOVx1 MDRmYVw3dFwyXDJcdTA0ZmFcdTA0ZmJcN3BcMlwyXHUwNGZiIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA0ZmNcN2tcMlwyXHUwNGZjXHUwNGZkXDdwXDJcMlx1MDRmZFx1MDRmZVw3aVwyXDJc dTA0ZmUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRmZlw3a1wyXDJcdTA0ZmZcdTA1MDBc N2hcMlwyXHUwNTAwXHUwMGUwXDNcMlwyXDJcdTA1MDEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDUwMlw3cFwyXDJcdTA1MDJcdTA1MDNcN3FcMlwyXHUwNTAzXHUwNTA0XDd1XDJcMlx1MDUw NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTA1XDd3XDJcMlx1MDUwNVx1MDUwNlw3ZFwy XDJcdTA1MDZcdTA1MDdcN29cMlwyXHUwNTA3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1 MDhcN2tcMlwyXHUwNTA4XHUwNTA5XDd2XDJcMlx1MDUwOVx1MDUwYVw3a1wyXDJcdTA1MGEiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUwYlw3aFwyXDJcdTA1MGJcdTAwZTJcM1wyXDJcMlx1 MDUwY1x1MDUwZFw3Z1wyXDJcdTA1MGQNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1 MGVcN3BcMlwyXHUwNTBlXHUwNTBmXDdmXDJcMlx1MDUwZlx1MDUxMFw3a1wyXDJcdTA1MTAiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUxMVw3aFwyXDJcdTA1MTFcdTAwZTRcM1wyXDJcMlx1 MDUxMlx1MDUxM1w3bVwyXDJcdTA1MQ0KPiAzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1 MTRcN2dcMlwyXHUwNTE0XHUwNTE1XDd7XDJcMlx1MDUxNVx1MDBlNlwzXDJcMlwyXHUwNTE2IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1MTdcN0ZcMlwyXHUwNTE3XHUwNTE4XDdHXDJcMlx1 MDUxOFx1MDUxOVw3SFwyXDJcdTA1MTkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUxYVw3 Q1wyXDJcdTA1MWFcdTA1MWJcN1dcMlwyXHUwNTFiXHUwNTFjXDdOXDJcMlx1MDUxYw0KPiAiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUxZFw3VlwyXDJcdTA1MWRcdTAwZThcM1wyXDJcMlx1 MDUxZVx1MDUxZlw3T1wyXDJcdTA1MWYNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1 MjBcN0NcMlwyXHUwNTIwXHUwNTIxXDdQXDJcMlx1MDUyMVx1MDUyMlw3V1wyXDJcdTA1MjINCj4g IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1MjNcN0hcMlwyXHUwNTIzXHUwNTI0XDdDXDJc Mlx1MDUyNFx1MDUyNVw3RVwyXDJcdTA1MjUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUy Nlw3VlwyXDJcdTA1MjZcdTA1MjdcN1dcMlwyXHUwNTI3XHUwNTI4XDdUXDJcMlx1MDUyOA0KPiAi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUyOVw3S1wyXDJcdTA1MjlcdTA1MmFcN1BcMlwy XHUwNTJhXHUwNTJiXDdJXDJcMlx1MDUyYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGVh XDNcMlwyXDJcdTA1MmNcdTA1MmRcN0VcMlwyXHUwNTJkXHUwNTJlXDdKXDJcMlx1MDUyZQ0KPiAi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUyZlw3R1wyXDJcdTA1MmZcdTA1MzBcN0VcMlwy XHUwNTMwXHUwNTMxXDdNXDJcMlx1MDUzMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTMy XDdEXDJcMlx1MDUzMlx1MDUzM1w3UVwyXDJcdTA1MzNcdTA1MzRcN1pcMlwyXHUwNTM0IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1MzVcN2FcMlwyXHUwNTM1XHUwNTM2XDdGXDJcMlx1MDUz Nlx1MDUzN1w3R1wyXDJcdTA1MzciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUzOFw3SFwy XDJcdTA1MzhcdTA1MzlcN0NcMlwyXHUwNTM5XHUwNTNhXDdXXDJcMlx1MDUzYQ0KPiAiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDUzYlw3TlwyXDJcdTA1M2JcdTA1M2NcN1ZcMlwyXHUwNTNj XHUwMGVjXDNcMlwyXDJcdTA1M2QNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1M2Vc N0VcMlwyXHUwNTNlXHUwNTNmXDdKXDJcMlx1MDUzZlx1MDU0MFw3R1wyXDJcdTA1NDAiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDU0MVw3RVwyXDJcdTA1NDFcdTA1NDJcN01cMlwyXHUwNTQy XHUwNTQzXDdEXDJcMlx1MDU0Mw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU0NFw3 UVwyXDJcdTA1NDRcdTA1NDVcN1pcMlwyXHUwNTQ1XHUwNTQ2XDdhXDJcMlx1MDU0NiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNTQ3XDdGXDJcMlx1MDU0N1x1MDU0OFw3R1wyXDJcdTA1NDhc dTA1NDlcN0hcMlwyXHUwNTQ5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1NGFcN0NcMlwy XHUwNTRhXHUwNTRiXDdXXDJcMlx1MDU0Ylx1MDU0Y1w3TlwyXDJcdTA1NGMNCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA1NGRcN1ZcMlwyXHUwNTRkXHUwNTRlXDdhXDJcMlx1MDU0ZVx1 MDU0Zlw3T1wyXDJcdTA1NGYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU1MFw3SFwyXDJc dTA1NTBcdTA1NTFcN0lcMlwyXHUwNTUxXHUwMGVlXDNcMlwyXDJcdTA1NTINCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA1NTNcN0tcMlwyXHUwNTUzXHUwNTU0XDdQXDJcMlx1MDU1NFx1 MDU1NVw3VlwyXDJcdTA1NTUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU1Nlw3R1wyXDJc dTA1NTZcdTA1NTdcN1RcMlwyXHUwNTU3XHUwNTU4XDdDXDJcMlx1MDU1OCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNTU5XDdFXDJcMlx1MDU1OVx1MDU1YVw3VlwyXDJcdTA1NWFcdTA1NWJc N0tcMlwyXHUwNTViIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1NWNcN1hcMlwyXHUwNTVj XHUwNTVkXDdHXDJcMlx1MDU1ZFx1MDBmMFwzXDJcMlwyXHUwNTVlDQo+ICIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNTVmXDdQXDJcMlx1MDU1Zlx1MDU2MFw3WFwyXDJcdTA1NjBcdTA1NjFc N2FcMlwyXHUwNTYxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1NjJcN0NcMlwyXHUwNTYy XHUwNTYzXDdFXDJcMlx1MDU2M1x1MDU2NFw3RVwyXDJcdTA1NjQiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDU2NVw3R1wyXDJcdTA1NjVcdTA1NjZcN1VcMlwyXHUwNTY2XHUwNTY3XDdVXDJc Mlx1MDU2Nw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBmMlwzXDJcMlwyXHUwNTY4 XHUwNTY5XDdUXDJcMlx1MDU2OVx1MDU2YVw3R1wyXDJcdTA1NmENCj4gIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA1NmJcN1VcMlwyXHUwNTZiXHUwNTZjXDdHXDJcMlx1MDU2Y1x1MDU2ZFw3 VlwyXDJcdTA1NmQNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1NmVcN2FcMlwyXHUw NTZlXHUwNTZmXDdUXDJcMlx1MDU2Zlx1MDU3MFw3R1wyXDJcdTA1NzAiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDU3MVw3U1wyXDJcdTA1NzFcdTA1NzJcN1dcMlwyXHUwNTcyXHUwNTczXDdL XDJcMlx1MDU3Mw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU3NFw3VFwyXDJcdTA1 NzRcdTA1NzVcN0dcMlwyXHUwNTc1XHUwNTc2XDdGXDJcMlx1MDU3NiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMGY0XDNcMlwyXDJcdTA1NzdcdTA1NzhcN1RcMlwyXHUwNTc4XHUwNTc5XDdH XDJcMlx1MDU3OQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU3YVw3RVwyXDJcdTA1 N2FcdTA1N2JcN1FcMlwyXHUwNTdiXHUwNTdjXDdQXDJcMlx1MDU3YyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNTdkXDdQXDJcMlx1MDU3ZFx1MDU3ZVw3R1wyXDJcdTA1N2VcdTA1N2ZcN0Vc MlwyXHUwNTdmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1ODBcN1ZcMlwyXHUwNTgwXHUw NTgxXDdhXDJcMlx1MDU4MVx1MDU4Mlw3VFwyXDJcdTA1ODIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDU4M1w3R1wyXDJcdTA1ODNcdTA1ODRcN1NcMlwyXHUwNTg0XHUwNTg1XDdXXDJcMlx1 MDU4NQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU4Nlw3S1wyXDJcdTA1ODZcdTA1 ODdcN1RcMlwyXHUwNTg3XHUwNTg4XDdHXDJcMlx1MDU4OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNTg5XDdGXDJcMlx1MDU4OVx1MDBmNlwzXDJcMlwyXHUwNThhXHUwNThiXDdOXDJcMlx1 MDU4Yg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU4Y1w3Q1wyXDJcdTA1OGNcdTA1 OGRcN1ZcMlwyXHUwNThkXHUwNThlXDdHXDJcMlx1MDU4ZQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDU4Zlw3YVwyXDJcdTA1OGZcdTA1OTBcN0VcMlwyXHUwNTkwXHUwNTkxXDdKXDJc Mlx1MDU5MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTkyXDdHXDJcMlx1MDU5Mlx1MDU5 M1w3RVwyXDJcdTA1OTNcdTA1OTRcN01cMlwyXHUwNTk0DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMGY4XDNcMlwyXDJcdTA1OTVcdTA1OTZcN1RcMlwyXHUwNTk2XHUwNTk3XDdHXDJc Mlx1MDU5Nw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU5OFw3Q1wyXDJcdTA1OThc dTA1OTlcN0ZcMlwyXHUwNTk5XHUwNTlhXDdhXDJcMlx1MDU5YSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNTliXDdRXDJcMlx1MDU5Ylx1MDU5Y1w3UFwyXDJcdTA1OWNcdTA1OWRcN05cMlwy XHUwNTlkDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTllXDdbXDJcMlx1MDU5ZVx1 MDBmYVwzXDJcMlwyXHUwNTlmXHUwNWEwXDdRXDJcMlx1MDVhMCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNWExXDdSXDJcMlx1MDVhMVx1MDVhMlw3VlwyXDJcdTA1YTJcdTA1YTNcN0tcMlwy XHUwNWEzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1YTRcN1FcMlwyXHUwNWE0XHUwNWE1 XDdQXDJcMlx1MDVhNVx1MDVhNlw3VVwyXDJcdTA1YTYNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA1YTdcN2FcMlwyXHUwNWE3XHUwNWE4XDdRXDJcMlx1MDVhOFx1MDVhOVw3UFwyXDJc dTA1YTkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVhYVw3TlwyXDJcdTA1YWFcdTA1YWJc N1tcMlwyXHUwNWFiXHUwMGZjXDNcMlwyXDJcdTA1YWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDVhZFw3VFwyXDJcdTA1YWRcdTA1YWVcN0dcMlwyXHUwNWFlXHUwNWFmXDdVXDJcMlx1MDVh ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWIwXDdWXDJcMlx1MDViMFx1MDViMVw3YVwy XDJcdTA1YjFcdTA1YjJcN1VcMlwyXHUwNWIyDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwNWIzXDdWXDJcMlx1MDViM1x1MDViNFw3W1wyXDJcdTA1YjRcdTA1YjVcN05cMlwyXHUwNWI1 DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWI2XDdHXDJcMlx1MDViNlx1MDBmZVwz XDJcMlwyXHUwNWI3XHUwNWI4XDdlXDJcMlx1MDViDQo+IDgiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDViOVw3blwyXDJcdTA1YjlcdTA1YmFcN2NcMlwyXHUwNWJhXHUwNWJiXDd1XDJcMlx1 MDViYg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDViY1w3dVwyXDJcdTA1YmNcdTAx MDBcM1wyXDJcMlx1MDViZFx1MDViZVw3dVwyXDJcdTA1Yg0KPiBlIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA1YmZcN3dcMlwyXHUwNWJmXHUwNWMwXDdkXDJcMlx1MDVjMFx1MDVjMVw3ZVwy XDJcdTA1YzEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVjMlw3blwyXDJcdTA1YzJcdTA1 YzNcN2NcMlwyXHUwNWMzXHUwNWM0XDd1XDJcMlx1MDVjNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNWM1XDd1XDJcMlx1MDVjNVx1MDEwMlwzXDJcMlwyXHUwNWM2XHUwNWM3XDdlXDJcMlx1 MDVjNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWM4XDduXDJcMlx1MDVjOFx1MDVjOVw3 Y1wyXDJcdTA1YzlcdTA1Y2FcN3VcMlwyXHUwNWNhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA1Y2JcN3VcMlwyXHUwNWNiXHUwNWNjXDdpXDJcMlx1MDVjY1x1MDVjZFw3d1wyXDJcdTA1Y2Qi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVjZVw3a1wyXDJcdTA1Y2VcdTA1Y2ZcN2ZcMlwy XHUwNWNmXHUwMTA0XDNcMlwyXDJcdTA1ZDAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVk MVw3dlwyXDJcdTA1ZDFcdTA1ZDJcN3tcMlwyXHUwNWQyXHUwNWQzXDdyXDJcMlx1MDVkMyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWQ0XDdnXDJcMlx1MDVkNFx1MDVkNVw3ZlwyXDJcdTA1 ZDVcdTA1ZDZcN2dcMlwyXHUwNWQ2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1ZDdcN2hc MlwyXHUwNWQ3XHUwMTA2XDNcMlwyXDJcdTA1ZDhcdTA1ZDlcN3RcMlwyXHUwNWQ5DQo+ICIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWRhXDdnXDJcMlx1MDVkYVx1MDVkYlw3dVwyXDJcdTA1 ZGJcdTA1ZGNcN3ZcMlwyXHUwNWRjDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWRk XDdxXDJcMlx1MDVkZFx1MDVkZVw3dFwyXDJcdTA1ZGVcdTA1ZGZcN2dcMlwyXHUwNWRmIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMDhcM1wyXDJcMlx1MDVlMFx1MDVlMVw3dVwyXDJcdTA1 ZTFcdTA1ZTJcN2NcMlwyXHUwNWUyDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWUz XDd4XDJcMlx1MDVlM1x1MDVlNFw3Z1wyXDJcdTA1ZTRcdTAxMGFcM1wyXDJcMlx1MDVlNQ0KPiAi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVlNlw3ZlwyXDJcdTA1ZTZcdTA1ZTdcN2dcMlwy XHUwNWU3XHUwNWU4XDdoXDJcMlx1MDVlOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWU5 XDdjXDJcMlx1MDVlOVx1MDVlYVw3d1wyXDJcdTA1ZWFcdTA1ZWJcN25cMlwyXHUwNWViDQo+ICIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWVjXDd2XDJcMlx1MDVlY1x1MDVlZFw3dVwyXDJc dTA1ZWRcdTAxMGNcM1wyXDJcMlx1MDVlZQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDVlZlw3ZFwyXDJcdTA1ZWZcdTA1ZjBcN2NcMlwyXHUwNWYwXHUwNWYxXDdwXDJcMlx1MDVmMSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWYyXDdwXDJcMlx1MDVmMlx1MDVmM1w3Z1wyXDJc dTA1ZjNcdTA1ZjRcN3RcMlwyXHUwNWY0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMGVc M1wyXDJcMlx1MDVmNVx1MDVmNlw3Y1wyXDJcdTA1ZjZcdTA1ZjdcN25cMlwyXHUwNWY3IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1ZjhcN2tcMlwyXHUwNWY4XHUwNWY5XDdpXDJcMlx1MDVm OVx1MDVmYVw3cFwyXDJcdTA1ZmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDExMFwzXDJc MlwyXHUwNWZiXHUwNWZjXDduXDJcMlx1MDVmY1x1MDVmZFw3Z1wyXDJcdTA1ZmQiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDVmZVw3aFwyXDJcdTA1ZmVcdTA1ZmZcN3ZcMlwyXHUwNWZmXHUw MTEyXDNcMlwyXDJcdTA2MDAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYwMVw3dFwyXDJc dTA2MDFcdTA2MDJcN2tcMlwyXHUwNjAyXHUwNjAzXDdpXDJcMlx1MDYwMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNjA0XDdqXDJcMlx1MDYwNFx1MDYwNVw3dlwyXDJcdTA2MDVcdTAxMTRc M1wyXDJcMlx1MDYwNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjA3XDdlXDJcMlx1MDYw N1x1MDYwOFw3Z1wyXDJcdTA2MDhcdTA2MDlcN3BcMlwyXHUwNjA5IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA2MGFcN3ZcMlwyXHUwNjBhXHUwNjBiXDdnXDJcMlx1MDYwYlx1MDYwY1w3dFwy XDJcdTA2MGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDExNlwzXDJcMlwyXHUwNjBkXHUw NjBlXDduXDJcMlx1MDYwZVx1MDYwZlw3a1wyXDJcdTA2MGYiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDYxMFw3cFwyXDJcdTA2MTBcdTA2MTFcN2dcMlwyXHUwNjExXHUwMTE4XDNcMlwyXDJc dTA2MTINCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2MTNcN3BcMlwyXHUwNjEzXHUw NjE0XDdjXDJcMlx1MDYxNFx1MDYxNVw3b1wyXDJcdTA2MTUiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDYxNlw3Z1wyXDJcdTA2MTZcdTAxMWFcM1wyXDJcMlx1MDYxN1x1MDYxOFw3eFwyXDJc dTA2MTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYxOVw3Y1wyXDJcdTA2MTlcdTA2MWFc N3RcMlwyXHUwNjFhXHUwNjFiXDdrXDJcMlx1MDYxYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwNjFjXDdmXDJcMlx1MDYxY1x1MDExY1wzXDJcMlwyXHUwNjFkXHUwNjFlXDdzXDJcMlx1MDYx ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjFmXDd3XDJcMlx1MDYxZlx1MDYyMFw3Z1wy XDJcdTA2MjBcdTA2MjFcN3VcMlwyXHUwNjIxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2 MjJcN3ZcMlwyXHUwNjIyXHUwNjIzXDdrXDJcMlx1MDYyM1x1MDYyNFw3cVwyXDJcdTA2MjQiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYyNVw3cFwyXDJcdTA2MjVcdTAxMWVcM1wyXDJcMlx1 MDYyNlx1MDYyN1w3c1wyXDJcdTA2MjcNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2 MjhcN3dcMlwyXHUwNjI4XHUwNjI5XDdnXDJcMlx1MDYyOVx1MDYyYVw3dVwyXDJcdTA2MmEiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDYyYlw3dlwyXDJcdTA2MmJcdTA2MmNcN2tcMlwyXHUw NjJjXHUwNjJkXDdxXDJcMlx1MDYyZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjJlXDdw XDJcMlx1MDYyZVx1MDYyZlw3a1wyXDJcdTA2MmZcdTA2MzBcN2ZcMlwyXHUwNjMwIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAxMjBcM1wyXDJcMlx1MDYzMVx1MDYzMlw3a1wyXDJcdTA2MzJc dTA2MzNcN29cMlwyXHUwNjMzDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjM0XDdj XDJcMlx1MDYzNFx1MDYzNVw3aVwyXDJcdTA2MzVcdTA2MzZcN2dcMlwyXHUwNjM2IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAxMjJcM1wyXDJcMlx1MDYzN1x1MDYzOFw3blwyXDJcdTA2Mzhc dTA2MzlcN3FcMlwyXHUwNjM5DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjNhXDdl XDJcMlx1MDYzYVx1MDYzYlw3bVwyXDJcdTA2M2JcdTA2M2NcN2dcMlwyXHUwNjNjIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA2M2RcN2ZcMlwyXHUwNjNkXHUwMTI0XDNcMlwyXDJcdTA2M2Vc dTA2M2ZcN3RcMlwyXHUwNjNmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2NDBcN3dcMlwy XHUwNjQwXHUwNjQxXDduXDJcMlx1MDY0MVx1MDY0Mlw3Z1wyXDJcdTA2NDIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDEyNlwzXDJcMlwyXHUwNjQzXHUwNjQ0XDdnXDJcMlx1MDY0NFx1MDY0 NVw3cFwyXDJcdTA2NDUNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2NDZcN2ZcMlwy XHUwNjQ2XHUwNjQ3XDd0XDJcMlx1MDY0N1x1MDY0OFw3d1wyXDJcdTA2NDgiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDY0OVw3blwyXDJcdTA2NDlcdTA2NGFcN2dcMlwyXHUwNjRhXHUwMTI4 XDNcMlwyXDJcdTA2NGINCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2NGNcN3hcMlwy XHUwNjRjXHUwNjRkXDdjXDJcMlx1MDY0ZFx1MDY0ZVw3blwyXDJcdTA2NGUiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDY0Zlw3d1wyXDJcdTA2NGZcdTA2NTBcN2dcMlwyXHUwNjUwXHUwMTJh XDNcMlwyXDJcdTA2NTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY1Mlw3dFwyXDJcdTA2 NTJcdTA2NTNcN2dcMlwyXHUwNjUzXHUwNjU0XDdjXDJcMlx1MDY1NCIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNjU1XDdmXDJcMlx1MDY1NVx1MDEyY1wzXDJcMlwyXHUwNjU2XHUwNjU3XDd5 XDJcMlx1MDY1NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjU4XDd0XDJcMlx1MDY1OFx1 MDY1OVw3a1wyXDJcdTA2NTlcdTA2NWFcN3ZcMlwyXHUwNjVhIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA2NWJcN2dcMlwyXHUwNjViXHUwMTJlXDNcMlwyXDJcdTA2NWNcdTA2NWRcN3RcMlwy XHUwNjVkDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjVlXDdnXDJcMlx1MDY1ZVx1 MDY1Zlw3dVwyXDJcdTA2NWZcdTA2NjBcN2dcMlwyXHUwNjYwIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA2NjFcN3ZcMlwyXHUwNjYxXHUwNjYyXDdkXDJcMlx1MDY2Mlx1MDY2M1w3d1wyXDJc dTA2NjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY2NFw3dlwyXDJcdTA2NjRcdTA2NjVc N3ZcMlwyXHUwNjY1XHUwNjY2XDdxXDJcMlx1MDY2NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwNjY3XDdwXDJcMlx1MDY2N1x1MDEzMFwzXDJcMlwyXHUwNjY4XHUwNjY5XDdnXDJcMlx1MDY2 OQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY2YVw3cFwyXDJcdTA2NmFcdTA2NmJc N2ZcMlwyXHUwNjZiXHUwNjZjXDd0XDJcMlx1MDY2YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwNjZkXDdnXDJcMlx1MDY2ZFx1MDY2ZVw3dVwyXDJcdTA2NmVcdTA2NmZcN2dcMlwyXHUwNjZm IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2NzBcN3ZcMlwyXHUwNjcwXHUwNjcxXDdkXDJc Mlx1MDY3MVx1MDY3Mlw3d1wyXDJcdTA2NzIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY3 M1w3dlwyXDJcdTA2NzNcdTA2NzRcN3ZcMlwyXHUwNjc0XHUwNjc1XDdxXDJcMlx1MDY3NSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjc2XDdwXDJcMlx1MDY3Nlx1MDEzMlwzXDJcMlwyXHUw Njc3XHUwNjc4XDdmXDJcMlx1MDY3OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjc5XDdn XDJcMlx1MDY3OVx1MDY3YVw3aFwyXDJcdTA2N2FcdTA2N2JcN2NcMlwyXHUwNjdiIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA2N2NcN3dcMlwyXHUwNjdjXHUwNjdkXDduXDJcMlx1MDY3ZFx1 MDY3ZVw3dlwyXDJcdTA2N2UNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2N2ZcN3Vc MlwyXHUwNjdmXHUwNjgwXDd2XDJcMlx1MDY4MFx1MDY4MVw3cVwyXDJcdTA2ODEiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDY4Mlw3dFwyXDJcdTA2ODJcdTA2ODNcN2dcMlwyXHUwNjgzXHUw MTM0XDNcMlwyXDJcdTA2ODQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY4NVw3Y1wyXDJc dTA2ODVcdTA2ODZcN3ZcMlwyXHUwNjg2XHUwNjg3XDd2XDJcMlx1MDY4NyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNjg4XDd0XDJcMlx1MDY4OFx1MDY4OVw3a1wyXDJcdTA2ODlcdTA2OGFc N2RcMlwyXHUwNjhhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2OGJcN3dcMlwyXHUwNjhi XHUwNjhjXDd2XDJcMlx1MDY4Y1x1MDY4ZFw3Z1wyXDJcdTA2OGQiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDEzNlwzXDJcMlwyXHUwNjhlXHUwNjhmXDd4XDJcMlx1MDY4Zlx1MDY5MFw3Y1wy XDJcdTA2OTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY5MVw3dFwyXDJcdTA2OTFcdTA2 OTJcN3VcMlwyXHUwNjkyXHUwNjkzXDd2XDJcMlx1MDY5MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNjk0XDdxXDJcMlx1MDY5NFx1MDY5NVw3dFwyXDJcdTA2OTVcdTA2OTZcN2dcMlwyXHUw Njk2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMzhcM1wyXDJcMlx1MDY5N1x1MDY5OFw3 Z1wyXDJcdTA2OThcdTA2OTlcN2hcMlwyXHUwNjk5DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNjlhXDdrXDJcMlx1MDY5YVx1MDY5Ylw3eFwyXDJcdTA2OWJcdTA2OWNcN2NcMlwyXHUw NjljIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2OWRcN3RcMlwyXHUwNjlkXHUwNjllXDd1 XDJcMlx1MDY5ZVx1MDY5Zlw3dlwyXDJcdTA2OWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDZhMFw3cVwyXDJcdTA2YTBcdTA2YTFcN3RcMlwyXHUwNmExXHUwNmEyXDdnXDJcMlx1MDZhMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTNhXDNcMlwyXDJcdTA2YTNcdTA2YTRcN3hcMlwy XHUwNmE0XHUwNmE1XDdjXDJcMlx1MDZhNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmE2 XDd0XDJcMlx1MDZhNlx1MDZhN1w3dVwyXDJcdTA2YTdcdTA2YThcN2tcMlwyXHUwNmE4IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2YTlcN3xcMlwyXHUwNmE5XHUwNmFhXDdnXDJcMlx1MDZh YVx1MDEzY1wzXDJcMlwyXHUwNmFiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2YWNcN3Bc MlwyXHUwNmFjXHUwNmFkXDdjXDJcMlx1MDZhZFx1MDZhZVw3b1wyXDJcdTA2YWUiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDZhZlw3Z1wyXDJcdTA2YWZcdTA2YjBcN3hcMlwyXHUwNmIwXHUw NmIxXDdjXDJcMlx1MDZiMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmIyXDduXDJcMlx1 MDZiMlx1MDZiM1w3d1wyXDJcdTA2YjNcdTA2YjRcN2dcMlwyXHUwNmI0DQo+ICIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNmI1XDd4XDJcMlx1MDZiNVx1MDZiNlw3Y1wyXDJcdTA2YjZcdTA2 YjdcN3RcMlwyXHUwNmI3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2YjhcN3VcMlwyXHUw NmI4XHUwNmI5XDd2XDJcMlx1MDZiOVx1MDZiYVw3cVwyXDJcdTA2YmENCj4gIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA2YmJcN3RcMlwyXHUwNmJiXHUwNmJjXDdnXDJcMlx1MDZiY1x1MDEz ZVwzXDJcMlwyXHUwNmJkDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmJlXDdjXDJc Mlx1MDZiZVx1MDZiZlw3ZVwyXDJcdTA2YmZcdTA2YzBcN3ZcMlwyXHUwNmMwIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA2YzFcN2tcMlwyXHUwNmMxXHUwNmMyXDdxXDJcMlx1MDZjMlx1MDZj M1w3cFwyXDJcdTA2YzMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE0MFwzXDJcMlwyXHUw NmM0XHUwNmM1XDdlXDJcMlx1MDZjNVx1MDZjNlw3cVwyXDJcdTA2YzYiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDZjN1w3cFwyXDJcdTA2YzdcdTA2YzhcN2hcMlwyXHUwNmM4XHUwNmM5XDdr XDJcMlx1MDZjOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmNhXDdpXDJcMlx1MDZjYVx1 MDE0MlwzXDJcMlwyXHUwNmNiXHUwNmNjXDdnXDJcMlx1MDZjYyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNmNkXDdwXDJcMlx1MDZjZFx1MDZjZVw3ZlwyXDJcdTA2Y2VcdTA2Y2ZcN2NcMlwy XHUwNmNmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZDBcN2VcMlwyXHUwNmQwXHUwNmQx XDd2XDJcMlx1MDZkMVx1MDZkMlw3a1wyXDJcdTA2ZDINCj4gIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA2ZDNcN3FcMlwyXHUwNmQzXHUwNmQ0XDdwXDJcMlx1MDZkNFx1MDE0NFwzXDJcMlwy XHUwNmQNCj4gNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmQ2XDd0XDJcMlx1MDZkNlx1 MDZkN1w3Z1wyXDJcdTA2ZDdcdTA2ZDhcN2hcMlwyXHUwNmQ4IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA2ZDlcN3RcMlwyXHUwNmQ5XHUwNmRhXDdnXDJcMlx1MDZkYVx1MDZkYlw3dVwyXDJc dTA2ZGINCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZGNcN2pcMlwyXHUwNmRjXHUw MTQ2XDNcMlwyXDJcdTA2ZGRcdTA2ZGVcN2tcMlwyXHUwNmRlDQo+ICIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNmRmXDdwXDJcMlx1MDZkZlx1MDZlMFw3dlwyXDJcdTA2ZTBcdTA2ZTFcN2dc MlwyXHUwNmUxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZTJcN3RcMlwyXHUwNmUyXHUw NmUzXDd4XDJcMlx1MDZlM1x1MDZlNFw3Y1wyXDJcdTA2ZTQiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDZlNVw3blwyXDJcdTA2ZTVcdTAxNDhcM1wyXDJcMlx1MDZlNlx1MDZlN1w3eFwyXDJc dTA2ZTcNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZThcN2NcMlwyXHUwNmU4XHUw NmU5XDd0XDJcMlx1MDZlOVx1MDZlYVw3dVwyXDJcdTA2ZWEiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDZlYlw3dlwyXDJcdTA2ZWJcdTA2ZWNcN3FcMlwyXHUwNmVjXHUwNmVkXDd0XDJcMlx1 MDZlZA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZlZVw3Z1wyXDJcdTA2ZWVcdTA2 ZWZcN2ZcMlwyXHUwNmVmXHUwNmYwXDdnXDJcMlx1MDZmMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNmYxXDd4XDJcMlx1MDZmMVx1MDZmMlw3a1wyXDJcdTA2ZjJcdTA2ZjNcN2VcMlwyXHUw NmYzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZjRcN2dcMlwyXHUwNmY0XHUwMTRhXDNc MlwyXDJcdTA2ZjVcdTA2ZjZcN2lcMlwyXHUwNmY2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA2ZjdcN3dcMlwyXHUwNmY3XHUwNmY4XDdrXDJcMlx1MDZmOFx1MDZmOVw3ZlwyXDJcdTA2Zjki KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZmYVw3cVwyXDJcdTA2ZmFcdTA2ZmJcN3JcMlwy XHUwNmZiXHUwMTRjXDNcMlwyXDJcdTA2ZmMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZm ZFw3Z1wyXDJcdTA2ZmRcdTA2ZmVcN3BcMlwyXHUwNmZlXHUwNmZmXDdmXDJcMlx1MDZmZiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzAwXDdpXDJcMlx1MDcwMFx1MDcwMVw3d1wyXDJcdTA3 MDFcdTA3MDJcN2tcMlwyXHUwNzAyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3MDNcN2Zc MlwyXHUwNzAzXHUwNzA0XDdxXDJcMlx1MDcwNFx1MDcwNVw3clwyXDJcdTA3MDUiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDE0ZVwzXDJcMlwyXHUwNzA2XHUwNzA3XDdmXDJcMlx1MDcwN1x1 MDcwOFw3Y1wyXDJcdTA3MDgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDcwOVw3dlwyXDJc dTA3MDlcdTA3MGFcN2NcMlwyXHUwNzBhXHUwNzBiXDd2XDJcMlx1MDcwYiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNzBjXDd7XDJcMlx1MDcwY1x1MDcwZFw3clwyXDJcdTA3MGRcdTA3MGVc N2dcMlwyXHUwNzBlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxNTBcM1wyXDJcMlx1MDcw Zlx1MDcxMFw3ZlwyXDJcdTA3MTBcdTA3MTFcN2NcMlwyXHUwNzExIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA3MTJcN3ZcMlwyXHUwNzEyXHUwNzEzXDdjXDJcMlx1MDcxM1x1MDE1MlwzXDJc MlwyXHUwNzE0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3MTVcN29cMlwyXHUwNzE1XHUw NzE2XDdxXDJcMlx1MDcxNlx1MDcxN1w3ZlwyXDJcdTA3MTciKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDcxOFw3Y1wyXDJcdTA3MThcdTA3MTlcN25cMlwyXHUwNzE5XHUwMTU0XDNcMlwyXDJc dTA3MWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDcxYlw3UFwyXDJcdTA3MWJcdTA3MWNc N1FcMlwyXHUwNzFjXHUwNzFkXDdQXDJcMlx1MDcxZA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDcxZVw3YVwyXDJcdTA3MWVcdTA3MWZcN0ZcMlwyXHUwNzFmXHUwNzIwXDdHXDJcMlx1 MDcyMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzIxXDdYXDJcMlx1MDcyMVx1MDcyMlw3 S1wyXDJcdTA3MjJcdTA3MjNcN0VcMlwyXHUwNzIzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA3MjRcN0dcMlwyXHUwNzI0XHUwMTU2XDNcMlwyXDJcdTA3MjVcdTA3MjZcN0ZcMlwyXHUwNzI2 DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzI3XDdLXDJcMlx1MDcyN1x1MDcyOFw3 VVwyXDJcdTA3MjhcdTA3MjlcN01cMlwyXHUwNzI5DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNzJhXDdhXDJcMlx1MDcyYVx1MDcyYlw3RlwyXDJcdTA3MmJcdTA3MmNcN0dcMlwyXHUw NzJjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3MmRcN1hcMlwyXHUwNzJkXHUwNzJlXDdL XDJcMlx1MDcyZVx1MDcyZlw3RVwyXDJcdTA3MmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDczMFw3R1wyXDJcdTA3MzBcdTAxNThcM1wyXDJcMlx1MDczMVx1MDczMlw3WFwyXDJcdTA3MzIN Cj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3MzNcN0tcMlwyXHUwNzMzXHUwNzM0XDdG XDJcMlx1MDczNFx1MDczNVw3R1wyXDJcdTA3MzUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDczNlw3UVwyXDJcdTA3MzZcdTA3MzdcN2FcMlwyXHUwNzM3XHUwNzM4XDdGXDJcMlx1MDczOCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzM5XDdHXDJcMlx1MDczOVx1MDczYVw3WFwyXDJc dTA3M2FcdTA3M2JcN0tcMlwyXHUwNzNiDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw NzNjXDdFXDJcMlx1MDczY1x1MDczZFw3R1wyXDJcdTA3M2RcdTAxNWFcM1wyXDJcMlx1MDczZQ0K PiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDczZlw3UFwyXDJcdTA3M2ZcdTA3NDBcN0dc MlwyXHUwNzQwXHUwNzQxXDdWXDJcMlx1MDc0MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw NzQyXDdZXDJcMlx1MDc0Mlx1MDc0M1w3UVwyXDJcdTA3NDNcdTA3NDRcN1RcMlwyXHUwNzQ0IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3NDVcN01cMlwyXHUwNzQ1XHUwNzQ2XDdhXDJcMlx1 MDc0Nlx1MDc0N1w3RlwyXDJcdTA3NDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc0OFw3 R1wyXDJcdTA3NDhcdTA3NDlcN1hcMlwyXHUwNzQ5XHUwNzRhXDdLXDJcMlx1MDc0YSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNzRiXDdFXDJcMlx1MDc0Ylx1MDc0Y1w3R1wyXDJcdTA3NGNc dTAxNWNcM1wyXDJcMlx1MDc0ZA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc0ZVw3 S1wyXDJcdTA3NGVcdTA3NGZcN1BcMlwyXHUwNzRmXHUwNzUwXDdSXDJcMlx1MDc1MCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNzUxXDdXXDJcMlx1MDc1MVx1MDc1Mlw3VlwyXDJcdTA3NTJc dTA3NTNcN2FcMlwyXHUwNzUzDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzU0XDdG XDJcMlx1MDc1NFx1MDc1NVw3R1wyXDJcdTA3NTVcdTA3NTZcN1hcMlwyXHUwNzU2IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA3NTdcN0tcMlwyXHUwNzU3XHUwNzU4XDdFXDJcMlx1MDc1OFx1 MDc1OVw3R1wyXDJcdTA3NTkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE1ZVwzXDJcMlwy XHUwNzVhXHUwNzViXDdRXDJcMlx1MDc1Ylx1MDc1Y1w3UFwyXDJcdTA3NWMNCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA3NWRcN0RcMlwyXHUwNzVkXHUwNzVlXDdRXDJcMlx1MDc1ZVx1 MDc1Zlw3Q1wyXDJcdTA3NWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc2MFw3VFwyXDJc dTA3NjBcdTA3NjFcN0ZcMlwyXHUwNzYxXHUwNzYyXDdhXDJcMlx1MDc2MiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNzYzXDdGXDJcMlx1MDc2M1x1MDc2NFw3R1wyXDJcdTA3NjRcdTA3NjVc N1hcMlwyXHUwNzY1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3NjZcN0tcMlwyXHUwNzY2 XHUwNzY3XDdFXDJcMlx1MDc2N1x1MDc2OFw3R1wyXDJcdTA3NjgiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDE2MFwzXDJcMlwyXHUwNzY5XHUwNzZhXDdRXDJcMlx1MDc2YVx1MDc2Ylw3Vlwy XDJcdTA3Ng0KPiBiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3NmNcN0pcMlwyXHUwNzZj XHUwNzZkXDdHXDJcMlx1MDc2ZFx1MDc2ZVw3VFwyXDJcdTA3NmUiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDc2Zlw3YVwyXDJcdTA3NmZcdTA3NzBcN0ZcMlwyXHUwNzcwXHUwNzcxXDdHXDJc Mlx1MDc3MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzcyXDdYXDJcMlx1MDc3Mlx1MDc3 M1w3S1wyXDJcdTA3NzNcdTA3NzRcN0VcMlwyXHUwNzc0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA3NzVcN0dcMlwyXHUwNzc1XHUwMTYyXDNcMlwyXDJcdTA3NzZcdTA3NzdcN1VcMlwyXHUw Nzc3DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzc4XDdHXDJcMlx1MDc3OFx1MDc3 OVw3VlwyXDJcdTA3NzlcdTA3N2FcN1dcMlwyXHUwNzdhDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNzdiXDdSXDJcMlx1MDc3Ylx1MDc3Y1w3YVwyXDJcdTA3N2NcdTA3N2RcN0NcMlwy XHUwNzdkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3N2VcN1JcMlwyXHUwNzdlXHUwNzdm XDdSXDJcMlx1MDc3Zlx1MDc4MFw3TlwyXDJcdTA3ODAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDc4MVw3S1wyXDJcdTA3ODFcdTA3ODJcN0VcMlwyXHUwNzgyXHUwNzgzXDdDXDJcMlx1MDc4 MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzg0XDdWXDJcMlx1MDc4NFx1MDc4NVw3S1wy XDJcdTA3ODVcdTA3ODZcN1FcMlwyXHUwNzg2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3 ODdcN1BcMlwyXHUwNzg3XHUwMTY0XDNcMlwyXDJcdTA3ODhcdTA3ODlcN0lcMlwyXHUwNzg5IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3OGFcN0dcMlwyXHUwNzhhXHUwNzhiXDdQXDJcMlx1 MDc4Ylx1MDc4Y1w3R1wyXDJcdTA3OGMNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3 OGRcN1RcMlwyXHUwNzhkXHUwNzhlXDdDXDJcMlx1MDc4ZVx1MDc4Zlw3TlwyXDJcdTA3OGYiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc5MFw3YVwyXDJcdTA3OTBcdTA3OTFcN0NcMlwyXHUw NzkxXHUwNzkyXDdSXDJcMlx1MDc5MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzkzXDdS XDJcMlx1MDc5M1x1MDc5NFw3TlwyXDJcdTA3OTRcdTA3OTVcN0tcMlwyXHUwNzk1IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA3OTZcN0VcMlwyXHUwNzk2XHUwNzk3XDdDXDJcMlx1MDc5N1x1 MDc5OFw3VlwyXDJcdTA3OTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc5OVw3S1wyXDJc dTA3OTlcdTA3OWFcN1FcMlwyXHUwNzlhXHUwNzliXDdQXDJcMlx1MDc5Yg0KPiAiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDE2NlwzXDJcMlwyXHUwNzljXHUwNzlkXDdIXDJcMlx1MDc5ZFx1 MDc5ZVw3VFwyXDJcdTA3OWUNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3OWZcN1Fc MlwyXHUwNzlmXHUwN2EwXDdQXDJcMlx1MDdhMFx1MDdhMVw3VlwyXDJcdTA3YTEiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDdhMlw3YVwyXDJcdTA3YTJcdTA3YTNcN1JcMlwyXHUwN2EzXHUw N2E0XDdDXDJcMlx1MDdhNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2E1XDdJXDJcMlx1 MDdhNVx1MDdhNlw3R1wyXDJcdTA3YTZcdTAxNjhcM1wyXDJcMlx1MDdhNyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwN2E4XDdVXDJcMlx1MDdhOFx1MDdhOVw3S1wyXDJcdTA3YTlcdTA3YWFc N1BcMlwyXHUwN2FhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3YWJcN0lcMlwyXHUwN2Fi XHUwN2FjXDdOXDJcMlx1MDdhY1x1MDdhZFw3R1wyXDJcdTA3YWQiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDdhZVw3YVwyXDJcdTA3YWVcdTA3YWZcN1dcMlwyXHUwN2FmXHUwN2IwXDdVXDJc Mlx1MDdiMA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdiMVw3R1wyXDJcdTA3YjFc dTAxNmFcM1wyXDJcMlx1MDdiMlx1MDdiM1w3W1wyXDJcdTA3YjMNCj4gIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA3YjRcN0dcMlwyXHUwN2I0XHUwN2I1XDdDXDJcMlx1MDdiNVx1MDdiNlw3 VFwyXDJcdTA3YjYNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3YjdcN2FcMlwyXHUw N2I3XHUwN2I4XDdVXDJcMlx1MDdiOFx1MDdiOVw3V1wyXDJcdTA3Yg0KPiA5IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA3YmFcN1JcMlwyXHUwN2JhXHUwN2JiXDdSXDJcMlx1MDdiYlx1MDdi Y1w3VFwyXDJcdTA3YmMNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3YmRcN0dcMlwy XHUwN2JkXHUwN2JlXDdVXDJcMlx1MDdiZVx1MDdiZlw3VVwyXDJcdTA3Yg0KPiBmIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAxNmNcM1wyXDJcMlx1MDdjMFx1MDdjMVw3T1wyXDJcdTA3YzFc dTA3YzJcN1FcMlwyXHUwN2MyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3YzNcN1BcMlwy XHUwN2MzXHUwN2M0XDdWXDJcMlx1MDdjNFx1MDdjNVw3SlwyXDJcdTA3YzUiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDdjNlw3YVwyXDJcdTA3YzZcdTA3YzdcN1VcMlwyXHUwN2M3XHUwN2M4 XDdXXDJcMlx1MDdjOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2M5XDdSXDJcMlx1MDdj OVx1MDdjYVw3UlwyXDJcdTA3Y2FcdTA3Y2JcN1RcMlwyXHUwN2NiIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA3Y2NcN0dcMlwyXHUwN2NjXHUwN2NkXDdVXDJcMlx1MDdjZFx1MDdjZVw3VVwy XDJcdTA3Y2UiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE2ZVwzXDJcMlwyXHUwN2NmXHUw N2QwXDdGXDJcMlx1MDdkMFx1MDdkMVw3Q1wyXDJcdTA3ZDENCj4gIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA3ZDJcN1tcMlwyXHUwN2QyXHUwN2QzXDdhXDJcMlx1MDdkM1x1MDdkNFw3VVwy XDJcdTA3ZDQNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3ZDVcN1dcMlwyXHUwN2Q1 XHUwN2Q2XDdSXDJcMlx1MDdkNlx1MDdkN1w3UlwyXDJcdTA3ZA0KPiA3IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA3ZDhcN1RcMlwyXHUwN2Q4XHUwN2Q5XDdHXDJcMlx1MDdkOVx1MDdkYVw3 VVwyXDJcdTA3ZGENCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3ZGJcN1VcMlwyXHUw N2RiXHUwMTcwXDNcMlwyXDJcdTA3ZGNcdTA3ZGRcN0pcMlwyXHUwN2QNCj4gZCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwN2RlXDdRXDJcMlx1MDdkZVx1MDdkZlw3V1wyXDJcdTA3ZGZcdTA3 ZTBcN1RcMlwyXHUwN2UNCj4gMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2UxXDdhXDJc Mlx1MDdlMVx1MDdlMlw3VVwyXDJcdTA3ZTJcdTA3ZTNcN1dcMlwyXHUwN2UNCj4gMyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwN2U0XDdSXDJcMlx1MDdlNFx1MDdlNVw3UlwyXDJcdTA3ZTVc dTA3ZTZcN1RcMlwyXHUwN2U2DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2U3XDdH XDJcMlx1MDdlN1x1MDdlOFw3VVwyXDJcdTA3ZThcdTA3ZTlcN1VcMlwyXHUwN2UNCj4gOSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTcyXDNcMlwyXDJcdTA3ZWFcdTA3ZWJcN09cMlwyXHUw N2ViXHUwN2VjXDdLXDJcMlx1MDdlDQo+IGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdl ZFw3UFwyXDJcdTA3ZWRcdTA3ZWVcN1dcMlwyXHUwN2VlXHUwN2VmXDdWXDJcMlx1MDdlDQo+IGYi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdmMFw3R1wyXDJcdTA3ZjBcdTA3ZjFcN2FcMlwy XHUwN2YxXHUwN2YyXDdVXDJcMlx1MDdmMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2Yz XDdXXDJcMlx1MDdmM1x1MDdmNFw3UlwyXDJcdTA3ZjRcdTA3ZjVcN1JcMlwyXHUwN2Y1IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3ZjZcN1RcMlwyXHUwN2Y2XHUwN2Y3XDdHXDJcMlx1MDdm N1x1MDdmOFw3VVwyXDJcdTA3ZjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdmOVw3VVwy XDJcdTA3ZjlcdTAxNzRcM1wyXDJcMlx1MDdmYVx1MDdmYlw3VVwyXDJcdTA3ZmIiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDdmY1w3R1wyXDJcdTA3ZmNcdTA3ZmRcN0VcMlwyXHUwN2ZkXHUw N2ZlXDdRXDJcMlx1MDdmZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2ZmXDdQXDJcMlx1 MDdmZlx1MDgwMFw3RlwyXDJcdTA4MDBcdTA4MDFcN2FcMlwyXHUwODAxIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA4MDJcN1VcMlwyXHUwODAyXHUwODAzXDdXXDJcMlx1MDgwM1x1MDgwNFw3 UlwyXDJcdTA4MDQNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4MDVcN1JcMlwyXHUw ODA1XHUwODA2XDdUXDJcMlx1MDgwNlx1MDgwN1w3R1wyXDJcdTA4MDciKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDgwOFw3VVwyXDJcdTA4MDhcdTA4MDlcN1VcMlwyXHUwODA5XHUwMTc2XDNc MlwyXDJcdTA4MGENCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4MGJcN1VcMlwyXHUw ODBiXHUwODBjXDdWXDJcMlx1MDgwY1x1MDgwZFw3UVwyXDJcdTA4MGQNCj4gIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA4MGVcN1RcMlwyXHUwODBlXHUwODBmXDdDXDJcMlx1MDgwZlx1MDgx MFw3SVwyXDJcdTA4MTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDgxMVw3R1wyXDJcdTA4 MTFcdTA4MTJcN2FcMlwyXHUwODEyXHUwODEzXDdQXDJcMlx1MDgxMyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwODE0XDdRXDJcMlx1MDgxNFx1MDgxNVw3VFwyXDJcdTA4MTVcdTA4MTZcN09c MlwyXHUwODE2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4MTdcN0NcMlwyXHUwODE3XHUw ODE4XDdOXDJcMlx1MDgxOFx1MDE3OFwzXDJcMlwyXHUwODE5DQo+ICIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwODFhXDdVXDJcMlx1MDgxYVx1MDgxYlw3VlwyXDJcdTA4MWJcdTA4MWNcN1Fc MlwyXHUwODFjDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODFkXDdUXDJcMlx1MDgx ZFx1MDgxZVw3Q1wyXDJcdTA4MWVcdTA4MWZcN0lcMlwyXHUwODFmIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA4MjBcN0dcMlwyXHUwODIwXHUwODIxXDdhXDJcMlx1MDgyMVx1MDgyMlw3Vlwy XDJcdTA4MjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDgyM1w3S1wyXDJcdTA4MjNcdTA4 MjRcN09cMlwyXHUwODI0XHUwODI1XDdHXDJcMlx1MDgyNQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDE3YVwzXDJcMlwyXHUwODI2XHUwODI3XDdVXDJcMlx1MDgyN1x1MDgyOFw3Vlwy XDJcdTA4MjgNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4MjlcN1FcMlwyXHUwODI5 XHUwODJhXDdUXDJcMlx1MDgyYVx1MDgyYlw3Q1wyXDJcdTA4MmIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDgyY1w3SVwyXDJcdTA4MmNcdTA4MmRcN0dcMlwyXHUwODJkXHUwODJlXDdhXDJc Mlx1MDgyZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODJmXDdZXDJcMlx1MDgyZlx1MDgz MFw3Q1wyXDJcdTA4MzBcdTA4MzFcN01cMlwyXHUwODMxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA4MzJcN0dcMlwyXHUwODMyXHUwODMzXDdXXDJcMlx1MDgzM1x1MDgzNFw3UlwyXDJcdTA4 MzQNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxN2NcM1wyXDJcMlx1MDgzNVx1MDgz Nlw3V1wyXDJcdTA4MzZcdTA4MzdcN1BcMlwyXHUwODM3DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwODM4XDdLXDJcMlx1MDgzOFx1MDgzOVw3U1wyXDJcdTA4MzlcdTA4M2FcN1dcMlwy XHUwODNhDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODNiXDdHXDJcMlx1MDgzYlx1 MDE3ZVwzXDJcMlwyXHUwODNjXHUwODNkXDdQXDJcMlx1MDgzDQo+IGQiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDgzZVw3UVwyXDJcdTA4M2VcdTA4M2ZcN0dcMlwyXHUwODNmXHUwODQwXDdP XDJcMlx1MDg0MA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg0MVw3UlwyXDJcdTA4 NDFcdTA4NDJcN1ZcMlwyXHUwODQyXHUwODQzXDdbXDJcMlx1MDg0MyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMTgwXDNcMlwyXDJcdTA4NDRcdTA4NDVcN2VcMlwyXHUwODQ1XHUwODQ2XDdx XDJcMlx1MDg0Ng0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg0N1w3cFwyXDJcdTA4 NDdcdTA4NDhcN2ZcMlwyXHUwODQ4XHUwMTgyXDNcMlwyXDJcdTA4NDkiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDg0YVw3aFwyXDJcdTA4NGFcdTA4NGJcN2tcMlwyXHUwODRiXHUwODRjXDdw XDJcMlx1MDg0YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODRkXDdmXDJcMlx1MDg0ZFx1 MDE4NFwzXDJcMlwyXHUwODRlXHUwODRmXDdvXDJcMlx1MDg0ZiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwODUwXDdrXDJcMlx1MDg1MFx1MDg1MVw3ZlwyXDJcdTA4NTFcdTAxODZcM1wyXDJc Mlx1MDg1MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODUzXDd2XDJcMlx1MDg1M1x1MDg1 NFw3cVwyXDJcdTA4NTRcdTA4NTVcN21cMlwyXHUwODU1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA4NTZcN2dcMlwyXHUwODU2XHUwODU3XDdwXDJcMlx1MDg1N1x1MDE4OFwzXDJcMlwyXHUw ODU4DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODU5XDd1XDJcMlx1MDg1OVx1MDg1 YVw3clwyXDJcdTA4NWFcdTA4NWJcN2NcMlwyXHUwODViIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA4NWNcN3BcMlwyXHUwODVjXHUwMThhXDNcMlwyXDJcdTA4NWRcdTA4NWVcN2ZcMlwyXHUw ODVlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4NWZcN3dcMlwyXHUwODVmXHUwODYwXDdy XDJcMlx1MDg2MFx1MDE4Y1wzXDJcMlwyXHUwODYxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA4NjJcN3hcMlwyXHUwODYyXHUwODYzXDdjXDJcMlx1MDg2M1x1MDg2NFw3dFwyXDJcdTA4NjQi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg2NVw3Z1wyXDJcdTA4NjVcdTA4NjZcN3NcMlwy XHUwODY2XHUwODY3XDd4XDJcMlx1MDg2NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODY4 XDdjXDJcMlx1MDg2OFx1MDg2OVw3blwyXDJcdTA4NjlcdTAxOGVcM1wyXDJcMlx1MDg2YQ0KPiAi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg2Ylw3eFwyXDJcdTA4NmJcdTA4NmNcN2NcMlwy XHUwODZjXHUwODZkXDd0XDJcMlx1MDg2ZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTkw XDNcMlwyXDJcdTA4NmVcdTA4NmZcN2tcMlwyXHUwODZmXHUwODcwXDdmXDJcMlx1MDg3MCIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODcxXDdnXDJcMlx1MDg3MVx1MDg3Mlw3c1wyXDJcdTA4 NzJcdTA4NzNcN3hcMlwyXHUwODczIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4NzRcN2Nc MlwyXHUwODc0XHUwODc1XDduXDJcMlx1MDg3NVx1MDE5MlwzXDJcMlwyXHUwODc2IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA4NzdcN2tcMlwyXHUwODc3XHUwODc4XDdmXDJcMlx1MDg3OFx1 MDg3OVw3Z1wyXDJcdTA4NzkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg3YVw3c1wyXDJc dTA4N2FcdTA4N2JcN2tcMlwyXHUwODdiXHUwODdjXDdmXDJcMlx1MDg3YyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMTk0XDNcMlwyXDJcdTA4N2RcdTA4N2VcN2tcMlwyXHUwODdlXHUwODdm XDdmXDJcMlx1MDg3ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODgwXDdnXDJcMlx1MDg4 MFx1MDg4MVw3c1wyXDJcdTA4ODFcdTA4ODJcN3hcMlwyXHUwODgyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA4ODNcN2NcMlwyXHUwODgzXHUwODg0XDduXDJcMlx1MDg4NFx1MDg4NVw3blwy XDJcdTA4ODUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg4Nlw3a1wyXDJcdTA4ODZcdTA4 ODdcN3VcMlwyXHUwODg3XHUwODg4XDd2XDJcMlx1MDg4OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwMTk2XDNcMlwyXDJcdTA4ODlcdTA4OGFcN3NcMlwyXHUwODhhXHUwODhiXDd3XDJcMlx1 MDg4Yg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg4Y1w3Z1wyXDJcdTA4OGNcdTA4 OGRcN3VcMlwyXHUwODhkXHUwODhlXDd2XDJcMlx1MDg4ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwODhmXDdrXDJcMlx1MDg4Zlx1MDg5MFw3cVwyXDJcdTA4OTBcdTA4OTFcN3BcMlwyXHUw ODkxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4OTJcN3RcMlwyXHUwODkyXHUwODkzXDdn XDJcMlx1MDg5M1x1MDg5NFw3aFwyXDJcdTA4OTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDE5OFwzXDJcMlwyXHUwODk1XHUwODk2XDd0XDJcMlx1MDg5Nlx1MDg5N1w3d1wyXDJcdTA4OTcN Cj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4OThcN25cMlwyXHUwODk4XHUwODk5XDdn XDJcMlx1MDg5OVx1MDg5YVw3dFwyXDJcdTA4OWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDg5Ylw3Z1wyXDJcdTA4OWJcdTA4OWNcN2hcMlwyXHUwODljXHUwMTlhXDNcMlwyXDJcdTA4OWQN Cj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4OWVcN3VcMlwyXHUwODllXHUwODlmXDd2 XDJcMlx1MDg5Zlx1MDhhMFw3dFwyXDJcdTA4YTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDhhMVw3a1wyXDJcdTA4YTFcdTA4YTJcN3BcMlwyXHUwOGEyXHUwOGEzXDdpXDJcMlx1MDhhMyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGE0XDd0XDJcMlx1MDhhNFx1MDhhNVw3Z1wyXDJc dTA4YTVcdTA4YTZcN2hcMlwyXHUwOGE2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxOWNc M1wyXDJcMlx1MDhhN1x1MDhhOFw3clwyXDJcdTA4YThcdTA4YTlcN3dcMlwyXHUwOGE5DQo+ICIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGFhXDd1XDJcMlx1MDhhYVx1MDhhYlw3alwyXDJc dTA4YWJcdTA4YWNcN3ZcMlwyXHUwOGFjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4YWRc N2pcMlwyXHUwOGFkXHUwOGFlXDdrXDJcMlx1MDhhZVx1MDhhZlw3dVwyXDJcdTA4YWYiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDE5ZVwzXDJcMlwyXHUwOGIwXHUwOGIxXDd1XDJcMlx1MDhi MVx1MDhiMlw3Z1wyXDJcdTA4Yg0KPiAyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4YjNc N2VcMlwyXHUwOGIzXHUwOGI0XDd3XDJcMlx1MDhiNFx1MDhiNVw3dFwyXDJcdTA4YjUNCj4gIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4YjZcN2tcMlwyXHUwOGI2XHUwOGI3XDd2XDJcMlx1 MDhiN1x1MDhiOFw3e1wyXDJcdTA4YjgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFhMFwz XDJcMlwyXHUwOGI5XHUwOGJhXDdpXDJcMlx1MDhiYVx1MDhiYlw3Z1wyXDJcdTA4YmINCj4gIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4YmNcN3ZcMlwyXHUwOGJjXHUwMWEyXDNcMlwyXDJc dTA4YmRcdTA4YmVcN1ZcMlwyXHUwOGINCj4gZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw OGJmXDdUXDJcMlx1MDhiZlx1MDhjMFw3V1wyXDJcdTA4YzBcdTA4YzFcN0dcMlwyXHUwOGMxIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxYTRcM1wyXDJcMlx1MDhjMlx1MDhjM1w3SFwyXDJc dTA4YzNcdTA4YzRcN0NcMlwyXHUwOGM0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4YzVc N05cMlwyXHUwOGM1XHUwOGM2XDdVXDJcMlx1MDhjNlx1MDhjN1w3R1wyXDJcdTA4YzciKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDFhNlwzXDJcMlwyXHUwOGM4XHUwOGM5XDdRXDJcMlx1MDhj OVx1MDhjYVw3UFwyXDJcdTA4Y2EiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDhjYlw3R1wy XDJcdTA4Y2JcdTAxYThcM1wyXDJcMlx1MDhjY1x1MDhjZFw3UVwyXDJcdTA4Y2QNCj4gIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4Y2VcN1BcMlwyXHUwOGNlXHUwOGNmXDdHXDJcMlx1MDhj Zlx1MDhkMFw3VVwyXDJcdTA4ZDAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFhYVwzXDJc MlwyXHUwOGQxXHUwOGQyXDdcXFwyXDJcdTA4ZDJcdTA4ZDNcN0dcMlwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA4ZDNcdTA4ZDRcN1RcMlwyXHUwOGQ0XHUwOGQ1XDdRXDJcMlx1MDhkNVx1 MDFhY1wzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA4ZDZcdTA4ZDdcN1dcMlwy XHUwOGQ3XHUwOGQ4XDdQXDJcMlx1MDhkOFx1MDhkOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDdGXDJcMlx1MDhkOVx1MDhkYVw3R1wyXDJcdTA4ZGFcdTA4ZGJcN0hcMlwyXHUwOGRiXHUwOGRj DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdLXDJcMlx1MDhkY1x1MDhkZFw3UFwyXDJc dTA4ZGRcdTA4ZGVcN0dcMlwyXHUwOGRlXHUwOGRmDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDdGXDJcMlx1MDhkZlx1MDFhZVwzXDJcMlwyXHUwOGUwXHUwOGUxXDdYXDJcMlx1MDhlMVx1 MDhlMg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3R1wyXDJcdTA4ZTJcdTA4ZTNcN1Rc MlwyXHUwOGUzXHUwOGU0XDdVXDJcMlx1MDhlNFx1MDhlNQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlw3S1wyXDJcdTA4ZTVcdTA4ZTZcN1FcMlwyXHUwOGU2XHUwOGU3XDdQXDJcMlx1MDhl N1x1MDFiMA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOGU4XHUwOGU5 XDduXDJcMlx1MDhlOVx1MDhlYVw3Z1wyXDJcdTA4ZWFcdTA4ZQ0KPiBiIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcN3BcMlwyXHUwOGViXHUwOGVjXDdpXDJcMlx1MDhlY1x1MDhlZFw3dlwyXDJc dTA4ZWRcdTA4ZWUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3alwyXDJcdTA4ZWVcdTAxYjJc M1wyXDJcMlx1MDhlZlx1MDhmMFw3Q1wyXDJcdTA4ZjBcdTA4ZjEiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlw3UFwyXDJcdTA4ZjFcdTA4ZjJcN0ZcMlwyXHUwOGYyXHUwMWI0XDNcMlwyXDJcdTA4 ZjNcdTA4ZjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3UVwyXDJcdTA4ZjRcdTA4ZjVcN1Rc MlwyXHUwOGY1XHUwMWI2XDNcMlwyXDJcdTA4ZjZcdTA4ZjciKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlw3UFwyXDJcdTA4ZjdcdTA4ZjhcN1FcMlwyXHUwOGY4XHUwOGY5XDdWXDJcMlx1MDhmOVx1 MDFiOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4ZmFcdTA4ZmJcN3VcMlwy XHUwOGZiXHUwOGZjXDdnXDJcMlx1MDhmY1x1MDhmZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDd2XDJcMlx1MDhmZFx1MDFiYVwzXDJcMlwyXHUwOGZlXHUwOGZmXDdcdTAwODBcMlwyXHUwOGZm IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxYmNcM1wyXDJcMlx1MDkwMFx1MDkwMVw3ZFwy XDJcdTA5MDFcdTA5MDJcN3FcMlwyXHUwOTAyDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwOTAzXDdxXDJcMlx1MDkwM1x1MDkwNFw3blwyXDJcdTA5MDRcdTA5MDVcN3hcMlwyXHUwOTA1 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5MDZcN2NcMlwyXHUwOTA2XHUwOTA3XDduXDJc Mlx1MDkwN1x1MDFiZVwzXDJcMlwyXHUwOTA4DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwOTA5XDd1XDJcMlx1MDkwOVx1MDkwYVw3dlwyXDJcdTA5MGFcdTA5MGJcN3RcMlwyXHUwOTBi IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5MGNcN2tcMlwyXHUwOTBjXHUwOTBkXDdwXDJc Mlx1MDkwZFx1MDkwZVw3aVwyXDJcdTA5MGUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDkw Zlw3eFwyXDJcdTA5MGZcdTA5MTBcN2NcMlwyXHUwOTEwXHUwOTExXDduXDJcMlx1MDkxMSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWMwXDNcMlwyXDJcdTA5MTJcdTA5MTNcN3dcMlwyXHUw OTEzXHUwOTE0XDdwXDJcMlx1MDkxNA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDkx NVw3a1wyXDJcdTA5MTVcdTA5MTZcN3BcMlwyXHUwOTE2XHUwOTE3XDd2XDJcMlx1MDkxNyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTE4XDd4XDJcMlx1MDkxOFx1MDkxOVw3Y1wyXDJcdTA5 MTlcdTA5MWFcN25cMlwyXHUwOTFhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxYzJcM1wy XDJcMlx1MDkxYlx1MDkxY1w3dlwyXDJcdTA5MWNcdTA5MWRcN3FcMlwyXHUwOTFkDQo+ICIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTFlXDd3XDJcMlx1MDkxZVx1MDkxZlw3clwyXDJcdTA5 MWZcdTA5MjBcN3JcMlwyXHUwOTIwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5MjFcN2dc MlwyXHUwOTIxXHUwOTIyXDd0XDJcMlx1MDkyMlx1MDFjNFwzXDJcMlwyXHUwOTIzIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA5MjRcN3ZcMlwyXHUwOTI0XHUwOTI1XDdxXDJcMlx1MDkyNVx1 MDkyNlw3blwyXDJcdTA5MjYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDkyN1w3cVwyXDJc dTA5MjdcdTA5MjhcN3lcMlwyXHUwOTI4XHUwOTI5XDdnXDJcMlx1MDkyOSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwOTJhXDd0XDJcMlx1MDkyYVx1MDFjNlwzXDJcMlwyXHUwOTJiXHUwOTJj XDdvXDJcMlx1MDkyYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTJkXDdjXDJcMlx1MDky ZFx1MDkyZVw3dlwyXDJcdTA5MmVcdTA5MmZcN2VcMlwyXHUwOTJmIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA5MzBcN2pcMlwyXHUwOTMwXHUwMWM4XDNcMlwyXDJcdTA5MzFcdTA5MzJcN29c MlwyXHUwOTMyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5MzNcN2NcMlwyXHUwOTMzXHUw OTM0XDd2XDJcMlx1MDkzNFx1MDkzNVw3ZVwyXDJcdTA5MzUiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcdTA5MzZcN2pcMlwyXHUwOTM2XHUwOTM3XDdcNjRcMlwyXHUwOTM3XHUwMWNhXDNc MlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDkzOFx1MDkzOVw3ZVwyXDJcdTA5Mzlc dTA5M2FcN2NcMlwyXHUwOTNhXHUwOTNiXDd2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwy XHUwOTNiXHUwOTNjXDdnXDJcMlx1MDkzY1x1MDkzZFw3cFwyXDJcdTA5M2RcdTA5M2UiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlw3Y1wyXDJcdTA5M2VcdTA5M2ZcN3ZcMlwyXHUwOTNmXHUwOTQw XDdnXDJcMlx1MDk0MFx1MDFjYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5 NDFcdTA5NDJcN3NcMlwyXHUwOTQyXHUwOTQzXDd3XDJcMlx1MDk0M1x1MDk0NA0KPiAiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlw3Z1wyXDJcdTA5NDRcdTA5NDVcN3VcMlwyXHUwOTQ1XHUwOTQ2 XDd2XDJcMlx1MDk0Nlx1MDk0NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdrXDJcMlx1MDk0 N1x1MDk0OFw3cVwyXDJcdTA5NDhcdTA5NDlcN3BcMlwyXHUwOTQ5XHUwOTRhIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcN3RcMlwyXHUwOTRhXHUwOTRiXDdnXDJcMlx1MDk0Ylx1MDk0Y1w3aFwy XDJcdTA5NGNcdTA5NGQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3eFwyXDJcdTA5NGRcdTA5 NGVcN2NcMlwyXHUwOTRlXHUwOTRmXDduXDJcMlx1MDk0Zlx1MDFjZSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTA5NTBcdTA5NTFcN3VcMlwyXHUwOTUxXHUwOTUyXDd2XDJcMlx1 MDk1Mlx1MDk1Mw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3dFwyXDJcdTA5NTNcdTA5 NTRcN2tcMlwyXHUwOTU0XHUwOTU1XDdwXDJcMlx1MDk1NVx1MDk1NiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDdpXDJcMlx1MDk1Nlx1MDk1N1w3dFwyXDJcdTA5NTdcdTA5NThcN2dcMlwyXHUw OTU4XHUwOTU5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN2hcMlwyXHUwOTU5XHUwOTVhXDd4 XDJcMlx1MDk1YVx1MDk1Ylw3Y1wyXDJcdTA5NWJcdTA5NWMiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlw3blwyXDJcdTA5NWNcdTAxZDBcM1wyXDJcMlx1MDk1ZFx1MDk1ZVw3b1wyXDJcdTA5NWVc dTA5NWYNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN2NcMlwyXHUwOTVmXHUwOTYwXDdy XDJcMlx1MDk2MFx1MDFkMlwzXDJcMlwyXHUwOTYxXHUwOTYyIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcN3RcMlwyXHUwOTYyXHUwOTYzXDdnXDJcMlx1MDk2M1x1MDk2NFw3aFwyXDJcdTA5NjRc dTA5NjUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3dFwyXDJcdTA5NjVcdTA5NjZcN2dcMlwy XHUwOTY2XHUwOTY3XDd1XDJcMlx1MDk2N1x1MDk2OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDdqXDJcMlx1MDk2OFx1MDk2OVw3aVwyXDJcdTA5NjlcdTA5NmFcN3dcMlwyXHUwOTZhXHUwOTZi IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN2tcMlwyXHUwOTZiXHUwOTZjXDdmXDJcMlx1MDk2 Y1x1MDFkNFwzXDJcMlwyXHUwOTZkXHUwOTZlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1Vc MlwyXHUwOTZlXHUwOTZmXDdWXDJcMlx1MDk2Zlx1MDk3MFw3VFwyXDJcdTA5NzBcdTA5NzEiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlw3S1wyXDJcdTA5NzFcdTA5NzJcN1BcMlwyXHUwOTcyXHUw OTczXDdJXDJcMlx1MDk3M1x1MDk3NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdhXDJcMlx1 MDk3NFx1MDk3NVw3VlwyXDJcdTA5NzVcdTA5NzZcN1FcMlwyXHUwOTc2XHUwOTc3IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcN01cMlwyXHUwOTc3XHUwOTc4XDdHXDJcMlx1MDk3OFx1MDk3OVw3 UFwyXDJcdTA5NzlcdTAxZDYNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDk3YVx1MDk3Ylw3UVwyXDJcdTA5N2JcdTA5N2NcN1JcMlwyXHUwOTdjXHUwOTdkDQo+ICIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdWXDJcMlx1MDk3ZFx1MDk3ZVw3S1wyXDJcdTA5N2VcdTA5 N2ZcN1FcMlwyXHUwOTdmXHUwOTgwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1BcMlwyXHUw OTgwXHUwOTgxXDdhXDJcMlx1MDk4MVx1MDk4Mlw3RlwyXDJcdTA5ODJcdTA5ODMiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3R1wyXDJcdTA5ODNcdTA5ODRcN0hcMlwyXHUwOTg0XHUwOTg1XDdD XDJcMlx1MDk4NVx1MDk4NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdXXDJcMlx1MDk4Nlx1 MDk4N1w3TlwyXDJcdTA5ODdcdTA5ODhcN1ZcMlwyXHUwOTg4XHUwMWQ4DQo+ICIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5ODlcdTA5OGFcN1FcMlwyXHUwOThhXHUwOThiXDdS XDJcMlx1MDk4Ylx1MDk4Yw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3VlwyXDJcdTA5 OGNcdTA5OGRcN0tcMlwyXHUwOThkXHUwOThlXDdRXDJcMlx1MDk4ZVx1MDk4Zg0KPiAiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlw3UFwyXDJcdTA5OGZcdTA5OTBcN2FcMlwyXHUwOTkwXHUwOTkx XDdGXDJcMlx1MDk5MVx1MDk5MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdHXDJcMlx1MDk5 Mlx1MDk5M1w3SFwyXDJcdTA5OTNcdTA5OTRcN0NcMlwyXHUwOTk0XHUwOTk1IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcN1dcMlwyXHUwOTk1XHUwOTk2XDdOXDJcMlx1MDk5Nlx1MDk5N1w3Vlwy XDJcdTA5OTdcdTA5OTgNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN2FcMlwyXHUwOTk4 XHUwOTk5XDdPXDJcMlx1MDk5OVx1MDk5YVw3SFwyXDJcdTA5OWFcdTA5OWIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlw3SVwyXDJcdTA5OWJcdTAxZGFcM1wyXDJcMlx1MDk5Y1x1MDk5ZFw3UFwy XDJcdTA5OWRcdTA5OWUNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1dcMlwyXHUwOTll XHUwOTlmXDdPXDJcMlx1MDk5Zlx1MDlhMFw3R1wyXDJcdTA5YTBcdTA5YTENCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcN1RcMlwyXHUwOWExXHUwOWEyXDdLXDJcMlx1MDlhMlx1MDlhM1w3 RVwyXDJcdTA5YTNcdTA5YTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3YVwyXDJcdTA5YTRc dTA5YTVcN1VcMlwyXHUwOWE1XHUwOWE2XDdLXDJcMlx1MDlhNlx1MDlhNyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDdcXFwyXDJcdTA5YTdcdTA5YThcN0dcMlwyXHUwOWE4XHUwOWE5XDdhXDJc Mlx1MDlhOVx1MDlhYQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XDYzXDJcMlx1MDlh YVx1MDFkY1wzXDJcMlwyXHUwOWFiXHUwOWFjXDdQXDJcMlx1MDlhYyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwOWFkXDdXXDJcMlx1MDlhZFx1MDlhZVw3T1wyXDJcdTA5YWVcdTA5YWZcN0dc MlwyXHUwOWFmDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWIwXDdUXDJcMlx1MDli MFx1MDliMVw3S1wyXDJcdTA5YjFcdTA5YjJcN0VcMlwyXHUwOWIyDQo+ICIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwOWIzXDdhXDJcMlx1MDliM1x1MDliNFw3VVwyXDJcdTA5YjRcdTA5YjVc N0tcMlwyXHUwOWI1DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWI2XDdcXFwyXDJc dTA5YjZcdTA5YjdcN0dcMlwyXHUwOWI3XHUwOWI4XDdhXDJcMlx1MDliDQo+IDgiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDliOVw3XDY0XDJcMlx1MDliOVx1MDFkZVwzXDJcMlwyXHUwOWJh XHUwOWJiXDdQXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWJiXHUwOWJjXDdXXDJc Mlx1MDliY1x1MDliZFw3T1wyXDJcdTA5YmRcdTA5YmVcN0ciKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwyXDJcdTA5YmVcdTA5YmZcN1RcMlwyXHUwOWJmXHUwOWMwXDdLXDJcMlx1MDljMFx1MDlj MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdFXDJcMlx1MDljMVx1MDljMlw3YVwyXDJcdTA5 YzJcdTA5YzNcN1VcMlwyXHUwOWMzXHUwOWM0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN0tc MlwyXHUwOWM0XHUwOWM1XDdcXFwyXDJcdTA5YzVcdTA5YzZcN0dcMlwyXHUwOWM2XHUwOWM3IikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdhXDJcMlx1MDljN1x1MDljOFw3XDY2XDJcMlx1 MDljOFx1MDFlMFwzXDJcMlwyXHUwOWM5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5Y2Fc N1BcMlwyXHUwOWNhXHUwOWNiXDdXXDJcMlx1MDljYlx1MDljY1w3T1wyXDJcdTA5Y2MiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDljZFw3R1wyXDJcdTA5Y2RcdTA5Y2VcN1RcMlwyXHUwOWNl XHUwOWNmXDdLXDJcMlx1MDljZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWQwXDdFXDJc Mlx1MDlkMFx1MDlkMVw3YVwyXDJcdTA5ZDFcdTA5ZDJcN1VcMlwyXHUwOWQyDQo+ICIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwOWQzXDdLXDJcMlx1MDlkM1x1MDlkNFw3XFxcMlwyXHUwOWQ0 XHUwOWQ1XDdHXDJcMlx1MDlkDQo+IDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDlkNlw3 YVwyXDJcdTA5ZDZcdTA5ZDdcNzpcMlwyXHUwOWQ3XHUwMWUyXDNcMlwyXDJcdTA5ZDgNCj4gIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZDlcN0ZcMlwyXHUwOWQ5XHUwOWRhXDdLXDJcMlx1 MDlkYVx1MDlkYlw3VVwyXDJcdTA5ZGINCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5 ZGNcN1JcMlwyXHUwOWRjXHUwOWRkXDdOXDJcMlx1MDlkZFx1MDlkZVw3Q1wyXDJcdTA5ZA0KPiBl IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZGZcN1tcMlwyXHUwOWRmXHUwOWUwXDdhXDJc Mlx1MDllMFx1MDllMVw3S1wyXDJcdTA5ZTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDll Mlw3UFwyXDJcdTA5ZTJcdTA5ZTNcN1ZcMlwyXHUwOWUzXHUwOWU0XDdhXDJcMlx1MDllNA0KPiAi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDllNVw3RlwyXDJcdTA5ZTVcdTA5ZTZcN0dcMlwy XHUwOWU2XHUwOWU3XDdFXDJcMlx1MDllNw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDFlNFwzXDJcMlwyXHUwOWU4XHUwOWU5XDdGXDJcMlx1MDllOVx1MDllYVw3S1wyXDJcdTA5ZQ0K PiBhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZWJcN1VcMlwyXHUwOWViXHUwOWVjXDdS XDJcMlx1MDllY1x1MDllZFw3TlwyXDJcdTA5ZQ0KPiBkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA5ZWVcN0NcMlwyXHUwOWVlXHUwOWVmXDdbXDJcMlx1MDllZlx1MDlmMFw3YVwyXDJcdTA5 ZjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDlmMVw3V1wyXDJcdTA5ZjFcdTA5ZjJcN0tc MlwyXHUwOWYyXHUwOWYzXDdQXDJcMlx1MDlmMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw OWY0XDdWXDJcMlx1MDlmNFx1MDlmNVw3YVwyXDJcdTA5ZjVcdTA5ZjZcN0ZcMlwyXHUwOWY2IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZjdcN0dcMlwyXHUwOWY3XHUwOWY4XDdFXDJcMlx1 MDlmOFx1MDFlNlwzXDJcMlwyXHUwOWY5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZmFc N0ZcMlwyXHUwOWZhXHUwOWZiXDdLXDJcMlx1MDlmYlx1MDlmY1w3VVwyXDJcdTA5ZmMiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDlmZFw3UlwyXDJcdTA5ZmRcdTA5ZmVcN05cMlwyXHUwOWZl XHUwOWZmXDdDXDJcMlx1MDlmZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTAwXDdbXDJc Mlx1MGEwMFx1MGEwMVw3YVwyXDJcdTBhMDFcdTBhMDJcN1dcMlwyXHUwYTAyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTBhMDNcN0tcMlwyXHUwYTAzXHUwYTA0XDdQXDJcMlx1MGEwNFx1MGEw NVw3VlwyXDJcdTBhMDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGEwNlw3YVwyXDJcdTBh MDZcdTBhMDdcN0pcMlwyXHUwYTA3XHUwYTA4XDdHXDJcMlx1MGEwOCIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwYTA5XDdaXDJcMlx1MGEwOVx1MDFlOFwzXDJcMlwyXHUwYTBhXHUwYTBiXDdL XDJcMlx1MGEwYg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGEwY1w3UFwyXDJcdTBh MGNcdTBhMGRcN1VcMlwyXHUwYTBkXHUwYTBlXDdHXDJcMlx1MGEwZQ0KPiAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MGEwZlw3UFwyXDJcdTBhMGZcdTBhMTBcN1VcMlwyXHUwYTEwXHUwYTEx XDdLXDJcMlx1MGExMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTEyXDdWXDJcMlx1MGEx Mlx1MGExM1w3S1wyXDJcdTBhMTNcdTBhMTRcN1hcMlwyXHUwYTE0IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTBhMTVcN0dcMlwyXHUwYTE1XHUwMWVhXDNcMlwyXDJcdTBhMTZcdTBhMTdcN1Vc MlwyXHUwYTENCj4gNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTE4XDdHXDJcMlx1MGEx OFx1MGExOVw3UFwyXDJcdTBhMTlcdTBhMWFcN1VcMlwyXHUwYTFhDQo+ICIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwYTFiXDdLXDJcMlx1MGExYlx1MGExY1w3VlwyXDJcdTBhMWNcdTBhMWRc N0tcMlwyXHUwYTFkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMWVcN1hcMlwyXHUwYTFl XHUwYTFmXDdHXDJcMlx1MGExZlx1MDFlY1wzXDJcMlwyXHUwYTIwDQo+ICIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwYTIxXDdOXDJcMlx1MGEyMVx1MGEyMlw3Q1wyXDJcdTBhMjJcdTBhMjNc N1VcMlwyXHUwYTIzDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTI0XDdWXDJcMlx1 MGEyNFx1MGEyNVw3YVwyXDJcdTBhMjVcdTBhMjZcN1BcMlwyXHUwYTI2IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTBhMjdcN1FcMlwyXHUwYTI3XHUwYTI4XDdQXDJcMlx1MGEyOFx1MGEyOVw3 YVwyXDJcdTBhMjkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGEyYVw3T1wyXDJcdTBhMmFc dTBhMmJcN0NcMlwyXHUwYTJiXHUwYTJjXDdWXDJcMlx1MGEyYyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwYTJkXDdFXDJcMlx1MGEyZFx1MGEyZVw3SlwyXDJcdTBhMmVcdTAxZWVcM1wyXDJc Mlx1MGEyZg0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGEzMFw3SFwyXDJcdTBhMzBc dTBhMzFcN0tcMlwyXHUwYTMxXHUwYTMyXDdUXDJcMlx1MGEzMiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwYTMzXDdVXDJcMlx1MGEzM1x1MGEzNFw3VlwyXDJcdTBhMzRcdTBhMzVcN2FcMlwy XHUwYTM1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMzZcN1BcMlwyXHUwYTM2XHUwYTM3 XDdRXDJcMlx1MGEzN1x1MGEzOFw3UFwyXDJcdTBhMzgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MGEzOVw3YVwyXDJcdTBhMzlcdTBhM2FcN09cMlwyXHUwYTNhXHUwYTNiXDdDXDJcMlx1MGEz YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTNjXDdWXDJcMlx1MGEzY1x1MGEzZFw3RVwy XDJcdTBhM2RcdTBhM2VcN0pcMlwyXHUwYTNlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XHUwMWYwXDNcMlwyXDJcdTBhM2ZcdTBhNDBcN1w2MlwyXDJcdTBhNDBcdTBhNDFcN3pcMlwyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhNDFcdTBhNDNcM1wyXDJcMlx1MGE0Mlx1MGE0NFx0 XDJcMlwyXHUwYTQzXHUwYTQyXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MGE0 NFx1MGE0NVwzXDJcMlwyXHUwYTQ1XHUwYTQzXDNcMlwyXDJcdTBhNDVcdTBhNDYiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTQ2XHUwYTRkXDNcMlwyXDJcdTBhNDdcdTBhNDlc dFwzXDJcMlx1MGE0OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTQ3XDNcMlwyXDJcdTBh NDlcdTBhNGFcM1wyXDJcMlx1MGE0YVx1MGE0OFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTBhNGFcdTBhNGJcM1wyXDJcMlx1MGE0Ylx1MGE0ZFwzXDJcMlwyXHUwYTRjXHUwYTNm XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MGE0Y1x1MGE0OFwzXDJcMlwyXHUw YTRkXHUwMWYyXDNcMlwyXDJcdTBhNGVcdTBhNTIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcdFw0XDJcMlx1MGE0Zlx1MGE1MVx0XDVcMlwyXHUwYTUwXHUwYTRmXDNcMlwyXDJcdTBhNTEi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE1NFwzXDJcMlwyXHUwYTUyXHUwYTUwXDNcMlwy XDJcdTBhNTJcdTBhNTNcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTUzXHUw MWY0XDNcMlwyXDJcdTBhNTRcdTBhNTJcM1wyXDJcMlx1MGE1NVx1MGE1N1w3IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCIlXDJcMlx1MGE1Nlx1MGE1OFw1XHUwMWZiXHUwMGZlXDJcdTBhNTdcdTBh NTZcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTU3XHUwYTU4XDNcMlwyXDJc dTBhNThcdTBhNTlcM1wyXDJcMlx1MGE1OVx1MGE1YVw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJmXDJcMlx1MGE1YVx1MGE1Ylw3Z1wyXDJcdTBhNWJcdTBhNWNcN2hcMlwyXHUwYTVjXHUwYTVk IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN2tcMlwyXHUwYTVkXHUwYTVlXDdwXDJcMlx1MGE1 ZVx1MGE1Zlw3Z1wyXDJcdTBhNWZcdTBhNjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXHUwYTYwXHUwYTYyXG5cNlwyXDJcdTBhNjFcdTBhNjBcM1wyXDJcMlx1MGE2MiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwYTY1XDNcMlwyXDJcdTBhNjNcdTBhNjFcM1wyXDJcMlx1MGE2 M1x1MGE2NFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhNjRcdTBhNjZcM1wy XDJcMlx1MGE2NVx1MGE2M1wzXDJcMlwyXHUwYTY2XHUwYTY3XGIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDBmYlwyXDJcdTBhNjdcdTAxZjZcM1wyXDJcMlx1MGE2OFx1MGE2YVw3JVwyXDJc dTBhNjkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE2Ylw1XHUwMWZiXHUwMGZlXDJcdTBh NmFcdTBhNjlcM1wyXDJcMlx1MGE2YVx1MGE2YiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwYTZiXHUwYTZjXDNcMlwyXDJcdTBhNmNcdTBhNmRcN25cMlwyXHUwYTZkIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhNmVcN2tcMlwyXHUwYTZlXHUwYTZmXDdwXDJcMlx1 MGE2Zlx1MGE3MFw3Z1wyXDJcdTBhNzAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE3NFwz XDJcMlwyXHUwYTcxXHUwYTczXG5cNlwyXDJcdTBhNzJcdTBhNzFcM1wyXDJcMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwYTczXHUwYTc2XDNcMlwyXDJcdTBhNzRcdTBhNzJcM1wyXDJcMlx1 MGE3NFx1MGE3NVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTBhNzVcdTBhNzdc M1wyXDJcMlx1MGE3Nlx1MGE3NFwzXDJcMlwyXHUwYTc3XHUwYTc4IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcYlx1MDBmY1wyXDJcdTBhNzhcdTAxZjhcM1wyXDJcMlx1MGE3OVx1MGE3Ylw3JVwy XDJcdTBhN2EiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE3Y1w1XHUwMWZiXHUwMGZlXDJc dTBhN2JcdTBhN2FcM1wyXDJcMlx1MGE3Ylx1MGE3YyIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlwzXDJcMlwyXHUwYTdjXHUwYTdkXDNcMlwyXDJcdTBhN2RcdTBhN2VcN2tcMlwyXHUwYTdl IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhN2ZcN3BcMlwyXHUwYTdmXHUwYTgwXDdlXDJc Mlx1MGE4MFx1MGE4MVw3blwyXDJcdTBhODEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE4 Mlw3d1wyXDJcdTBhODJcdTBhODNcN2ZcMlwyXHUwYTgzXHUwYTg0XDdnXDJcMlx1MGE4NCIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTg4XDNcMlwyXDJcdTBhODVcdTBhODdcblw2XDJcMlx1 MGE4Nlx1MGE4NVwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhODdcdTBhOGFc M1wyXDJcMlx1MGE4OFx1MGE4NlwzXDJcMlwyXHUwYTg4XHUwYTg5XDMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXDJcMlx1MGE4OVx1MGE4YlwzXDJcMlwyXHUwYThhXHUwYTg4XDNcMlwyXDJc dTBhOGJcdTBhOGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxiXHUwMGZkXDJcMlx1MGE4Y1x1 MDFmYVwzXDJcMlwyXHUwYThkXHUwYThmXHRcN1wyXDJcdTBhOGUiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MGE4ZFwzXDJcMlwyXHUwYThmXHUwYTkwXDNcMlwyXDJcdTBhOTBcdTBhOGVcM1wy XDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTkwXHUwYTkxXDNcMlwyXDJcdTBhOTFc dTBhOTJcM1wyXDJcMlx1MGE5Mlx1MGE5M1xiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAw ZmVcMlwyXHUwYTkzXHUwMWZjXDNcMlwyXDJcdTBhOTRcdTBhOTZcN1wxN1wyXDJcdTBhOTUiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTBhOTdcN1xmXDJcMlx1MGE5Nlx1MGE5NVwzXDJc MlwyXHUwYTk2XHUwYTk3XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE5N1x1 MGE5YVwzXDJcMlwyXHUwYTk4XHUwYTlhXDdcZlwyXDJcdTBhOTlcdTBhOTRcMyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTk5XHUwYTk4XDNcMlwyXDJcdTBhOWFcdTBhOWJcM1wy XDJcMlx1MGE5Ylx1MGE5YyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlxiXHUwMGZmXDJc Mlx1MGE5Y1x1MDFmZVwzXDJcMlwyXHUwYTlkXHUwYTllXDdcNjFcMlwyIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXHUwYTllXHUwYTlmXDdcNjFcMlwyXHUwYTlmXHUwYWEzXDNcMlwyXDJc dTBhYTBcdTBhYTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxuXGJcMlwyXHUwYWExXHUwYWEw XDNcMlwyXDJcdTBhYTJcdTBhYTVcM1wyXDJcMlx1MGFhMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwYWExXDNcMlwyXDJcdTBhYTNcdTBhYTRcM1wyXDJcMlx1MGFhNFx1MGFhNlwzXDJcMlwy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhYTVcdTBhYTNcM1wyXDJcMlx1MGFhNlx1MGFh N1xiXHUwMTAwXDJcMlx1MGFhN1x1MDIwMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwy XDJcdTBhYThcdTBhYTlcN2dcMlwyXHUwYWE5XHUwYWFhXDd6XDJcMlx1MGFhYVx1MGFhYiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDd2XDJcMlx1MGFhYlx1MGFhY1w3Z1wyXDJcdTBhYWNcdTBh YWRcN3RcMlwyXHUwYWFkXHUwYWFlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdwXDJc Mlx1MGFhZVx1MGFiMlwzXDJcMlwyXHUwYWFmXHUwYWIxXG5cNlwyXDJcdTBhYjAiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MGFhZlwzXDJcMlwyXHUwYWIxXHUwYWI0XDNcMlwyXDJcdTBhYjJc dTBhYjBcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWIyXHUwYWIzXDNcMlwy XDJcdTBhYjNcdTBhYjVcM1wyXDJcMlx1MGFiNFx1MGFiMlwzIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlwyXHUwYWI1XHUwYWI2XGJcdTAxMDFcMlwyXHUwYWI2XHUwMjAyXDNcMlwy XDJcMjIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYTQ1XHUwYTRhXHUwYTRjXHUwYTUy XHUwYTU3XHUwYTYzXHUwYTZhXHUwYTc0XHUwYTdiIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwYTg4XHUwYTkwXHUwYTk2XHUwYTk5XHUwYWEzXHUwYWIyXDNcYlwyXDIiKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGJ1Zi5nZXR2YWx1ZSgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgVmZyU3ludGF4TGV4ZXIoTGV4ZXIpOg0KPiANCj4gKw0KPiANCj4gKyAgICBhdG4gPSBB VE5EZXNlcmlhbGl6ZXIoKS5kZXNlcmlhbGl6ZShzZXJpYWxpemVkQVROKCkpDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlY2lzaW9uc1RvREZBID0gWyBERkEoZHMsIGkpIGZvciBpLCBkcyBpbiBlbnVt ZXJhdGUoYXRuLmRlY2lzaW9uVG9TdGF0ZSkgXQ0KPiANCj4gKw0KPiANCj4gKyAgICBUX18wID0g MQ0KPiANCj4gKyAgICBUX18xID0gMg0KPiANCj4gKyAgICBUX18yID0gMw0KPiANCj4gKyAgICBU X18zID0gNA0KPiANCj4gKyAgICBUX180ID0gNQ0KPiANCj4gKyAgICBUX181ID0gNg0KPiANCj4g KyAgICBUX182ID0gNw0KPiANCj4gKyAgICBUX183ID0gOA0KPiANCj4gKyAgICBUX184ID0gOQ0K PiANCj4gKyAgICBUX185ID0gMTANCj4gDQo+ICsgICAgVF9fMTAgPSAxMQ0KPiANCj4gKyAgICBU X18xMSA9IDEyDQo+IA0KPiArICAgIFRfXzEyID0gMTMNCj4gDQo+ICsgICAgVF9fMTMgPSAxNA0K PiANCj4gKyAgICBUX18xNCA9IDE1DQo+IA0KPiArICAgIFRfXzE1ID0gMTYNCj4gDQo+ICsgICAg RGVmaW5lID0gMTcNCj4gDQo+ICsgICAgSW5jbHVkZSA9IDE4DQo+IA0KPiArICAgIEZvcm1Qa2dU eXBlID0gMTkNCj4gDQo+ICsgICAgT3BlbkJyYWNlID0gMjANCj4gDQo+ICsgICAgQ2xvc2VCcmFj ZSA9IDIxDQo+IA0KPiArICAgIE9wZW5QYXJlbiA9IDIyDQo+IA0KPiArICAgIENsb3NlUGFyZW4g PSAyMw0KPiANCj4gKyAgICBPcGVuQnJhY2tldCA9IDI0DQo+IA0KPiArICAgIENsb3NlQnJhY2tl dCA9IDI1DQo+IA0KPiArICAgIERvdCA9IDI2DQo+IA0KPiArICAgIE5lZ2F0aXZlID0gMjcNCj4g DQo+ICsgICAgQ29sb24gPSAyOA0KPiANCj4gKyAgICBTbGFzaCA9IDI5DQo+IA0KPiArICAgIFNl bWljb2xvbiA9IDMwDQo+IA0KPiArICAgIENvbW1hID0gMzENCj4gDQo+ICsgICAgRXF1YWwgPSAz Mg0KPiANCj4gKyAgICBOb3RFcXVhbCA9IDMzDQo+IA0KPiArICAgIExlc3NFcXVhbCA9IDM0DQo+ IA0KPiArICAgIExlc3MgPSAzNQ0KPiANCj4gKyAgICBHcmVhdGVyRXF1YWwgPSAzNg0KPiANCj4g KyAgICBHcmVhdGVyID0gMzcNCj4gDQo+ICsgICAgQml0V2lzZU9yID0gMzgNCj4gDQo+ICsgICAg Qml0V2lzZUFuZCA9IDM5DQo+IA0KPiArICAgIERldmljZVBhdGggPSA0MA0KPiANCj4gKyAgICBG b3JtU2V0ID0gNDENCj4gDQo+ICsgICAgRm9ybVNldElkID0gNDINCj4gDQo+ICsgICAgRW5kRm9y bVNldCA9IDQzDQo+IA0KPiArICAgIFRpdGxlID0gNDQNCj4gDQo+ICsgICAgRm9ybUlkID0gNDUN Cj4gDQo+ICsgICAgT25lT2YgPSA0Ng0KPiANCj4gKyAgICBFbmRPbmVPZiA9IDQ3DQo+IA0KPiAr ICAgIFByb21wdCA9IDQ4DQo+IA0KPiArICAgIE9yZGVyZWRMaXN0ID0gNDkNCj4gDQo+ICsgICAg TWF4Q29udGFpbmVycyA9IDUwDQo+IA0KPiArICAgIEVuZExpc3QgPSA1MQ0KPiANCj4gKyAgICBF bmRGb3JtID0gNTINCj4gDQo+ICsgICAgRm9ybSA9IDUzDQo+IA0KPiArICAgIEZvcm1NYXAgPSA1 NA0KPiANCj4gKyAgICBNYXBUaXRsZSA9IDU1DQo+IA0KPiArICAgIE1hcEd1aWQgPSA1Ng0KPiAN Cj4gKyAgICBTdWJ0aXRsZSA9IDU3DQo+IA0KPiArICAgIEVuZFN1YnRpdGxlID0gNTgNCj4gDQo+ ICsgICAgSGVscCA9IDU5DQo+IA0KPiArICAgIFRleHQgPSA2MA0KPiANCj4gKyAgICBPcHRpb24g PSA2MQ0KPiANCj4gKyAgICBGTEFHUyA9IDYyDQo+IA0KPiArICAgIERhdGUgPSA2Mw0KPiANCj4g KyAgICBFbmREYXRlID0gNjQNCj4gDQo+ICsgICAgWWVhciA9IDY1DQo+IA0KPiArICAgIE1vbnRo ID0gNjYNCj4gDQo+ICsgICAgRGF5ID0gNjcNCj4gDQo+ICsgICAgVGltZSA9IDY4DQo+IA0KPiAr ICAgIEVuZFRpbWUgPSA2OQ0KPiANCj4gKyAgICBIb3VyID0gNzANCj4gDQo+ICsgICAgTWludXRl ID0gNzENCj4gDQo+ICsgICAgU2Vjb25kID0gNzINCj4gDQo+ICsgICAgR3JheU91dElmID0gNzMN Cj4gDQo+ICsgICAgTGFiZWwgPSA3NA0KPiANCj4gKyAgICBUaW1lb3V0ID0gNzUNCj4gDQo+ICsg ICAgSW52ZW50b3J5ID0gNzYNCj4gDQo+ICsgICAgTm9uTnZEYXRhTWFwID0gNzcNCj4gDQo+ICsg ICAgU3RydWN0ID0gNzgNCj4gDQo+ICsgICAgVW5pb24gPSA3OQ0KPiANCj4gKyAgICBCb29sZWFu ID0gODANCj4gDQo+ICsgICAgVWludDY0ID0gODENCj4gDQo+ICsgICAgVWludDMyID0gODINCj4g DQo+ICsgICAgVWludDE2ID0gODMNCj4gDQo+ICsgICAgVWludDggPSA4NA0KPiANCj4gKyAgICBF RklfU1RSSU5HX0lEID0gODUNCj4gDQo+ICsgICAgRUZJX0hJSV9EQVRFID0gODYNCj4gDQo+ICsg ICAgRUZJX0hJSV9USU1FID0gODcNCj4gDQo+ICsgICAgRUZJX0hJSV9SRUYgPSA4OA0KPiANCj4g KyAgICBVdWlkID0gODkNCj4gDQo+ICsgICAgQ2hlY2tCb3ggPSA5MA0KPiANCj4gKyAgICBFbmRD aGVja0JveCA9IDkxDQo+IA0KPiArICAgIE51bWVyaWMgPSA5Mg0KPiANCj4gKyAgICBFbmROdW1l cmljID0gOTMNCj4gDQo+ICsgICAgTWluaW11bSA9IDk0DQo+IA0KPiArICAgIE1heGltdW0gPSA5 NQ0KPiANCj4gKyAgICBTdGVwID0gOTYNCj4gDQo+ICsgICAgRGVmYXVsdCA9IDk3DQo+IA0KPiAr ICAgIFBhc3N3b3JkID0gOTgNCj4gDQo+ICsgICAgRW5kUGFzc3dvcmQgPSA5OQ0KPiANCj4gKyAg ICBTdHJpbmcgPSAxMDANCj4gDQo+ICsgICAgRW5kU3RyaW5nID0gMTAxDQo+IA0KPiArICAgIE1p blNpemUgPSAxMDINCj4gDQo+ICsgICAgTWF4U2l6ZSA9IDEwMw0KPiANCj4gKyAgICBFbmNvZGlu ZyA9IDEwNA0KPiANCj4gKyAgICBTdXBwcmVzc0lmID0gMTA1DQo+IA0KPiArICAgIERpc2FibGVJ ZiA9IDEwNg0KPiANCj4gKyAgICBIaWRkZW4gPSAxMDcNCj4gDQo+ICsgICAgR290byA9IDEwOA0K PiANCj4gKyAgICBGb3JtU2V0R3VpZCA9IDEwOQ0KPiANCj4gKyAgICBJbmNvbnNpc3RlbnRJZiA9 IDExMA0KPiANCj4gKyAgICBXYXJuaW5nSWYgPSAxMTENCj4gDQo+ICsgICAgTm9TdWJtaXRJZiA9 IDExMg0KPiANCj4gKyAgICBFbmRJZiA9IDExMw0KPiANCj4gKyAgICBLZXkgPSAxMTQNCj4gDQo+ ICsgICAgRGVmYXVsdEZsYWcgPSAxMTUNCj4gDQo+ICsgICAgTWFudWZhY3R1cmluZ0ZsYWcgPSAx MTYNCj4gDQo+ICsgICAgQ2hlY2tCb3hEZWZhdWx0RmxhZyA9IDExNw0KPiANCj4gKyAgICBDaGVj a0JveERlZmF1bHRNZmdGbGFnID0gMTE4DQo+IA0KPiArICAgIEludGVyYWN0aXZlRmxhZyA9IDEx OQ0KPiANCj4gKyAgICBOVkFjY2Vzc0ZsYWcgPSAxMjANCj4gDQo+ICsgICAgUmVzZXRSZXF1aXJl ZEZsYWcgPSAxMjENCj4gDQo+ICsgICAgUmVjb25uZWN0UmVxdWlyZWRGbGFnID0gMTIyDQo+IA0K PiArICAgIExhdGVDaGVja0ZsYWcgPSAxMjMNCj4gDQo+ICsgICAgUmVhZE9ubHlGbGFnID0gMTI0 DQo+IA0KPiArICAgIE9wdGlvbk9ubHlGbGFnID0gMTI1DQo+IA0KPiArICAgIFJlc3RTdHlsZUZs YWcgPSAxMjYNCj4gDQo+ICsgICAgQ2xhc3MgPSAxMjcNCj4gDQo+ICsgICAgU3ViY2xhc3MgPSAx MjgNCj4gDQo+ICsgICAgQ2xhc3NHdWlkID0gMTI5DQo+IA0KPiArICAgIFR5cGVEZWYgPSAxMzAN Cj4gDQo+ICsgICAgUmVzdG9yZSA9IDEzMQ0KPiANCj4gKyAgICBTYXZlID0gMTMyDQo+IA0KPiAr ICAgIERlZmF1bHRzID0gMTMzDQo+IA0KPiArICAgIEJhbm5lciA9IDEzNA0KPiANCj4gKyAgICBB bGlnbiA9IDEzNQ0KPiANCj4gKyAgICBMZWZ0ID0gMTM2DQo+IA0KPiArICAgIFJpZ2h0ID0gMTM3 DQo+IA0KPiArICAgIENlbnRlciA9IDEzOA0KPiANCj4gKyAgICBMaW5lID0gMTM5DQo+IA0KPiAr ICAgIE5hbWUgPSAxNDANCj4gDQo+ICsgICAgVmFySWQgPSAxNDENCj4gDQo+ICsgICAgUXVlc3Rp b24gPSAxNDINCj4gDQo+ICsgICAgUXVlc3Rpb25JZCA9IDE0Mw0KPiANCj4gKyAgICBJbWFnZSA9 IDE0NA0KPiANCj4gKyAgICBMb2NrZWQgPSAxNDUNCj4gDQo+ICsgICAgUnVsZSA9IDE0Ng0KPiAN Cj4gKyAgICBFbmRSdWxlID0gMTQ3DQo+IA0KPiArICAgIFZhbHVlID0gMTQ4DQo+IA0KPiArICAg IFJlYWQgPSAxNDkNCj4gDQo+ICsgICAgV3JpdGUgPSAxNTANCj4gDQo+ICsgICAgUmVzZXRCdXR0 b24gPSAxNTENCj4gDQo+ICsgICAgRW5kUmVzZXRCdXR0b24gPSAxNTINCj4gDQo+ICsgICAgRGVm YXVsdFN0b3JlID0gMTUzDQo+IA0KPiArICAgIEF0dHJpYnV0ZSA9IDE1NA0KPiANCj4gKyAgICBW YXJzdG9yZSA9IDE1NQ0KPiANCj4gKyAgICBFZml2YXJzdG9yZSA9IDE1Ng0KPiANCj4gKyAgICBW YXJTaXplID0gMTU3DQo+IA0KPiArICAgIE5hbWVWYWx1ZVZhclN0b3JlID0gMTU4DQo+IA0KPiAr ICAgIEFjdGlvbiA9IDE1OQ0KPiANCj4gKyAgICBDb25maWcgPSAxNjANCj4gDQo+ICsgICAgRW5k QWN0aW9uID0gMTYxDQo+IA0KPiArICAgIFJlZnJlc2ggPSAxNjINCj4gDQo+ICsgICAgSW50ZXJ2 YWwgPSAxNjMNCj4gDQo+ICsgICAgVmFyc3RvcmVEZXZpY2UgPSAxNjQNCj4gDQo+ICsgICAgR3Vp ZE9wID0gMTY1DQo+IA0KPiArICAgIEVuZEd1aWRPcCA9IDE2Ng0KPiANCj4gKyAgICBEYXRhVHlw ZSA9IDE2Nw0KPiANCj4gKyAgICBEYXRhID0gMTY4DQo+IA0KPiArICAgIE1vZGFsID0gMTY5DQo+ IA0KPiArICAgIENsYXNzTm9uRGV2aWNlID0gMTcwDQo+IA0KPiArICAgIENsYXNzRGlza0Rldmlj ZSA9IDE3MQ0KPiANCj4gKyAgICBDbGFzc1ZpZGVvRGV2aWNlID0gMTcyDQo+IA0KPiArICAgIENs YXNzTmV0d29ya0RldmljZSA9IDE3Mw0KPiANCj4gKyAgICBDbGFzc0lucHV0RGV2aWNlID0gMTc0 DQo+IA0KPiArICAgIENsYXNzT25Cb2FyZERldmljZSA9IDE3NQ0KPiANCj4gKyAgICBDbGFzc090 aGVyRGV2aWNlID0gMTc2DQo+IA0KPiArICAgIFN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbiA9IDE3 Nw0KPiANCj4gKyAgICBTdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbiA9IDE3OA0KPiANCj4gKyAg ICBTdWJjbGFzc0Zyb250UGFnZSA9IDE3OQ0KPiANCj4gKyAgICBTdWJjbGFzc1NpbmdsZVVzZSA9 IDE4MA0KPiANCj4gKyAgICBZZWFyU3VwcHByZXNzRmxhZyA9IDE4MQ0KPiANCj4gKyAgICBNb250 aFN1cHByZXNzRmxhZyA9IDE4Mg0KPiANCj4gKyAgICBEYXlTdXBwcmVzc0ZsYWcgPSAxODMNCj4g DQo+ICsgICAgSG91clN1cHBwcmVzc0ZsYWcgPSAxODQNCj4gDQo+ICsgICAgTWludXRlU3VwcHJl c3NGbGFnID0gMTg1DQo+IA0KPiArICAgIFNlY29uZFN1cHByZXNzRmxhZyA9IDE4Ng0KPiANCj4g KyAgICBTdG9yYWdlTm9ybWFsRmxhZyA9IDE4Nw0KPiANCj4gKyAgICBTdG9yYWdlVGltZUZsYWcg PSAxODgNCj4gDQo+ICsgICAgU3RvcmFnZVdha2VVcEZsYWcgPSAxODkNCj4gDQo+ICsgICAgVW5p UXVlRmxhZyA9IDE5MA0KPiANCj4gKyAgICBOb0VtcHR5RmxhZyA9IDE5MQ0KPiANCj4gKyAgICBD b25kID0gMTkyDQo+IA0KPiArICAgIEZpbmQgPSAxOTMNCj4gDQo+ICsgICAgTWlkID0gMTk0DQo+ IA0KPiArICAgIFRvayA9IDE5NQ0KPiANCj4gKyAgICBTcGFuID0gMTk2DQo+IA0KPiArICAgIER1 cCA9IDE5Nw0KPiANCj4gKyAgICBWYXJFcVZhbCA9IDE5OA0KPiANCj4gKyAgICBWYXIgPSAxOTkN Cj4gDQo+ICsgICAgSWRFcVZhbCA9IDIwMA0KPiANCj4gKyAgICBJZEVxSWQgPSAyMDENCj4gDQo+ ICsgICAgSWRFcVZhbExpc3QgPSAyMDINCj4gDQo+ICsgICAgUXVlc3Rpb25SZWYgPSAyMDMNCj4g DQo+ICsgICAgUnVsZVJlZiA9IDIwNA0KPiANCj4gKyAgICBTdHJpbmdSZWYgPSAyMDUNCj4gDQo+ ICsgICAgUHVzaFRoaXMgPSAyMDYNCj4gDQo+ICsgICAgU2VjdXJpdHkgPSAyMDcNCj4gDQo+ICsg ICAgR2V0ID0gMjA4DQo+IA0KPiArICAgIFRydWVTeW1ib2wgPSAyMDkNCj4gDQo+ICsgICAgRmFs c2VTeW1ib2wgPSAyMTANCj4gDQo+ICsgICAgT25lID0gMjExDQo+IA0KPiArICAgIE9uZXMgPSAy MTINCj4gDQo+ICsgICAgWmVybyA9IDIxMw0KPiANCj4gKyAgICBVbmRlZmluZWQgPSAyMTQNCj4g DQo+ICsgICAgVmVyc2lvbiA9IDIxNQ0KPiANCj4gKyAgICBMZW5ndGggPSAyMTYNCj4gDQo+ICsg ICAgQU5EID0gMjE3DQo+IA0KPiArICAgIE9SID0gMjE4DQo+IA0KPiArICAgIE5PVCA9IDIxOQ0K PiANCj4gKyAgICBTZXQgPSAyMjANCj4gDQo+ICsgICAgQml0V2lzZU5vdCA9IDIyMQ0KPiANCj4g KyAgICBCb29sVmFsID0gMjIyDQo+IA0KPiArICAgIFN0cmluZ1ZhbCA9IDIyMw0KPiANCj4gKyAg ICBVbkludFZhbCA9IDIyNA0KPiANCj4gKyAgICBUb1VwcGVyID0gMjI1DQo+IA0KPiArICAgIFRv TG93ZXIgPSAyMjYNCj4gDQo+ICsgICAgTWF0Y2ggPSAyMjcNCj4gDQo+ICsgICAgTWF0Y2gyID0g MjI4DQo+IA0KPiArICAgIENhdGVuYXRlID0gMjI5DQo+IA0KPiArICAgIFF1ZXN0aW9uUmVmVmFs ID0gMjMwDQo+IA0KPiArICAgIFN0cmluZ1JlZlZhbCA9IDIzMQ0KPiANCj4gKyAgICBNYXAgPSAy MzINCj4gDQo+ICsgICAgUmVmcmVzaEd1aWQgPSAyMzMNCj4gDQo+ICsgICAgU3RyaW5nVG9rZW4g PSAyMzQNCj4gDQo+ICsgICAgT3B0aW9uRGVmYXVsdCA9IDIzNQ0KPiANCj4gKyAgICBPcHRpb25E ZWZhdWx0TWZnID0gMjM2DQo+IA0KPiArICAgIE51bWVyaWNTaXplT25lID0gMjM3DQo+IA0KPiAr ICAgIE51bWVyaWNTaXplVHdvID0gMjM4DQo+IA0KPiArICAgIE51bWVyaWNTaXplRm91ciA9IDIz OQ0KPiANCj4gKyAgICBOdW1lcmljU2l6ZUVpZ2h0ID0gMjQwDQo+IA0KPiArICAgIERpc1BsYXlJ bnREZWMgPSAyNDENCj4gDQo+ICsgICAgRGlzUGxheVVJbnREZWMgPSAyNDINCj4gDQo+ICsgICAg RGlzUGxheVVJbnRIZXggPSAyNDMNCj4gDQo+ICsgICAgSW5zZW5zaXRpdmUgPSAyNDQNCj4gDQo+ ICsgICAgU2Vuc2l0aXZlID0gMjQ1DQo+IA0KPiArICAgIExhc3ROb25NYXRjaCA9IDI0Ng0KPiAN Cj4gKyAgICBGaXJzdE5vbk1hdGNoID0gMjQ3DQo+IA0KPiArICAgIE51bWJlciA9IDI0OA0KPiAN Cj4gKyAgICBTdHJpbmdJZGVudGlmaWVyID0gMjQ5DQo+IA0KPiArICAgIENvbXBsZXhEZWZpbmUg PSAyNTANCj4gDQo+ICsgICAgTGluZURlZmluaXRpb24gPSAyNTENCj4gDQo+ICsgICAgSW5jbHVk ZURlZmluaXRpb24gPSAyNTINCj4gDQo+ICsgICAgV2hpdGVzcGFjZSA9IDI1Mw0KPiANCj4gKyAg ICBOZXdsaW5lID0gMjU0DQo+IA0KPiArICAgIExpbmVDb21tZW50ID0gMjU1DQo+IA0KPiArICAg IEV4dGVybiA9IDI1Ng0KPiANCj4gKw0KPiANCj4gKyAgICBjaGFubmVsTmFtZXMgPSBbIHUiREVG QVVMVF9UT0tFTl9DSEFOTkVMIiwgdSJISURERU4iIF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgbW9k ZU5hbWVzID0gWyAiREVGQVVMVF9NT0RFIiBdDQo+IA0KPiArDQo+IA0KPiArICAgIGxpdGVyYWxO YW1lcyA9IFsgIjxJTlZBTElEPiIsDQo+IA0KPiArICAgICAgICAgICAgIidzaG93JyIsICIncHVz aCciLCAiJ3BvcCciLCAiJyNwcmFnbWEnIiwgIidwYWNrJyIsICInPSciLA0KPiAiJ0lNQUdFX1RP S0VOJyIsDQo+IA0KPiArICAgICAgICAgICAgIidIT1JJWk9OVEFMJyIsICInTVVMVElfTElORSci LCAiJzw8JyIsICInPj4nIiwgIicrJyIsICInKiciLA0KPiANCj4gKyAgICAgICAgICAgICInJSci LCAiJ2Zvcm1hdCciLCAiJz8nIiwgIicjZGVmaW5lJyIsICInI2luY2x1ZGUnIiwgIidmb3JtcGtn dHlwZSciLA0KPiANCj4gKyAgICAgICAgICAgICIneyciLCAiJ30nIiwgIicoJyIsICInKSciLCAi J1snIiwgIiddJyIsICInLiciLCAiJy0nIiwgIic6JyIsDQo+IA0KPiArICAgICAgICAgICAgIicv JyIsICInOyciLCAiJywnIiwgIic9PSciLCAiJyE9JyIsICInPD0nIiwgIic8JyIsICInPj0nIiwN Cj4gDQo+ICsgICAgICAgICAgICAiJz4nIiwgIid8JyIsICInJiciLCAiJ2RldmljZXBhdGgnIiwg Iidmb3Jtc2V0JyIsICInZm9ybXNldGlkJyIsDQo+IA0KPiArICAgICAgICAgICAgIidlbmRmb3Jt c2V0JyIsICIndGl0bGUnIiwgIidmb3JtaWQnIiwgIidvbmVvZiciLCAiJ2VuZG9uZW9mJyIsDQo+ IA0KPiArICAgICAgICAgICAgIidwcm9tcHQnIiwgIidvcmRlcmVkbGlzdCciLCAiJ21heGNvbnRh aW5lcnMnIiwgIidlbmRsaXN0JyIsDQo+IA0KPiArICAgICAgICAgICAgIidlbmRmb3JtJyIsICIn Zm9ybSciLCAiJ2Zvcm1tYXAnIiwgIidtYXB0aXRsZSciLCAiJ21hcGd1aWQnIiwNCj4gDQo+ICsg ICAgICAgICAgICAiJ3N1YnRpdGxlJyIsICInZW5kc3VidGl0bGUnIiwgIidoZWxwJyIsICIndGV4 dCciLCAiJ29wdGlvbiciLA0KPiANCj4gKyAgICAgICAgICAgICInZmxhZ3MnIiwgIidkYXRlJyIs ICInZW5kZGF0ZSciLCAiJ3llYXInIiwgIidtb250aCciLCAiJ2RheSciLA0KPiANCj4gKyAgICAg ICAgICAgICIndGltZSciLCAiJ2VuZHRpbWUnIiwgIidob3VyJyIsICInbWludXRlJyIsICInc2Vj b25kJyIsICInZ3JheW91dGlmJyIsDQo+IA0KPiArICAgICAgICAgICAgIidsYWJlbCciLCAiJ3Rp bWVvdXQnIiwgIidpbnZlbnRvcnknIiwgIidfTk9OX05WX0RBVEFfTUFQJyIsDQo+IA0KPiArICAg ICAgICAgICAgIidzdHJ1Y3QnIiwgIid1bmlvbiciLCAiJ0JPT0xFQU4nIiwgIidVSU5UNjQnIiwg IidVSU5UMzInIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ1VJTlQxNiciLCAiJ1VJTlQ4JyIsICIn RUZJX1NUUklOR19JRCciLCAiJ0VGSV9ISUlfREFURSciLA0KPiANCj4gKyAgICAgICAgICAgICIn RUZJX0hJSV9USU1FJyIsICInRUZJX0hJSV9SRUYnIiwgIidndWlkJyIsICInY2hlY2tib3gnIiwN Cj4gIidlbmRjaGVja2JveCciLA0KPiANCj4gKyAgICAgICAgICAgICInbnVtZXJpYyciLCAiJ2Vu ZG51bWVyaWMnIiwgIidtaW5pbXVtJyIsICInbWF4aW11bSciLCAiJ3N0ZXAnIiwNCj4gDQo+ICsg ICAgICAgICAgICAiJ2RlZmF1bHQnIiwgIidwYXNzd29yZCciLCAiJ2VuZHBhc3N3b3JkJyIsICIn c3RyaW5nJyIsICInZW5kc3RyaW5nJyIsDQo+IA0KPiArICAgICAgICAgICAgIidtaW5zaXplJyIs ICInbWF4c2l6ZSciLCAiJ2VuY29kaW5nJyIsICInc3VwcHJlc3NpZiciLCAiJ2Rpc2FibGVpZici LA0KPiANCj4gKyAgICAgICAgICAgICInaGlkZGVuJyIsICInZ290byciLCAiJ2Zvcm1zZXRndWlk JyIsICInaW5jb25zaXN0ZW50aWYnIiwgIid3YXJuaW5naWYnIiwNCj4gDQo+ICsgICAgICAgICAg ICAiJ25vc3VibWl0aWYnIiwgIidlbmRpZiciLCAiJ2tleSciLCAiJ0RFRkFVTFQnIiwgIidNQU5V RkFDVFVSSU5HJyIsDQo+IA0KPiArICAgICAgICAgICAgIidDSEVDS0JPWF9ERUZBVUxUJyIsICIn Q0hFQ0tCT1hfREVGQVVMVF9NRkcnIiwNCj4gIidJTlRFUkFDVElWRSciLA0KPiANCj4gKyAgICAg ICAgICAgICInTlZfQUNDRVNTJyIsICInUkVTRVRfUkVRVUlSRUQnIiwgIidSRUNPTk5FQ1RfUkVR VUlSRUQnIiwNCj4gIidMQVRFX0NIRUNLJyIsDQo+IA0KPiArICAgICAgICAgICAgIidSRUFEX09O TFknIiwgIidPUFRJT05TX09OTFknIiwgIidSRVNUX1NUWUxFJyIsICInY2xhc3MnIiwNCj4gDQo+ ICsgICAgICAgICAgICAiJ3N1YmNsYXNzJyIsICInY2xhc3NndWlkJyIsICIndHlwZWRlZiciLCAi J3Jlc3RvcmUnIiwgIidzYXZlJyIsDQo+IA0KPiArICAgICAgICAgICAgIidkZWZhdWx0cyciLCAi J2Jhbm5lciciLCAiJ2FsaWduJyIsICInbGVmdCciLCAiJ3JpZ2h0JyIsICInY2VudGVyJyIsDQo+ IA0KPiArICAgICAgICAgICAgIidsaW5lJyIsICInbmFtZSciLCAiJ3ZhcmlkJyIsICIncXVlc3Rp b24nIiwgIidxdWVzdGlvbmlkJyIsDQo+IA0KPiArICAgICAgICAgICAgIidpbWFnZSciLCAiJ2xv Y2tlZCciLCAiJ3J1bGUnIiwgIidlbmRydWxlJyIsICIndmFsdWUnIiwgIidyZWFkJyIsDQo+IA0K PiArICAgICAgICAgICAgIid3cml0ZSciLCAiJ3Jlc2V0YnV0dG9uJyIsICInZW5kcmVzZXRidXR0 b24nIiwgIidkZWZhdWx0c3RvcmUnIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ2F0dHJpYnV0ZSci LCAiJ3ZhcnN0b3JlJyIsICInZWZpdmFyc3RvcmUnIiwgIid2YXJzaXplJyIsDQo+ICInbmFtZXZh bHVldmFyc3RvcmUnIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ2FjdGlvbiciLCAiJ2NvbmZpZyci LCAiJ2VuZGFjdGlvbiciLCAiJ3JlZnJlc2gnIiwgIidpbnRlcnZhbCciLA0KPiANCj4gKyAgICAg ICAgICAgICIndmFyc3RvcmVkZXZpY2UnIiwgIidndWlkb3AnIiwgIidlbmRndWlkb3AnIiwgIidk YXRhdHlwZSciLA0KPiANCj4gKyAgICAgICAgICAgICInZGF0YSciLCAiJ21vZGFsJyIsICInTk9O X0RFVklDRSciLCAiJ0RJU0tfREVWSUNFJyIsDQo+ICInVklERU9fREVWSUNFJyIsDQo+IA0KPiAr ICAgICAgICAgICAgIidORVRXT1JLX0RFVklDRSciLCAiJ0lOUFVUX0RFVklDRSciLCAiJ09OQk9B UkRfREVWSUNFJyIsDQo+ICInT1RIRVJfREVWSUNFJyIsDQo+IA0KPiArICAgICAgICAgICAgIidT RVRVUF9BUFBMSUNBVElPTiciLCAiJ0dFTkVSQUxfQVBQTElDQVRJT04nIiwNCj4gIidGUk9OVF9Q QUdFJyIsDQo+IA0KPiArICAgICAgICAgICAgIidTSU5HTEVfVVNFJyIsICInWUVBUl9TVVBQUkVT UyciLCAiJ01PTlRIX1NVUFBSRVNTJyIsDQo+ICInREFZX1NVUFBSRVNTJyIsDQo+IA0KPiArICAg ICAgICAgICAgIidIT1VSX1NVUFBSRVNTJyIsICInTUlOVVRFX1NVUFBSRVNTJyIsICInU0VDT05E X1NVUFBSRVNTJyIsDQo+IA0KPiArICAgICAgICAgICAgIidTVE9SQUdFX05PUk1BTCciLCAiJ1NU T1JBR0VfVElNRSciLCAiJ1NUT1JBR0VfV0FLRVVQJyIsDQo+ICInVU5JUVVFJyIsDQo+IA0KPiAr ICAgICAgICAgICAgIidOT0VNUFRZJyIsICInY29uZCciLCAiJ2ZpbmQnIiwgIidtaWQnIiwgIid0 b2tlbiciLCAiJ3NwYW4nIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ2R1cCciLCAiJ3ZhcmVxdmFs JyIsICIndmFyJyIsICInaWRlcXZhbCciLCAiJ2lkZXFpZCciLCAiJ2lkZXF2YWxsaXN0JyIsDQo+ IA0KPiArICAgICAgICAgICAgIidxdWVzdGlvbnJlZiciLCAiJ3J1bGVyZWYnIiwgIidzdHJpbmdy ZWYnIiwgIidwdXNodGhpcyciLCAiJ3NlY3VyaXR5JyIsDQo+IA0KPiArICAgICAgICAgICAgIidn ZXQnIiwgIidUUlVFJyIsICInRkFMU0UnIiwgIidPTkUnIiwgIidPTkVTJyIsICInWkVSTyciLCAi J1VOREVGSU5FRCciLA0KPiANCj4gKyAgICAgICAgICAgICInVkVSU0lPTiciLCAiJ2xlbmd0aCci LCAiJ0FORCciLCAiJ09SJyIsICInTk9UJyIsICInc2V0JyIsDQo+IA0KPiArICAgICAgICAgICAg Iid+JyIsICInYm9vbHZhbCciLCAiJ3N0cmluZ3ZhbCciLCAiJ3VuaW50dmFsJyIsICIndG91cHBl ciciLA0KPiANCj4gKyAgICAgICAgICAgICIndG9sb3dlciciLCAiJ21hdGNoJyIsICInbWF0Y2gy JyIsICInY2F0ZW5hdGUnIiwgIidxdWVzdGlvbnJlZnZhbCciLA0KPiANCj4gKyAgICAgICAgICAg ICInc3RyaW5ncmVmdmFsJyIsICInbWFwJyIsICIncmVmcmVzaGd1aWQnIiwgIidTVFJJTkdfVE9L RU4nIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ09QVElPTl9ERUZBVUxUJyIsICInT1BUSU9OX0RF RkFVTFRfTUZHJyIsDQo+ICInTlVNRVJJQ19TSVpFXzEnIiwNCj4gDQo+ICsgICAgICAgICAgICAi J05VTUVSSUNfU0laRV8yJyIsICInTlVNRVJJQ19TSVpFXzQnIiwgIidOVU1FUklDX1NJWkVfOCci LA0KPiANCj4gKyAgICAgICAgICAgICInRElTUExBWV9JTlRfREVDJyIsICInRElTUExBWV9VSU5U X0RFQyciLCAiJ0RJU1BMQVlfVUlOVF9IRVgnIiwNCj4gDQo+ICsgICAgICAgICAgICAiJ0lOU0VO U0lUSVZFJyIsICInU0VOU0lUSVZFJyIsICInTEFTVF9OT05fTUFUQ0gnIiwNCj4gIidGSVJTVF9O T05fTUFUQ0gnIiBdDQo+IA0KPiArDQo+IA0KPiArICAgIHN5bWJvbGljTmFtZXMgPSBbICI8SU5W QUxJRD4iLA0KPiANCj4gKyAgICAgICAgICAgICJEZWZpbmUiLCAiSW5jbHVkZSIsICJGb3JtUGtn VHlwZSIsICJPcGVuQnJhY2UiLCAiQ2xvc2VCcmFjZSIsDQo+IA0KPiArICAgICAgICAgICAgIk9w ZW5QYXJlbiIsICJDbG9zZVBhcmVuIiwgIk9wZW5CcmFja2V0IiwgIkNsb3NlQnJhY2tldCIsICJE b3QiLA0KPiANCj4gKyAgICAgICAgICAgICJOZWdhdGl2ZSIsICJDb2xvbiIsICJTbGFzaCIsICJT ZW1pY29sb24iLCAiQ29tbWEiLCAiRXF1YWwiLA0KPiANCj4gKyAgICAgICAgICAgICJOb3RFcXVh bCIsICJMZXNzRXF1YWwiLCAiTGVzcyIsICJHcmVhdGVyRXF1YWwiLCAiR3JlYXRlciIsDQo+IA0K PiArICAgICAgICAgICAgIkJpdFdpc2VPciIsICJCaXRXaXNlQW5kIiwgIkRldmljZVBhdGgiLCAi Rm9ybVNldCIsICJGb3JtU2V0SWQiLA0KPiANCj4gKyAgICAgICAgICAgICJFbmRGb3JtU2V0Iiwg IlRpdGxlIiwgIkZvcm1JZCIsICJPbmVPZiIsICJFbmRPbmVPZiIsICJQcm9tcHQiLA0KPiANCj4g KyAgICAgICAgICAgICJPcmRlcmVkTGlzdCIsICJNYXhDb250YWluZXJzIiwgIkVuZExpc3QiLCAi RW5kRm9ybSIsICJGb3JtIiwNCj4gDQo+ICsgICAgICAgICAgICAiRm9ybU1hcCIsICJNYXBUaXRs ZSIsICJNYXBHdWlkIiwgIlN1YnRpdGxlIiwgIkVuZFN1YnRpdGxlIiwNCj4gDQo+ICsgICAgICAg ICAgICAiSGVscCIsICJUZXh0IiwgIk9wdGlvbiIsICJGTEFHUyIsICJEYXRlIiwgIkVuZERhdGUi LCAiWWVhciIsDQo+IA0KPiArICAgICAgICAgICAgIk1vbnRoIiwgIkRheSIsICJUaW1lIiwgIkVu ZFRpbWUiLCAiSG91ciIsICJNaW51dGUiLCAiU2Vjb25kIiwNCj4gDQo+ICsgICAgICAgICAgICAi R3JheU91dElmIiwgIkxhYmVsIiwgIlRpbWVvdXQiLCAiSW52ZW50b3J5IiwgIk5vbk52RGF0YU1h cCIsDQo+IA0KPiArICAgICAgICAgICAgIlN0cnVjdCIsICJVbmlvbiIsICJCb29sZWFuIiwgIlVp bnQ2NCIsICJVaW50MzIiLCAiVWludDE2IiwNCj4gDQo+ICsgICAgICAgICAgICAiVWludDgiLCAi RUZJX1NUUklOR19JRCIsICJFRklfSElJX0RBVEUiLCAiRUZJX0hJSV9USU1FIiwNCj4gIkVGSV9I SUlfUkVGIiwNCj4gDQo+ICsgICAgICAgICAgICAiVXVpZCIsICJDaGVja0JveCIsICJFbmRDaGVj a0JveCIsICJOdW1lcmljIiwgIkVuZE51bWVyaWMiLA0KPiANCj4gKyAgICAgICAgICAgICJNaW5p bXVtIiwgIk1heGltdW0iLCAiU3RlcCIsICJEZWZhdWx0IiwgIlBhc3N3b3JkIiwNCj4gIkVuZFBh c3N3b3JkIiwNCj4gDQo+ICsgICAgICAgICAgICAiU3RyaW5nIiwgIkVuZFN0cmluZyIsICJNaW5T aXplIiwgIk1heFNpemUiLCAiRW5jb2RpbmciLCAiU3VwcHJlc3NJZiIsDQo+IA0KPiArICAgICAg ICAgICAgIkRpc2FibGVJZiIsICJIaWRkZW4iLCAiR290byIsICJGb3JtU2V0R3VpZCIsICJJbmNv bnNpc3RlbnRJZiIsDQo+IA0KPiArICAgICAgICAgICAgIldhcm5pbmdJZiIsICJOb1N1Ym1pdElm IiwgIkVuZElmIiwgIktleSIsICJEZWZhdWx0RmxhZyIsDQo+ICJNYW51ZmFjdHVyaW5nRmxhZyIs DQo+IA0KPiArICAgICAgICAgICAgIkNoZWNrQm94RGVmYXVsdEZsYWciLCAiQ2hlY2tCb3hEZWZh dWx0TWZnRmxhZyIsICJJbnRlcmFjdGl2ZUZsYWciLA0KPiANCj4gKyAgICAgICAgICAgICJOVkFj Y2Vzc0ZsYWciLCAiUmVzZXRSZXF1aXJlZEZsYWciLCAiUmVjb25uZWN0UmVxdWlyZWRGbGFnIiwN Cj4gDQo+ICsgICAgICAgICAgICAiTGF0ZUNoZWNrRmxhZyIsICJSZWFkT25seUZsYWciLCAiT3B0 aW9uT25seUZsYWciLCAiUmVzdFN0eWxlRmxhZyIsDQo+IA0KPiArICAgICAgICAgICAgIkNsYXNz IiwgIlN1YmNsYXNzIiwgIkNsYXNzR3VpZCIsICJUeXBlRGVmIiwgIlJlc3RvcmUiLCAiU2F2ZSIs DQo+IA0KPiArICAgICAgICAgICAgIkRlZmF1bHRzIiwgIkJhbm5lciIsICJBbGlnbiIsICJMZWZ0 IiwgIlJpZ2h0IiwgIkNlbnRlciIsICJMaW5lIiwNCj4gDQo+ICsgICAgICAgICAgICAiTmFtZSIs ICJWYXJJZCIsICJRdWVzdGlvbiIsICJRdWVzdGlvbklkIiwgIkltYWdlIiwgIkxvY2tlZCIsDQo+ IA0KPiArICAgICAgICAgICAgIlJ1bGUiLCAiRW5kUnVsZSIsICJWYWx1ZSIsICJSZWFkIiwgIldy aXRlIiwgIlJlc2V0QnV0dG9uIiwNCj4gDQo+ICsgICAgICAgICAgICAiRW5kUmVzZXRCdXR0b24i LCAiRGVmYXVsdFN0b3JlIiwgIkF0dHJpYnV0ZSIsICJWYXJzdG9yZSIsDQo+ICJFZml2YXJzdG9y ZSIsDQo+IA0KPiArICAgICAgICAgICAgIlZhclNpemUiLCAiTmFtZVZhbHVlVmFyU3RvcmUiLCAi QWN0aW9uIiwgIkNvbmZpZyIsICJFbmRBY3Rpb24iLA0KPiANCj4gKyAgICAgICAgICAgICJSZWZy ZXNoIiwgIkludGVydmFsIiwgIlZhcnN0b3JlRGV2aWNlIiwgIkd1aWRPcCIsICJFbmRHdWlkT3Ai LA0KPiANCj4gKyAgICAgICAgICAgICJEYXRhVHlwZSIsICJEYXRhIiwgIk1vZGFsIiwgIkNsYXNz Tm9uRGV2aWNlIiwgIkNsYXNzRGlza0RldmljZSIsDQo+IA0KPiArICAgICAgICAgICAgIkNsYXNz VmlkZW9EZXZpY2UiLCAiQ2xhc3NOZXR3b3JrRGV2aWNlIiwgIkNsYXNzSW5wdXREZXZpY2UiLA0K PiANCj4gKyAgICAgICAgICAgICJDbGFzc09uQm9hcmREZXZpY2UiLCAiQ2xhc3NPdGhlckRldmlj ZSIsDQo+ICJTdWJjbGFzc1NldHVwQXBwbGljYXRpb24iLA0KPiANCj4gKyAgICAgICAgICAgICJT dWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbiIsICJTdWJjbGFzc0Zyb250UGFnZSIsDQo+ICJTdWJj bGFzc1NpbmdsZVVzZSIsDQo+IA0KPiArICAgICAgICAgICAgIlllYXJTdXBwcHJlc3NGbGFnIiwg Ik1vbnRoU3VwcHJlc3NGbGFnIiwgIkRheVN1cHByZXNzRmxhZyIsDQo+IA0KPiArICAgICAgICAg ICAgIkhvdXJTdXBwcHJlc3NGbGFnIiwgIk1pbnV0ZVN1cHByZXNzRmxhZyIsICJTZWNvbmRTdXBw cmVzc0ZsYWciLA0KPiANCj4gKyAgICAgICAgICAgICJTdG9yYWdlTm9ybWFsRmxhZyIsICJTdG9y YWdlVGltZUZsYWciLCAiU3RvcmFnZVdha2VVcEZsYWciLA0KPiANCj4gKyAgICAgICAgICAgICJV bmlRdWVGbGFnIiwgIk5vRW1wdHlGbGFnIiwgIkNvbmQiLCAiRmluZCIsICJNaWQiLCAiVG9rIiwg IlNwYW4iLA0KPiANCj4gKyAgICAgICAgICAgICJEdXAiLCAiVmFyRXFWYWwiLCAiVmFyIiwgIklk RXFWYWwiLCAiSWRFcUlkIiwgIklkRXFWYWxMaXN0IiwNCj4gDQo+ICsgICAgICAgICAgICAiUXVl c3Rpb25SZWYiLCAiUnVsZVJlZiIsICJTdHJpbmdSZWYiLCAiUHVzaFRoaXMiLCAiU2VjdXJpdHki LA0KPiANCj4gKyAgICAgICAgICAgICJHZXQiLCAiVHJ1ZVN5bWJvbCIsICJGYWxzZVN5bWJvbCIs ICJPbmUiLCAiT25lcyIsICJaZXJvIiwNCj4gIlVuZGVmaW5lZCIsDQo+IA0KPiArICAgICAgICAg ICAgIlZlcnNpb24iLCAiTGVuZ3RoIiwgIkFORCIsICJPUiIsICJOT1QiLCAiU2V0IiwgIkJpdFdp c2VOb3QiLA0KPiANCj4gKyAgICAgICAgICAgICJCb29sVmFsIiwgIlN0cmluZ1ZhbCIsICJVbklu dFZhbCIsICJUb1VwcGVyIiwgIlRvTG93ZXIiLCAiTWF0Y2giLA0KPiANCj4gKyAgICAgICAgICAg ICJNYXRjaDIiLCAiQ2F0ZW5hdGUiLCAiUXVlc3Rpb25SZWZWYWwiLCAiU3RyaW5nUmVmVmFsIiwg Ik1hcCIsDQo+IA0KPiArICAgICAgICAgICAgIlJlZnJlc2hHdWlkIiwgIlN0cmluZ1Rva2VuIiwg Ik9wdGlvbkRlZmF1bHQiLCAiT3B0aW9uRGVmYXVsdE1mZyIsDQo+IA0KPiArICAgICAgICAgICAg Ik51bWVyaWNTaXplT25lIiwgIk51bWVyaWNTaXplVHdvIiwgIk51bWVyaWNTaXplRm91ciIsDQo+ ICJOdW1lcmljU2l6ZUVpZ2h0IiwNCj4gDQo+ICsgICAgICAgICAgICAiRGlzUGxheUludERlYyIs ICJEaXNQbGF5VUludERlYyIsICJEaXNQbGF5VUludEhleCIsICJJbnNlbnNpdGl2ZSIsDQo+IA0K PiArICAgICAgICAgICAgIlNlbnNpdGl2ZSIsICJMYXN0Tm9uTWF0Y2giLCAiRmlyc3ROb25NYXRj aCIsICJOdW1iZXIiLA0KPiAiU3RyaW5nSWRlbnRpZmllciIsDQo+IA0KPiArICAgICAgICAgICAg IkNvbXBsZXhEZWZpbmUiLCAiTGluZURlZmluaXRpb24iLCAiSW5jbHVkZURlZmluaXRpb24iLCAi V2hpdGVzcGFjZSIsDQo+IA0KPiArICAgICAgICAgICAgIk5ld2xpbmUiLCAiTGluZUNvbW1lbnQi LCAiRXh0ZXJuIiBdDQo+IA0KPiArDQo+IA0KPiArICAgIHJ1bGVOYW1lcyA9IFsgIlRfXzAiLCAi VF9fMSIsICJUX18yIiwgIlRfXzMiLCAiVF9fNCIsICJUX181IiwgIlRfXzYiLA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICJUX183IiwgIlRfXzgiLCAiVF9fOSIsICJUX18xMCIsICJUX18xMSIs ICJUX18xMiIsICJUX18xMyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIlRfXzE0IiwgIlRf XzE1IiwgIkRlZmluZSIsICJJbmNsdWRlIiwgIkZvcm1Qa2dUeXBlIiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAiT3BlbkJyYWNlIiwgIkNsb3NlQnJhY2UiLCAiT3BlblBhcmVuIiwgIkNsb3Nl UGFyZW4iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJPcGVuQnJhY2tldCIsICJDbG9zZUJy YWNrZXQiLCAiRG90IiwgIk5lZ2F0aXZlIiwgIkNvbG9uIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAiU2xhc2giLCAiU2VtaWNvbG9uIiwgIkNvbW1hIiwgIkVxdWFsIiwgIk5vdEVxdWFsIiwg Ikxlc3NFcXVhbCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIkxlc3MiLCAiR3JlYXRlckVx dWFsIiwgIkdyZWF0ZXIiLCAiQml0V2lzZU9yIiwgIkJpdFdpc2VBbmQiLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICJEZXZpY2VQYXRoIiwgIkZvcm1TZXQiLCAiRm9ybVNldElkIiwgIkVuZEZv cm1TZXQiLCAiVGl0bGUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJGb3JtSWQiLCAiT25l T2YiLCAiRW5kT25lT2YiLCAiUHJvbXB0IiwgIk9yZGVyZWRMaXN0IiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAiTWF4Q29udGFpbmVycyIsICJFbmRMaXN0IiwgIkVuZEZvcm0iLCAiRm9ybSIs ICJGb3JtTWFwIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiTWFwVGl0bGUiLCAiTWFwR3Vp ZCIsICJTdWJ0aXRsZSIsICJFbmRTdWJ0aXRsZSIsICJIZWxwIiwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAiVGV4dCIsICJPcHRpb24iLCAiRkxBR1MiLCAiRGF0ZSIsICJFbmREYXRlIiwgIlll YXIiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJNb250aCIsICJEYXkiLCAiVGltZSIsICJF bmRUaW1lIiwgIkhvdXIiLCAiTWludXRlIiwgIlNlY29uZCIsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgIkdyYXlPdXRJZiIsICJMYWJlbCIsICJUaW1lb3V0IiwgIkludmVudG9yeSIsICJOb25O dkRhdGFNYXAiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJTdHJ1Y3QiLCAiVW5pb24iLCAi Qm9vbGVhbiIsICJVaW50NjQiLCAiVWludDMyIiwgIlVpbnQxNiIsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgIlVpbnQ4IiwgIkVGSV9TVFJJTkdfSUQiLCAiRUZJX0hJSV9EQVRFIiwgIkVGSV9I SUlfVElNRSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIkVGSV9ISUlfUkVGIiwgIlV1aWQi LCAiQ2hlY2tCb3giLCAiRW5kQ2hlY2tCb3giLCAiTnVtZXJpYyIsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgIkVuZE51bWVyaWMiLCAiTWluaW11bSIsICJNYXhpbXVtIiwgIlN0ZXAiLCAiRGVm YXVsdCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIlBhc3N3b3JkIiwgIkVuZFBhc3N3b3Jk IiwgIlN0cmluZyIsICJFbmRTdHJpbmciLCAiTWluU2l6ZSIsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgIk1heFNpemUiLCAiRW5jb2RpbmciLCAiU3VwcHJlc3NJZiIsICJEaXNhYmxlSWYiLCAi SGlkZGVuIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiR290byIsICJGb3JtU2V0R3VpZCIs ICJJbmNvbnNpc3RlbnRJZiIsICJXYXJuaW5nSWYiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICJOb1N1Ym1pdElmIiwgIkVuZElmIiwgIktleSIsICJEZWZhdWx0RmxhZyIsICJNYW51ZmFjdHVy aW5nRmxhZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIkNoZWNrQm94RGVmYXVsdEZsYWci LCAiQ2hlY2tCb3hEZWZhdWx0TWZnRmxhZyIsDQo+ICJJbnRlcmFjdGl2ZUZsYWciLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICJOVkFjY2Vzc0ZsYWciLCAiUmVzZXRSZXF1aXJlZEZsYWciLCAi UmVjb25uZWN0UmVxdWlyZWRGbGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiTGF0ZUNo ZWNrRmxhZyIsICJSZWFkT25seUZsYWciLCAiT3B0aW9uT25seUZsYWciLA0KPiAiUmVzdFN0eWxl RmxhZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIkNsYXNzIiwgIlN1YmNsYXNzIiwgIkNs YXNzR3VpZCIsICJUeXBlRGVmIiwgIlJlc3RvcmUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICJTYXZlIiwgIkRlZmF1bHRzIiwgIkJhbm5lciIsICJBbGlnbiIsICJMZWZ0IiwgIlJpZ2h0IiwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAiQ2VudGVyIiwgIkxpbmUiLCAiTmFtZSIsICJWYXJJ ZCIsICJRdWVzdGlvbiIsICJRdWVzdGlvbklkIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAi SW1hZ2UiLCAiTG9ja2VkIiwgIlJ1bGUiLCAiRW5kUnVsZSIsICJWYWx1ZSIsICJSZWFkIiwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAiV3JpdGUiLCAiUmVzZXRCdXR0b24iLCAiRW5kUmVzZXRC dXR0b24iLCAiRGVmYXVsdFN0b3JlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiQXR0cmli dXRlIiwgIlZhcnN0b3JlIiwgIkVmaXZhcnN0b3JlIiwgIlZhclNpemUiLA0KPiAiTmFtZVZhbHVl VmFyU3RvcmUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJBY3Rpb24iLCAiQ29uZmlnIiwg IkVuZEFjdGlvbiIsICJSZWZyZXNoIiwgIkludGVydmFsIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAiVmFyc3RvcmVEZXZpY2UiLCAiR3VpZE9wIiwgIkVuZEd1aWRPcCIsICJEYXRhVHlwZSIs ICJEYXRhIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiTW9kYWwiLCAiQ2xhc3NOb25EZXZp Y2UiLCAiQ2xhc3NEaXNrRGV2aWNlIiwgIkNsYXNzVmlkZW9EZXZpY2UiLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICJDbGFzc05ldHdvcmtEZXZpY2UiLCAiQ2xhc3NJbnB1dERldmljZSIsICJD bGFzc09uQm9hcmREZXZpY2UiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJDbGFzc090aGVy RGV2aWNlIiwgIlN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbiIsDQo+ICJTdWJjbGFzc0dlbmVyYWxB cHBsaWNhdGlvbiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgIlN1YmNsYXNzRnJvbnRQYWdl IiwgIlN1YmNsYXNzU2luZ2xlVXNlIiwgIlllYXJTdXBwcHJlc3NGbGFnIiwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAiTW9udGhTdXBwcmVzc0ZsYWciLCAiRGF5U3VwcHJlc3NGbGFnIiwgIkhv dXJTdXBwcHJlc3NGbGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiTWludXRlU3VwcHJl c3NGbGFnIiwgIlNlY29uZFN1cHByZXNzRmxhZyIsDQo+ICJTdG9yYWdlTm9ybWFsRmxhZyIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgIlN0b3JhZ2VUaW1lRmxhZyIsICJTdG9yYWdlV2FrZVVw RmxhZyIsICJVbmlRdWVGbGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiTm9FbXB0eUZs YWciLCAiQ29uZCIsICJGaW5kIiwgIk1pZCIsICJUb2siLCAiU3BhbiIsICJEdXAiLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICJWYXJFcVZhbCIsICJWYXIiLCAiSWRFcVZhbCIsICJJZEVxSWQi LCAiSWRFcVZhbExpc3QiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJRdWVzdGlvblJlZiIs ICJSdWxlUmVmIiwgIlN0cmluZ1JlZiIsICJQdXNoVGhpcyIsICJTZWN1cml0eSIsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgIkdldCIsICJUcnVlU3ltYm9sIiwgIkZhbHNlU3ltYm9sIiwgIk9u ZSIsICJPbmVzIiwgIlplcm8iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJVbmRlZmluZWQi LCAiVmVyc2lvbiIsICJMZW5ndGgiLCAiQU5EIiwgIk9SIiwgIk5PVCIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgIlNldCIsICJCaXRXaXNlTm90IiwgIkJvb2xWYWwiLCAiU3RyaW5nVmFsIiwg IlVuSW50VmFsIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiVG9VcHBlciIsICJUb0xvd2Vy IiwgIk1hdGNoIiwgIk1hdGNoMiIsICJDYXRlbmF0ZSIsDQo+ICJRdWVzdGlvblJlZlZhbCIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgIlN0cmluZ1JlZlZhbCIsICJNYXAiLCAiUmVmcmVzaEd1 aWQiLCAiU3RyaW5nVG9rZW4iLA0KPiAiT3B0aW9uRGVmYXVsdCIsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgIk9wdGlvbkRlZmF1bHRNZmciLCAiTnVtZXJpY1NpemVPbmUiLCAiTnVtZXJpY1Np emVUd28iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICJOdW1lcmljU2l6ZUZvdXIiLCAiTnVt ZXJpY1NpemVFaWdodCIsICJEaXNQbGF5SW50RGVjIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAiRGlzUGxheVVJbnREZWMiLCAiRGlzUGxheVVJbnRIZXgiLCAiSW5zZW5zaXRpdmUiLCAiU2Vu c2l0aXZlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiTGFzdE5vbk1hdGNoIiwgIkZpcnN0 Tm9uTWF0Y2giLCAiTnVtYmVyIiwgIlN0cmluZ0lkZW50aWZpZXIiLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICJDb21wbGV4RGVmaW5lIiwgIkxpbmVEZWZpbml0aW9uIiwgIkluY2x1ZGVEZWZp bml0aW9uIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAiV2hpdGVzcGFjZSIsICJOZXdsaW5l IiwgIkxpbmVDb21tZW50IiwgIkV4dGVybiIgXQ0KPiANCj4gKw0KPiANCj4gKyAgICBncmFtbWFy RmlsZU5hbWUgPSAiVmZyU3ludGF4Lmc0Ig0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0 X18oc2VsZiwgaW5wdXQ9Tm9uZSwgb3V0cHV0OlRleHRJTyA9IHN5cy5zdGRvdXQpOg0KPiANCj4g KyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbnB1dCwgb3V0cHV0KQ0KPiANCj4gKyAgICAgICAg c2VsZi5jaGVja1ZlcnNpb24oIjQuNy4yIikNCj4gDQo+ICsgICAgICAgIHNlbGYuX2ludGVycCA9 IExleGVyQVROU2ltdWxhdG9yKHNlbGYsIHNlbGYuYXRuLCBzZWxmLmRlY2lzaW9uc1RvREZBLA0K PiBQcmVkaWN0aW9uQ29udGV4dENhY2hlKCkpDQo+IA0KPiArICAgICAgICBzZWxmLl9hY3Rpb25z ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5fcHJlZGljYXRlcyA9IE5vbmUNCj4gDQo+IGRp ZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50YXhQ YXJzZXIucHkNCj4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJTeW50 YXhQYXJzZXIucHkNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4u YjZhZjIxYjc5NQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0 aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheFBhcnNlci5weQ0KPiBAQCAtMCwwICsxLDIwNDYwIEBA DQo+ICsjIEdlbmVyYXRlZCBmcm9tIFZmclN5bnRheC5nNCBieSBBTlRMUiA0LjcuMg0KPiANCj4g KyMgZW5jb2Rpbmc6IHV0Zi04DQo+IA0KPiArZnJvbSBhbnRscjQgaW1wb3J0ICoNCj4gDQo+ICtm cm9tIGlvIGltcG9ydCBTdHJpbmdJTw0KPiANCj4gK2Zyb20gdHlwaW5nIGltcG9ydCBUZXh0SU8N Cj4gDQo+ICtpbXBvcnQgc3lzDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArZnJv bSBWZnJDb21waWxlci5Db21tb25DdHlwZXMgaW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBp bGVyLlZmckZvcm1Qa2cgaW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLlZmclV0aWxp dHkgaW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLlZmclRyZWUgaW1wb3J0ICoNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtkZWYgc2VyaWFsaXplZEFUTigpOg0KPiANCj4gKyAgICB3 aXRoIFN0cmluZ0lPKCkgYXMgYnVmOg0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHU2MDhiXHVh NzJhXHU4MTMzXHViOWVkXHU0MTdjXHUzYmU3XHU3Nzg2XHU1OTY0XDNcdTAxMA0KPiAyIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwYmEzXDRcMlx0XDJcNFwzXHRcM1w0XDRcdFw0XDRc NVx0XDVcNFw2XHRcNlw0XDdcdFw3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDRcYlx0 XGJcNFx0XHRcdFw0XG5cdFxuXDRcMTNcdFwxM1w0XGZcdFxmXDRcclx0XHJcNFwxNiIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlx0XDE2XDRcMTdcdFwxN1w0XDIwXHRcMjBcNFwyMVx0XDIx XDRcMjJcdFwyMlw0XDIzXHRcMjMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNFwyNFx0 XDI0XDRcMjVcdFwyNVw0XDI2XHRcMjZcNFwyN1x0XDI3XDRcMzBcdFwzMFw0XDMxIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHRcMzFcNFwzMlx0XDMyXDRcMzNcdFwzM1w0XDM0XHRcMzRc NFwzNVx0XDM1XDRcMzZcdFwzNiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw0XDM3XHRc MzdcNCBcdCBcNCFcdCFcNFwiXHRcIlw0I1x0I1w0JFx0JFw0JVx0JVw0Jlx0IikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiJlw0XCdcdFwnXDQoXHQoXDQpXHQpXDQqXHQqXDQrXHQrXDQsXHQs XDQtXHQtXDQuXHQuXDQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCIvXHQvXDRcNjBcdFw2 MFw0XDYxXHRcNjFcNFw2Mlx0XDYyXDRcNjNcdFw2M1w0XDY0XHRcNjQiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcNFw2NVx0XDY1XDRcNjZcdFw2Nlw0XDY3XHRcNjdcNDhcdDhcNDlcdDlc NDpcdDpcNDtcdCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiO1w0PFx0PFw0PVx0PVw0Plx0Plw0 P1x0P1w0QFx0QFw0QVx0QVw0Qlx0Qlw0Q1x0Q1w0RFx0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiRFw0RVx0RVw0Rlx0Rlw0R1x0R1w0SFx0SFw0SVx0SVw0Slx0Slw0S1x0S1w0TFx0TFw0 TVx0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJNXDROXHROXDRPXHRPXDRQXHRQXDRRXHRRXDRS XHRSXDRTXHRTXDRUXHRUXDRVXHRVXDRWXHQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJW XDRXXHRXXDRYXHRYXDRZXHRZXDRaXHRaXDRbXHRbXDRcXFx0XFxcNF1cdF1cNF5cdF5cNCIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIl9cdF9cNGBcdGBcNGFcdGFcNGJcdGJcNGNcdGNcNGRc dGRcNGVcdGVcNGZcdGZcNGdcdGdcNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoImhcdGhc NGlcdGlcNGpcdGpcNGtcdGtcNGxcdGxcNG1cdG1cNG5cdG5cNG9cdG9cNHBcdHBcNCIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoInFcdHFcNHJcdHJcNHNcdHNcNHRcdHRcNHVcdHVcNHZcdHZc NHdcdHdcNHhcdHhcNHlcdHlcNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoInpcdHpcNHtc dHtcNHxcdHxcNH1cdH1cNH5cdH5cNFwxNzdcdFwxNzdcNFx1MDA4MFx0XHUwMDgwIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcNFx1MDA4MVx0XHUwMDgxXDRcdTAwODJcdFx1MDA4Mlw0XHUwMDgz XHRcdTAwODNcNFx1MDA4NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwODRcNFx1MDA4 NVx0XHUwMDg1XDRcdTAwODZcdFx1MDA4Nlw0XHUwMDg3XHRcdTAwODciKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlw0XHUwMDg4XHRcdTAwODhcNFx1MDA4OVx0XHUwMDg5XDRcdTAwOGFcdFx1MDA4 YVw0XHUwMDhiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDA4Ylw0XHUwMDhjXHRcdTAw OGNcNFx1MDA4ZFx0XHUwMDhkXDRcdTAwOGVcdFx1MDA4ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDRcdTAwOGZcdFx1MDA4Zlw0XHUwMDkwXHRcdTAwOTBcNFx1MDA5MVx0XHUwMDkxXDRcdTAw OTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMDkyXDRcdTAwOTNcdFx1MDA5M1w0XHUw MDk0XHRcdTAwOTRcNFx1MDA5NVx0XHUwMDk1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1 MDA5Nlx0XHUwMDk2XDRcdTAwOTdcdFx1MDA5N1w0XHUwMDk4XHRcdTAwOThcNFx1MDA5OSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwOTlcNFx1MDA5YVx0XHUwMDlhXDRcdTAwOWJcdFx1 MDA5Ylw0XHUwMDljXHRcdTAwOWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw0XHUwMDlkXHRc dTAwOWRcNFx1MDA5ZVx0XHUwMDllXDRcdTAwOWZcdFx1MDA5Zlw0XHUwMGEwIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdFx1MDBhMFw0XHUwMGExXHRcdTAwYTFcNFx1MDBhMlx0XHUwMGEyXDRc dTAwYTNcdFx1MDBhMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAwYTRcdFx1MDBhNFw0 XHUwMGE1XHRcdTAwYTVcNFx1MDBhNlx0XHUwMGE2XDRcdTAwYTciKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx0XHUwMGE3XDRcdTAwYThcdFx1MDBhOFw0XHUwMGE5XHRcdTAwYTlcNFx1MDBhYVx0 XHUwMGFhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNFx1MDBhYlx0XHUwMGFiXDRcdTAwYWNc dFx1MDBhY1w0XHUwMGFkXHRcdTAwYWRcNFx1MDBhZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHRcdTAwYWVcNFx1MDBhZlx0XHUwMGFmXDRcdTAwYjBcdFx1MDBiMFw0XHUwMGIxXHRcdTAwYjEi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw0XHUwMGIyXHRcdTAwYjJcNFx1MDBiM1x0XHUwMGIz XDRcdTAwYjRcdFx1MDBiNFw0XHUwMGI1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdFx1MDBi NVw0XHUwMGI2XHRcdTAwYjZcNFx1MDBiN1x0XHUwMGI3XDRcdTAwYjhcdFx1MDBiOCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDRcdTAwYjlcdFx1MDBiOVw0XHUwMGJhXHRcdTAwYmFcNFx1MDBi Ylx0XHUwMGJiXDRcdTAwYmMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx0XHUwMGJjXDRcdTAw YmRcdFx1MDBiZFw0XHUwMGJlXHRcdTAwYmVcNFx1MDBiZlx0XHUwMGJmIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcNFx1MDBjMFx0XHUwMGMwXDRcdTAwYzFcdFx1MDBjMVw0XHUwMGMyXHRcdTAw YzJcNFx1MDBjMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHRcdTAwYzNcNFx1MDBjNFx0XHUw MGM0XDRcdTAwYzVcdFx1MDBjNVw0XHUwMGM2XHRcdTAwYzYiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlw0XHUwMGM3XHRcdTAwYzdcNFx1MDBjOFx0XHUwMGM4XDRcdTAwYzlcdFx1MDBjOVw0XHUw MGNhIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHRcdTAwY2FcNFx1MDBjYlx0XHUwMGNi XDNcMlwzXDJcM1wyXDdcMlx1MDE5YVxuXDJcZlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDE2XDJcdTAxOWRcMTNcMlwzXDJcM1wyXDNcM1wzXDNcM1w0XDNcNFwzXDRcNVw0XHUwMWE2 IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXG5cNFwzXDRcM1w0XDVcNFx1MDFhYVxuXDRc M1w1XDVcNVx1MDFhZFxuXDVcM1w2XDNcNlwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDZcM1w2XDNcNlwzXDZcNVw2XHUwMWI1XG5cNlwzXDZcM1w2XDNcN1w1XDdcdTAxYmFcblw3IikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcN1wzXDdcNVw3XHUwMWJlXG5cN1wzXDdcNVw3 XHUwMWMxXG5cN1wzXDdcM1w3XDNcN1wzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdc NVw3XHUwMWM3XG5cN1wzXDdcM1w3XDNcYlw1XGJcdTAxY2NcblxiXDNcYlwzXGJcNVxiIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxZDBcblxiXDNcYlw1XGJcdTAxZDNcblxiXDNcYlwzXGJc M1xiXDNcYlw1XGJcdTAxZDkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcblxiXDNcYlwz XGJcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDNcdFwzXHRcM1x0XDMiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcdFwzXHRcM1x0XDNcdFw3XHRcdTAxZWJcblx0XGZcdFwxNlx0XHUw MWVlXDEzXHRcM1xuXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcblwzXG5cM1xuXDNc blw1XG5cdTAxZjVcblxuXDNcblwzXG5cM1wxM1wzXDEzXDNcMTNcMyIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlwxM1wzXDEzXDVcMTNcdTAxZmVcblwxM1wzXDEzXDNcMTNcM1xmXDNcZlwz XGZcM1xmXDNcZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw1XGZcdTAyMDdcblxmXDNc ZlwzXGZcM1xyXDNcclwzXHJcM1xyXDNcclw1XHJcdTAyMTBcbiIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlxyXDNcclwzXHJcM1wxNlwzXDE2XDNcMTZcM1wxNlwzXDE2XDVcMTZcdTAyMTlc blwxNlwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDE2XDNcMTZcM1wxN1wzXDE3XDNc MTdcM1wxN1wzXDE3XDVcMTdcdTAyMjJcblwxN1wzXDE3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXDNcMTdcM1wyMFwzXDIwXDNcMjBcM1wyMFwzXDIwXDVcMjBcdTAyMmJcblwyMFwzXDIw XDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMjBcM1wyMVwzXDIxXDNcMjFcM1wyMVwz XDIxXDVcMjFcdTAyMzRcblwyMVwzXDIxXDNcMjEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcM1wyMlwzXDIyXDNcMjJcM1wyMlwzXDIyXDVcMjJcdTAyM2RcblwyMlwzXDIyXDNcMjJcMyIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyM1wzXDIzXDNcMjNcM1wyM1wzXDIzXDVcMjNc dTAyNDZcblwyM1wzXDIzXDNcMjNcM1wyNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwz XDI0XDVcMjRcdTAyNGNcblwyNFwzXDI0XDNcMjRcM1wyNFwzXDI0XDNcMjVcM1wyNVw1IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcMjVcdTAyNTRcblwyNVwzXDI1XDNcMjVcM1wyNVwzXDI1XDNc MjZcM1wyNlw1XDI2XHUwMjVjIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXG5cMjZcM1wy NlwzXDI2XDNcMjZcM1wyNlwzXDI3XDNcMjdcNVwyN1x1MDI2NFxuXDI3XDMiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcMjdcM1wyN1wzXDI3XDNcMjdcM1wzMFwzXDMwXDNcMzBcM1wzMFwz XDMwXDNcMzBcM1wzMCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDMwXDNcMzBcM1wz MFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzAiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcM1wzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzBcNVwzMFx1MDI4Mlxu XDMwXDNcMzBcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzMFwzXDMwXDNcMzBcM1wz MFw1XDMwXHUwMjg5XG5cMzBcM1wzMFwzXDMwXDNcMzBcM1wzMCIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlwzXDMwXDVcMzBcdTAyOTBcblwzMFwzXDMwXDNcMzBcM1wzMFwzXDMwXDNcMzFc M1wzMVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMzFcNVwzMVx1MDI5OVxuXDMxXDNcMzFc M1wzMVw1XDMxXHUwMjlkXG5cMzFcM1wzMVwzXDMxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc NVwzMVx1MDJhMVxuXDMxXDNcMzJcM1wzMlwzXDMyXDdcMzJcdTAyYTZcblwzMlxmXDMyXDE2IikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDMyXHUwMmE5XDEzXDMyXDNcMzNcM1wzM1wzXDM0 XDNcMzRcM1wzNVw3XDM1XHUwMmIwXG4iKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMzVc ZlwzNVwxNlwzNVx1MDJiM1wxM1wzNVwzXDM2XDNcMzZcM1wzNlwzXDM2XDNcMzZcMyIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlwzNlwzXDM2XDNcMzZcM1wzNlwzXDM2XDVcMzZcdTAyYmZc blwzNlwzXDM3XDNcMzdcM1wzNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDM3XDNc MzdcM1wzN1wzXDM3XDNcMzdcM1wzN1wzXDM3XDNcMzdcM1wzN1wzXDM3XDVcMzciKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdTAyY2VcblwzN1wzXDM3XDNcMzdcMyBcMyBcMyBcMyBcMyBc MyBcMyBcMyBcMyBcMyBcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIiBcMyBcMyBcMyBc MyBcMyBcMyBcNSBcdTAyZTNcbiBcMyBcMyBcMyBcMyBcNSBcdTAyZTlcbiIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIiBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyBcMyFcMyFcMyFcMyFc MyFcMyFcMyFcMyFcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIiFcMyFcMyFcMyFcMyFc MyFcMyFcMyFcMyFcNSFcdTAzMDVcbiFcMyFcMyFcMyFcMyFcNSFcdTAzMGIiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcbiFcMyFcMyFcMyFcMyFcMyFcNyFcdTAzMTJcbiFcZiFcMTYhXHUw MzE1XDEzIVwzIVwzISIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzIVwzIVwzIVwzIVwz IVwzIVwzIVwzIVwzIVwzIVwzIVwzIVwzIVwzIVw1IVx1MDMyN1xuIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiIVwzIVwzIVwzIVwzIVwzIVwzXCJcM1wiXDMjXDMjXDMjXDMjXDMjXDMjXDMj XDUjXHUwMzM3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcbiNcMyNcMyNcMyNcMyNcMyNcMyNc MyNcNiNcdTAzNDBcbiNcciNcMTYjXHUwMzQxXDMjXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IiNcMyNcMyNcMyNcMyRcMyRcMyRcMyRcMyRcMyRcMyRcMyVcMyVcMyVcMyVcMyVcMyVcMyVcMyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwzJlwz JlwzJlwzJlwzJlwzJlwzXCdcM1wnDQo+ICIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwz XCdcM1wnXDNcJ1wzXCdcM1wnXDNcJ1wzXCdcM1wnXDNcJ1wzXCdcNVwnXHUwMzczXG5cJyIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXCdcM1wnXDMoXDMoXDMoXDMoXDMoXDMpXDMpXDMp XDMqXDMqXDMqXDMqXDUqXHUwMzgzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcbipcMypcMypc MypcMypcMypcNSpcdTAzOGFcbipcMypcMypcMypcMypcNSpcdTAzOTBcbiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiKlwzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wzK1wz LFwzLFwzLFwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiLFwzLFwzLFwzLFwzLFw1LFx1 MDNhOFxuLFwzLVwzLVwzLVwzLVwzLVwzLVwzLVw3LVx1MDNiMSIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlxuLVxmLVwxNi1cdTAzYjRcMTMtXDUtXHUwM2I2XG4tXDMuXDUuXHUwM2I5XG4u XDMuXDMuIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDMuXDMuXDMuXDMuXDMuXDMuXDMu XDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCIuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDMuXDcuXHUw M2RlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXG4uXGYuXDE2Llx1MDNlMVwxMy5cMy5c NS5cdTAzZTRcbi5cMy9cMy9cMy9cMy9cMy9cMy8iKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcMy9cM1w2MFwzXDYwXDNcNjFcM1w2MVw1XDYxXHUwM2YxXG5cNjFcM1w2MlwzXDYyXDNcNjIi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1w2Mlx1MDNmNlxuXDYyXGZcNjJcMTZcNjJc dTAzZjlcMTNcNjJcM1w2M1wzXDYzXDNcNjMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc M1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1wzXDYzXDNcNjNcM1w2M1w3XDYzIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDA4XG5cNjNcZlw2M1wxNlw2M1x1MDQwYlwx M1w2M1wzXDYzXDNcNjNcM1w2M1wzXDY0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNc NjRcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NFwzXDY0XDNcNjRcM1w2NCIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDY0XDNcNjRcM1w2NFw1XDY0XHUwNDFmXG5cNjRc M1w2NVwzXDY1XDNcNjVcM1w2NVwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDY1XDNc NjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjVcM1w2NVwzXDY1XDNcNjUiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcM1w2NVwzXDY1XDdcNjVcdTA0MzJcblw2NVxmXDY1XDE2XDY1 XHUwNDM1XDEzXDY1XDNcNjUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1w2NVx1MDQz OFxuXDY1XGZcNjVcMTZcNjVcdTA0M2JcMTNcNjVcM1w2NVwzXDY1XDNcNjUiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1w2NlwzXDY2XDNcNjZcM1w2N1wzXDY3XDNcNjdcMzhcMzhcMzhc MzhcMzhcMzhcMzhcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIjlcMzlcMzlcNTlcdTA0 NTBcbjlcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMzpcMzpcNSIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIjpcdTA0NWRcbjpcMzpcMzpcNTpcdTA0NjFcbjpcMzpcMzpcMzpcNTpcdTA0 NjZcbjpcMzpcMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIjpcNzpcdTA0NmFcbjpcZjpc MTY6XHUwNDZkXDEzOlw1Olx1MDQ2ZlxuOlwzOlwzOlw1Olx1MDQ3MyIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlxuOlwzO1wzO1w1O1x1MDQ3N1xuO1wzPFwzPFwzPFw3PFx1MDQ3Y1xuPFxm PFwxNjxcdTA0N2YiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwxMzxcMz1cMz1cMz5cMz5cMz5c Mz5cMz5cMz5cMz5cMz5cMz5cMz5cMz5cMz5cMz5cMz5cMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiPlwzPlwzPlwzPlwzPlwzPlwzPlw1Plx1MDQ5OFxuPlwzPlwzPlwzPlwzPlwzPlwzPlw3Plx1 MDRhDQo+IDAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxuPlxmPlwxNj5cdTA0YTNcMTM+XDM+ XDM+XDM+XDM+XDM+XDU+XHUwNGFhXG4+XDM+XDM+IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc NT5cdTA0YWVcbj5cMz5cMz5cMz9cMz9cNT9cdTA0YjRcbj9cM0BcM0BcNUBcdTA0YjhcbiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiQFwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwz QVwzQVwzQVwzQVwzQVwzQVwzDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiQVwzQVwzQVwz QVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzQVwzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDNBXDVBXHUwNGU2XG5BXDNBXDNB XDVBXHUwNGVhXG4iKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIkFcM0FcM0FcM0FcM0FcM0FcNUFc dTA0ZjFcbkFcM0FcM0FcM0FcM0FcNUFcdTA0ZjdcbkFcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiQVwzQVw1QVx1MDRmYlxuQVwzQVwzQVwzQlwzQlwzQlw3Qlx1MDUwMlxuQlxmQlwxNkJcdTA1 MDUNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMTNCXDNDXDNDXDVDXHUwNTA5XG5DXDNE XDNEXDNEXDNEXDNEXDNEXDNEXDNEXDNEXDNEXDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIkRc dTA1MTVcbkRcM0RcM0RcM0RcM0VcM0VcM0VcM0VcM0VcM0VcNUVcdTA1MjBcbkVcM0ZcMyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiRlwzRlwzRlwzRlwzRlwzRlwzRlwzRlwzRlwzRlw1Rlx1MDUy ZFxuRlwzR1wzR1wzR1wzR1wzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJHXDNHXDNHXDNHXDNH XDNHXDNHXDNHXDNHXDdHXHUwNTNjXG5HXGZHXDE2R1x1MDUzZlwxMyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiR1wzR1wzR1w1R1x1MDU0M1xuR1wzR1wzR1wzR1w1R1x1MDU0OFxuR1wzSFwzSFwz SFwzSFwNCj4gMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiSFwzSFwzSFwzSFwzSFwzSFwzSFwz SFwzSFw3SFx1MDU1N1xuSFxmSFwxNkhcdTA1NWFcMTMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IkhcM0hcM0hcNUhcdTA1NWVcbkhcM0hcM0hcM0hcNUhcdTA1NjNcbkhcM0lcM0lcM0lcM0lcMyIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIklcM0lcNUlcdTA1NmJcbklcM0pcM0pcM0pcM0pc M0pcM0tcM0tcM0tcM0tcM0tcM0tcM0tcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiS1wzTFwz TFwzTFwzTFwzTFwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzTVwzDQo+IE1cNSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiTVx1MDU4YlxuTVwzTVwzTVwzTVw1TVx1MDU5MFxuTVwzTlw3 Tlx1MDU5M1xuTlxmTlwxDQo+IDZOIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1OTZcMTNO XDNPXDNPXDNPXDNPXDNPXDNPXDNPXDVPXHUwNTlmXG5PXDNQXDNQXDNQXDMiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlBcM1BcM1BcM1BcM1BcNVBcdTA1YTlcblBcM1FcM1FcM1FcM1FcM1FcM1Fc M1FcM1FcN1FcdQ0KPiAwNWIzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcblFcZlFcMTZRXHUw NWI2XDEzUVwzUVwzUVw1UVx1MDViYVxuUVwzUVwzUVwzUVw1UVx1MA0KPiA1YmYiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlxuUVwzUlwzUlwzUlwzUlwzUlwzUlwzUlwzUlw3Ulx1MDVjOVxuUlxm UlwxNlJcdTA1Y2NcMTMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlJcM1JcM1JcNVJcdTA1ZDBc blJcM1JcM1JcM1JcNVJcdTA1ZDVcblJcM1NcM1NcM1NcM1NcMyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiU1wzU1wzU1wzU1w1U1x1MDVkZlxuU1wzU1wzU1wzU1wzU1w1U1x1MDVlNVxuU1wzVFwz VFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJUXDNUXDNVXDNVXDNWXDNWXDNWXDNWXDNWXDNW XDNWXDNWXDNWXDNWXDNWXDNWXDNWXDNWXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlZcM1Zc M1ZcM1ZcM1ZcNVZcdTA2MDBcblZcM1ZcM1ZcN1ZcdTA2MDRcblZcZlZcMTZWXHUwNjANCj4gNyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDEzVlwzVlwzVlwzV1wzV1wzV1w3V1x1MDYwZVxuV1xm V1wxNldcdTA2MTFcMTNXXDNYDQo+IFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJYXDNYXDNY XDNYXDNYXDNYXDNYXDNYXDNYXDNYXDVYXHUwNjFlXG5YXDNZXDNZXDNZXDNZXDMiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJaXDNaXDNaXDNaXDNbXDdbXHUwNjI5XG5bXGZbXDE2W1x1MDYy Y1wxM1tcM1xcXDNcXFw1XFwiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MzBcblxc XDNdXDNdXDVdXHUwNjM0XG5dXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDNeXDMiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIl5cNV5cdTA2M2Zcbl5cM15cM15cM15cM15cNV5cdTA2NDVcbl5cM15cM15c M15cM15cM19cMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIl9cM19cN19cdTA2NGVcbl9c Zl9cMTZfXHUwNjUxXDEzX1wzYFwzYFwzYFwzYFwzYFwzYFw1IikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiYFx1MDY1OVxuYFwzYVwzYVwzYVwzYVwzYVwzYVwzYVwzYVw1YVx1MDY2M1xuYVwz YVwzYVwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiYVwzYVwzYVwzYVwzYVwzYVwzYVwz YVwzYVwzYlwzYlwzYlw3Ylx1MDY3M1xuYlxmYlwxNmIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDY3NlwxM2JcM2NcM2NcNWNcdTA2N2FcbmNcM2RcM2RcNWRcdTA2N2VcbmRcM2VcM2VcMyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiZVwzZVwzZVwzZVwzZVwzZVwzZVw1ZVx1MDY4OVxuZVwz ZVwzZVwzZVwzZVw1ZVx1MDY4ZlxuIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiZVwzZVwz ZVwzZVwzZVwzZVwzZlwzZlwzZlw1Zlx1MDY5OVxuZlwzZlwzZlwzZlwzZlwzZlw1IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJmXHUwNmEwXG5mXDNmXDNmXDNmXDNmXDNmXDNmXDVmXHUwNmE4XG5m XDNnXDNnXDNnXDdnXHUwNmFkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcbmdcZmdcMTZnXHUw NmIwXDEzZ1wzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaFwzaFw1aFx1MDZiYiIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlxuaFwzaVwzaVwzaVwzaVwzaVwzaVwzaVwzaVwzaVw1aVx1MDZjNlxu aVwzaVw1aVx1MDZjOSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlxuaVwzaVwzaVwzaVwz aVwzalwzalwzalw3alx1MDZkMlxualxmalwxNmpcdTA2ZDVcMTNqIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDNrXDNrXDVrXHUwNmQ5XG5rXDNsXDNsXDNsXDNsXDNsXDNsXDNsXDNsXDVs XHUwNmUzXG4iKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJsXDNsXDNsXDNsXDNsXDVsXHUw NmU5XG5sXDNsXDNsXDNsXDNsXDNsXDNsXDNsXDNsXDNsXDMiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoImxcM2xcM2xcM21cM21cM21cN21cdTA2ZmFcbm1cZm1cMTZtXHUwNmZkXDEzbVwzblwzblwz IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJuXDVuXHUwNzAyXG5uXDNvXDNvXDNvXDNvXDNvXDNv XDNvXDNvXDVvXHUwNzBjXG5vXDNvXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIm9cM29cM29c NW9cdTA3MTJcbm9cM29cM29cM29cM29cM29cM29cM29cM29cM29cM29cM29cMyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgib1w1b1x1MDcyMFxub1wzb1wzb1wzb1wzb1wzcFwzcFwzcFw3cFx1MDcy OVxucFxmcFwxNnAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDcyY1wxM3BcM3FcM3FcNXFc dTA3MzBcbnFcM3JcM3JcM3JcM3JcM3JcM3JcM3JcNXJcdTA3MzkiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcbnJcM3JcM3JcM3JcM3JcM3JcNXJcdTA3NDBcbnJcM3JcM3JcM3JcM3JcM3Nc M3NcM3NcNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoInNcdTA3NDlcbnNcZnNcMTZzXHUw NzRjXDEzc1wzdFwzdFwzdFwzdFw1dFx1MDc1MlxudFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJ1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDV1XHUwNzVjXG51XDN1XDN1XDN1XDN1XDN1XDN1XDMi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInVcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3VcM3Vc M3VcM3VcM3VcM3VcM3VcM3VcM3VcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgidVwzdVwzdVwz dVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzdVwzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJ1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1XDN1 XDN1XDN1XDN1XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInVcM3VcM3VcM3VcM3VcM3VcM3Vc M3VcM3VcM3VcM3VcM3VcM3VcNXVcdTA3YTdcbnVcM3VcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgidVx1MDdhYVxudVxmdVwxNnVcdTA3YWRcMTN1XDV1XHUwN2FmXG51XDN1XDN1XDN1XDN2XDMi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ2XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDN2XDN2 XDN2XDV2XHUwN2MwXG52XDN2XDN2XDN2XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInZcNXZc dTA3YzZcbnZcM3dcM3dcM3dcN3dcdTA3Y2JcbndcZndcMTZ3XHUwN2NlXDEzd1wzIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgieFwzeFwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVw1eVx1MDdk YVxueVwzeVwzeVwzeVwzeVwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgieVwzeVwzeVwz eVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgieVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwz eVwzeVwzeVwzeVwzeVwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgieVwzeVwzeVwzeVwz eVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgieVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwzeVwz eVw1eVx1MDgyNVxuIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgieVwzeVw3eVx1MDgyOFxu eVxmeVwxNnlcdTA4MmJcMTN5XDV5XHUwODJkXG55XDN5XDN5XDMiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJ5XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDN6XDV6XHUwODNl XG56XDN6XDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJ6XDN6XDN6XDV6XHUwODQ0XG56 XDN7XDN7XDN7XDd7XHUwODQ5XG57XGZ7XDE2e1x1MDg0YyIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlwxM3tcM3xcM3xcM31cM31cM31cM31cNX1cdTA4NTRcbn1cM35cM35cM35cM35cM35c M1wxNzciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDE3N1wzXHUwMDgwXDNcdTAwODBcM1x1 MDA4MVwzXHUwMDgxXDNcdTAwODFcM1x1MDA4MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwODFcM1x1MDA4MVw1XHUwMDgxXHUwODY1XG5cdTAwODFcM1x1MDA4MlwzXHUwMDgyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4MlwzXHUwMDgyXDVcdTAwODJcdTA4NmJcblx1MDA4 MlwzXHUwMDgzXDNcdTAwODMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDgzXDNcdTAw ODNcN1x1MDA4M1x1MDg3MVxuXHUwMDgzXGZcdTAwODNcMTZcdTAwODMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDg3NFwxM1x1MDA4M1wzXHUwMDgzXDNcdTAwODNcM1x1MDA4M1wzXHUwMDg0 XDNcdTAwODQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDg0XDNcdTAwODRcM1x1MDA4 NFwzXHUwMDg0XDdcdTAwODRcdTA4N2Zcblx1MDA4NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XGZcdTAwODRcMTZcdTAwODRcdTA4ODJcMTNcdTAwODRcM1x1MDA4NFwzXHUwMDg0XDVcdTAwODQi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg4NlxuXHUwMDg0XDNcdTAwODRcM1x1MDA4NFwz XHUwMDg0XDNcdTAwODVcM1x1MDA4NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwODVc M1x1MDA4NVwzXHUwMDg1XDNcdTAwODVcN1x1MDA4NVx1MDg5MVxuXHUwMDg1IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcZlx1MDA4NVwxNlx1MDA4NVx1MDg5NFwxM1x1MDA4NVwzXHUwMDg1XDNc dTAwODVcNVx1MDA4NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwODk4XG5cdTAwODVcM1x1 MDA4NVwzXHUwMDg1XDNcdTAwODVcM1x1MDA4NlwzXHUwMDg2IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDA4NlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4Nlw3XHUwMDg2XHUwOGEzXG5cdTAw ODYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxmXHUwMDg2XDE2XHUwMDg2XHUwOGE2XDEzXHUw MDg2XDNcdTAwODZcM1x1MDA4Nlw1XHUwMDg2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4 YWFcblx1MDA4NlwzXHUwMDg2XDNcdTAwODZcM1x1MDA4Nlw3XHUwMDg2XHUwOGFmXG4iKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDA4NlxmXHUwMDg2XDE2XHUwMDg2XHUwOGIyXDEzXHUwMDg2 XDNcdTAwODZcM1x1MDA4NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwODZcM1x1MDA4 N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4N1wzXHUwMDg3XDNcdTAwODciKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlw3XHUwMDg3XHUwOGJkXG5cdTAwODdcZlx1MDA4N1wxNlx1MDA4N1x1MDhjMFwx M1x1MDA4NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwODdcM1x1MDA4N1w1XHUwMDg3 XHUwOGM0XG5cdTAwODdcM1x1MDA4N1wzXHUwMDg3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDNcdTAwODdcN1x1MDA4N1x1MDhjOVxuXHUwMDg3XGZcdTAwODdcMTZcdTAwODdcdTA4Y2Mi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwxM1x1MDA4N1wzXHUwMDg3XDNcdTAwODdcM1x1MDA4 N1wzXHUwMDg4XDNcdTAwODhcM1x1MDA4OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw ODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODgiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFw3XHUwMDg4XHUwOGRl XG5cdTAwODhcZlx1MDA4OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDE2XHUwMDg4XHUwOGUx XDEzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFw1XHUwMDg4XHUwOGU1IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcblx1MDA4OFwzXHUwMDg4XDNcdTAwODhcM1x1MDA4OFwzXHUwMDg4XDNcdTAwODlc M1x1MDA4OSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwODlcNVx1MDA4OVx1MDhlZVxu XHUwMDg5XDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1x1MDA4YVwzXHUwMDhhXDNcdTAwOGFcM1x1MDA4YVwzXHUwMDhhXDNcdTAwOGFcM1x1MDA4YSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJc M1x1MDA4YlwzXHUwMDhiXDNcdTAwOGIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDhi XDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhiIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4YlwzXHUwMDhi XDNcdTAwOGJcM1x1MDA4YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAwOGJcdTA5MGZc blx1MDA4YlwzXHUwMDhiXDNcdTAwOGJcM1x1MDA4Y1wzXHUwMDhjIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNc M1x1MDA4YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhj XDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhj IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4Y1wzXHUwMDhjXDNcdTAwOGNcN1x1MDA4 Y1x1MDkyZFxuXHUwMDhjXGZcdTAwOGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwxNlx1MDA4 Y1x1MDkzMFwxM1x1MDA4Y1w1XHUwMDhjXHUwOTMyXG5cdTAwOGNcM1x1MDA4YyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDNcdTAwOGNcM1x1MDA4Y1wzXHUwMDhjXDVcdTAwOGNcdTA5Mzhcblx1 MDA4Y1wzXHUwMDhjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4Y1wzXHUwMDhkXDNc dTAwOGRcM1x1MDA4ZFwzXHUwMDhkXDNcdTAwOGVcM1x1MDA4ZSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDVcdTAwOGVcdTA5NDJcblx1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwzXHUw MDhlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1 MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwOGVcM1x1MDA4ZVwzXHUwMDhlXDNcdTAwOGVcM1x1MDA4ZVwzXHUwMDhlXDVcdTAwOGUiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5NTVcblx1MDA4ZVwzXHUwMDhmXDNcdTAwOGZc M1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDhm XDNcdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTYyXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAw OGZcM1x1MDA4Zlw1XHUwMDhmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTY4XG5c dTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwOTZlXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZc M1x1MDA4Zlw1XHUwMDhmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTc0XG5cdTAw OGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXHUwOTdhXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1 MDA4Zlw1XHUwMDhmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTgwXG5cdTAwOGZc M1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXHUwOTg2XG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4 Zlw1XHUwMDhmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOThjXG5cdTAwOGZcM1x1 MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1XHUwMDhmIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHUwOTkyXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOGZcM1x1MDA4Zlw1 XHUwMDhmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5OThcblx1MDA4Zlw1XHUwMDhmXHUw OTlhXG5cdTAwOGZcM1x1MDA4Zlw3XHUwMDhmXHUwOTlkIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXG5cdTAwOGZcZlx1MDA4ZlwxNlx1MDA4Zlx1MDlhMFwxM1x1MDA4Zlw1XHUwMDhmXHUw OWEyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXG5cdTAwOGZcM1x1MDA4ZlwzXHUwMDhm XDdcdTAwOGZcdTA5YTZcblx1MDA4ZlxmXHUwMDhmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDE2XHUwMDhmXHUwOWE5XDEzXHUwMDhmXDNcdTAwOGZcNVx1MDA4Zlx1MDlhY1xuXHUwMDhm IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDA4ZlwzXHUwMDhmXDNcdTAwOTBcM1x1MDA5 MFwzXHUwMDkwXDNcdTAwOTBcM1x1MDA5MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAw OTBcdTA5YjVcblx1MDA5MFwzXHUwMDkwXDNcdTAwOTBcN1x1MDA5MFx1MDliOVxuIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAwOTBcZlx1MDA5MFwxNlx1MDA5MFx1MDliY1wxM1x1MDA5MFwz XHUwMDkwXDNcdTAwOTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDkwXDNcdTAwOTFc M1x1MDA5MVwzXHUwMDkxXDNcdTAwOTJcM1x1MDA5MlwzXHUwMDkzIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDA5M1wzXHUwMDkzXDdcdTAwOTNcdTA5Yzlcblx1MDA5M1xmXHUwMDkzXDE2 XHUwMDkzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5Y2NcMTNcdTAwOTNcM1x1MDA5NFwz XHUwMDk0XDNcdTAwOTRcN1x1MDA5NFx1MDlkMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXG5c dTAwOTRcZlx1MDA5NFwxNlx1MDA5NFx1MDlkNFwxM1x1MDA5NFwzXHUwMDk1XDNcdTAwOTUiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMDk1XDdcdTAwOTVcdTA5ZDlcblx1MDA5NVxmXHUw MDk1XDE2XHUwMDk1XHUwOWRjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMTNcdTAwOTVcM1x1 MDA5NlwzXHUwMDk2XDNcdTAwOTZcN1x1MDA5Nlx1MDllMVxuXHUwMDk2IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcZlx1MDA5NlwxNlx1MDA5Nlx1MDllNFwxM1x1MDA5NlwzXHUwMDk3XDNcdTAw OTdcM1x1MDA5NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAwOTdcdTA5ZTlcblx1MDA5 N1xmXHUwMDk3XDE2XHUwMDk3XHUwOWVjXDEzXHUwMDk3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcM1x1MDA5OFwzXHUwMDk4XDdcdTAwOThcdTA5ZjBcblx1MDA5OFxmXHUwMDk4XDE2XHUwMDk4 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZjNcMTNcdTAwOThcM1x1MDA5OVwzXHUwMDk5 XDNcdTAwOTlcM1x1MDA5OVw1XHUwMDk5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5Zjlc blx1MDA5OVwzXHUwMDlhXDNcdTAwOWFcN1x1MDA5YVx1MDlmZFxuXHUwMDlhXGYiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDA5YVwxNlx1MDA5YVx1MGEwMFwxM1x1MDA5YVwzXHUwMDliXDNc dTAwOWJcM1x1MDA5YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWJcM1x1MDA5Ylwz XHUwMDliXDNcdTAwOWJcM1x1MDA5Ylw1XHUwMDliXHUwYTBhIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcblx1MDA5YlwzXHUwMDljXDNcdTAwOWNcN1x1MDA5Y1x1MGEwZVxuXHUwMDljXGZcdTAw OWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwxNlx1MDA5Y1x1MGExMVwxM1x1MDA5Y1wzXHUw MDlkXDNcdTAwOWRcM1x1MDA5ZFwzXHUwMDlkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1 MDA5ZFx1MGExN1xuXHUwMDlkXDNcdTAwOWVcM1x1MDA5ZVw3XHUwMDllXHUwYTFiXG4iKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDA5ZVxmXHUwMDllXDE2XHUwMDllXHUwYTFlXDEzXHUwMDll XDNcdTAwOWZcM1x1MDA5ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwOWZcM1x1MDA5 Zlw1XHUwMDlmXHUwYTI0XG5cdTAwOWZcM1x1MDBhMFwzXHUwMGEwIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcN1x1MDBhMFx1MGEyOFxuXHUwMGEwXGZcdTAwYTBcMTZcdTAwYTBcdTBhMmJcMTNc dTAwYTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGExXDNcdTAwYTFcM1x1MDBhMVwz XHUwMGExXDNcdTAwYTFcM1x1MDBhMVw1XHUwMGExIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTBhMzNcblx1MDBhMVwzXHUwMGEyXDNcdTAwYTJcM1x1MDBhMlw3XHUwMGEyXHUwYTM4XG4iKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBhMlxmXHUwMGEyXDE2XHUwMGEyXHUwYTNiXDEzXHUw MGEyXDNcdTAwYTJcM1x1MDBhMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYTNcM1x1 MDBhM1wzXHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTMiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzXHUwMGEzXDNcdTAwYTNcM1x1MDBhM1wzXHUwMGEzXDNcdTAwYTNcNVx1 MDBhM1x1MGE0YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXG5cdTAwYTNcM1x1MDBhNFwzXHUw MGE0XDNcdTAwYTRcM1x1MDBhNFwzXHUwMGE0XDNcdTAwYTQiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwzXHUwMGE0XDNcdTAwYTVcM1x1MDBhNVwzXHUwMGE1XDNcdTAwYTVcM1x1MDBhNVwzXHUw MGE1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhNVwzXHUwMGE2XDNcdTAwYTZcM1x1 MDBhNlwzXHUwMGE2XDNcdTAwYTZcM1x1MDBhNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwYTZcM1x1MDBhNlwzXHUwMGE2XDNcdTAwYTdcM1x1MDBhN1wzXHUwMGE3XDNcdTAwYTciKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGE4XDNcdTAwYThcM1x1MDBhOFwzXHUwMGE4XDNc dTAwYThcM1x1MDBhOFwzXHUwMGE4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhOFwz XHUwMGE4XDNcdTAwYThcM1x1MDBhOFw1XHUwMGE4XHUwYTczXG5cdTAwYTgiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzXHUwMGE5XDNcdTAwYTlcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFcM1x1 MDBhYVwzXHUwMGFhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhYVwzXHUwMGFhXDNc dTAwYWFcM1x1MDBhYVwzXHUwMGFhXDNcdTAwYWFcM1x1MDBhYSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDNcdTAwYWFcM1x1MDBhYVwzXHUwMGFhXDVcdTAwYWFcdTBhODZcblx1MDBhYVwzXHUw MGFiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcM1x1 MDBhYlwzXHUwMGFiXDNcdTAwYWJcM1x1MDBhYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc dTAwYWJcM1x1MDBhYlwzXHUwMGFiXDNcdTAwYWJcNVx1MDBhYlx1MGE5NFxuXHUwMGFiIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1wzXHUw MGFjXDNcdTAwYWNcM1x1MDBhYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYWNcM1x1 MDBhY1wzXHUwMGFjXDNcdTAwYWNcM1x1MDBhY1w1XHUwMGFjXHUwYWEyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcblx1MDBhY1wzXHUwMGFkXDNcdTAwYWRcM1x1MDBhZFwzXHUwMGFkXDZcdTAw YWRcdTBhYTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxuXHUwMGFkXHJcdTAwYWRcMTZcdTAw YWRcdTBhYTlcM1x1MDBhZVwzXHUwMGFlXDNcdTAwYWUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXHUwMGFlXDNcdTAwYWVcM1x1MDBhZVwzXHUwMGFlXDdcdTAwYWVcdTBhYjNcblx1MDBhZSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXGZcdTAwYWVcMTZcdTAwYWVcdTBhYjZcMTNcdTAwYWVc NVx1MDBhZVx1MGFiOFxuXHUwMGFlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAw YWZcM1x1MDBhZlwzXHUwMGFmXDNcdTAwYWZcNVx1MDBhZlx1MGFiZVxuXHUwMGFmIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiMFwzXHUwMGIwXDNcdTAwYjBcM1x1MDBiMFwzXHUwMGIw XDNcdTAwYjFcM1x1MDBiMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjFcM1x1MDBi MVwzXHUwMGIxXDNcdTAwYjJcM1x1MDBiMlwzXHUwMGIyXDNcdTAwYjIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXHUwMGIyXDNcdTAwYjJcM1x1MDBiMlw1XHUwMGIyXHUwYWQxXG5cdTAwYjJc M1x1MDBiMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYjJcM1x1MDBiM1wzXHUwMGIz XDNcdTAwYjRcM1x1MDBiNFwzXHUwMGI0XDNcdTAwYjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwzXHUwMGI0XDNcdTAwYjVcM1x1MDBiNVwzXHUwMGI2XDNcdTAwYjZcM1x1MDBiNlwzXHUwMGI2 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiNlwzXHUwMGI2XDNcdTAwYjZcNVx1MDBi Nlx1MGFlNVxuXHUwMGI2XDNcdTAwYjYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGI2 XDNcdTAwYjdcM1x1MDBiN1wzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBiOFwzXHUwMGI4XDNcdTAwYjhcM1x1MDBiOFwzXHUwMGI4 XDNcdTAwYjhcNVx1MDBiOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWY1XG5cdTAwYjhc M1x1MDBiOVwzXHUwMGI5XDNcdTAwYjlcM1x1MDBiOVwzXHUwMGI5IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmFcM1x1MDBiYVwzXHUwMGJhXDNcdTAwYmJc M1x1MDBiYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJi XDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAwYmINCj4gIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcNVx1MDBiYlx1MGIwYVxuXHUwMGJiXDNcdTAwYmJcM1x1MDBiYlwzXHUwMGJiXDNcdTAw YmIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGJiXDVcdTAwYmJcdTBiMTFcblx1MDBi YlwzXHUwMGJiXDNcdTAwYmJcM1x1MDBiYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAw YmNcM1x1MDBiY1wzXHUwMGJjXDNcdTAwYmNcM1x1MDBiY1wzXHUwMGJkXDNcdTAwYmQiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGJkXDNcdTAwYmRcM1x1MDBiZFwzXHUwMGJlXDNcdTAw YmVcM1x1MDBiZVwzXHUwMGJlDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYmVc NVx1MDBiZVx1MGIyNVxuXHUwMGJlXDNcdTAwYmVcM1x1MDBiZVwzXHUwMGJlIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDBiZVwzXHUwMGJmXDNcdTAwYmZcM1x1MDBiZlwzXHUwMGJmXDNc dTAwYmZcM1x1MDBjMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYzBcM1x1MDBjMFwz XHUwMGMwXDNcdTAwYzBcM1x1MDBjMVwzXHUwMGMxXDNcdTAwYzEiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMGMxXDNcdTAwYzFcM1x1MDBjMlwzXHUwMGMyXDNcdTAwYzJcM1x1MDBjMlwz XHUwMGMyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjMlwzXHUwMGMyXDVcdTAwYzJc dTBiNDFcblx1MDBjMlwzXHUwMGMyXDNcdTAwYzIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMGMyXDNcdTAwYzJcM1x1MDBjM1wzXHUwMGMzXDNcdTAwYzNcM1x1MDBjM1wzXHUwMGMzIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDBjM1x1MGI0Y1xuXHUwMGMzXDNcdTAwYzRcM1x1 MDBjNFwzXHUwMGM0XDNcdTAwYzQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXHUwMGM0XDNc dTAwYzRcM1x1MDBjNFwzXHUwMGM0XDNcdTAwYzRcM1x1MDBjNVwzXHUwMGM1IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcN1x1MDBjNVx1MGI1Y1xuXHUw MGM1XGZcdTAwYzUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwxNlx1MDBjNVx1MGI1ZlwxM1x1 MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM1IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1x1MDBjNVwzXHUwMGM1XDNcdTAwYzVcM1x1MDBjNVwzXHUwMGM2XDNcdTAwYzZcM1x1 MDBjNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNc dTAwYzdcM1x1MDBjN1wzXHUwMGM3XDNcdTAwYzciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XHUwMGM3XDNcdTAwYzhcM1x1MDBjOFwzXHUwMGM4XDNcdTAwYzhcM1x1MDBjOFwzXHUwMGM4IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1x1MDBjOFwzXHUwMGM4XDNcdTAwYzhcM1x1MDBjOVwz XHUwMGM5XDNcdTAwYzlcM1x1MDBjOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYzlc M1x1MDBjOVwzXHUwMGM5XDdcdTAwYzlcdTBiODRcblx1MDBjOVxmXHUwMGM5IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMTZcdTAwYzlcdTBiODdcMTNcdTAwYzlcM1x1MDBjOVwzXHUwMGM5XDNc dTAwYzlcM1x1MDBjOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcdTAwYzlcM1x1MDBjOVwz XHUwMGM5XDNcdTAwYzlcM1x1MDBjYVwzXHUwMGNhXDNcdTAwY2IiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiXDNcdTAwY2JcM1x1MDBjYlwz XHUwMGNiIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcdTAwY2JcN1x1MDBjYlx1MGI5 Y1xuXHUwMGNiXGZcdTAwY2JcMTZcdTAwY2JcdTBiOWYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcMTNcdTAwY2JcM1x1MDBjYlwzXHUwMGNiXDNcdTAwY2JcMlwyXHUwMGNjXDJcNFw2XGJc biIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlxmXDE2XDIwXDIyXDI0XDI2XDMwXDMyXDM0 XDM2IFwiJCYoKiwuXDYwXDYyXDY0XDY2ODo8IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCI+QEJE RkhKTE5QUlRWWFpcXF5gYmRmaGpsbnBydHZ4enx+XHUwMDgwXHUwMDgyXHUwMDg0XHUwMA0KPiA4 NiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMDg4XHUwMDhhXHUwMDhjXHUwMDhlXHUwMDkw XHUwMDkyXHUwMDk0XHUwMDk2XHUwMDk4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwOWFc dTAwOWNcdTAwOWVcdTAwYTBcdTAwYTJcdTAwYTRcdTAwYTZcdTAwYThcdTAwYWEiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDBhY1x1MDBhZVx1MDBiMFx1MDBiMlx1MDBiNFx1MDBiNlx1MDBi OFx1MDBiYVx1MDBiYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGJlXHUwMGMwXHUwMGMy XHUwMGM0XHUwMGM2XHUwMGM4XHUwMGNhXHUwMGNjXHUwMGNlIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTAwZDBcdTAwZDJcdTAwZDRcdTAwZDZcdTAwZDhcdTAwZGFcdTAwZGNcdTAwZGVcdTAw ZTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBlMlx1MDBlNFx1MDBlNlx1MDBlOFx1MDBl YVx1MDBlY1x1MDBlZVx1MDBmMFx1MDBmMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGY0 XHUwMGY2XHUwMGY4XHUwMGZhXHUwMGZjXHUwMGZlXHUwMTAwXHUwMTAyXHUwMTA0IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAxMDZcdTAxMDhcdTAxMGFcdTAxMGNcdTAxMGVcdTAxMTBcdTAx MTJcdTAxMTRcdTAxMTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDExOFx1MDExYVx1MDEx Y1x1MDExZVx1MDEyMFx1MDEyMlx1MDEyNFx1MDEyNlx1MDEyOCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMTJhXHUwMTJjXHUwMTJlXHUwMTMwXHUwMTMyXHUwMTM0XHUwMTM2XHUwMTM4XHUw MTNhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxM2NcdTAxM2VcdTAxNDBcdTAxNDJcdTAx NDRcdTAxNDZcdTAxNDhcdTAxNGFcdTAxNGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE0 ZVx1MDE1MFx1MDE1Mlx1MDE1NFx1MDE1Nlx1MDE1OFx1MDE1YVx1MDE1Y1x1MDE1ZSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwMTYwXHUwMTYyXHUwMTY0XHUwMTY2XHUwMTY4XHUwMTZhXHUw MTZjXHUwMTZlXHUwMTcwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxNzJcdTAxNzRcdTAx NzZcdTAxNzhcdTAxN2FcdTAxN2NcdTAxN2VcdTAxODBcdTAxODIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDE4NFx1MDE4Nlx1MDE4OFx1MDE4YVx1MDE4Y1x1MDE4ZVx1MDE5MFx1MDE5Mlx1 MDE5NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMjBcM1wyXDRcNVw0XDJcdTAwYWNcdTAw YjJcdTAwZmFcdTAwZmFcNFwyXHUwMGIzXHUwMGI2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAwZmFcdTAwZmFcNFwyXG5cblx1MDBmYVx1MDBmYVw1XDJcdTAwYjdcdTAwYjlcdTAwYmQiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBiZlx1MDBmYVx1MDBmYVw0XDJcdTAwYmFcdTAwYmZc dTAwZmFcdTAwZmFcM1wyXHUwMDg1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwODZcM1wy XHUwMDhhXHUwMDhjXDNcMlJWXDNcMlx1MDBmYVx1MDBmYlwzXDJcdTAwZWYiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcdTAwZjJcNFwyXHUwMGQzXHUwMGQ5XHUwMGZhXHUwMGZhXDNcMlx1 MDBmNlx1MDBmN1wzXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZjhcdTAwZmFc Mlx1MGM2ZVwyXHUwMTliXDNcMlwyXDJcNFx1MDFhMFwzXDJcMlwyXDYiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcdTAxYTJcM1wyXDJcMlxiXHUwMWFjXDNcMlwyXDJcblx1MDFhZVwzXDJc MlwyXGZcdTAxYjkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlwxNlx1MDFj YlwzXDJcMlwyXDIwXHUwMWVjXDNcMlwyXDJcMjJcdTAxZWZcMyIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlwyXDJcMlwyNFx1MDFmOFwzXDJcMlwyXDI2XHUwMjAxXDNcMlwyXDJcMzBcdTAy MGFcM1wyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwzMlx1MDIxM1wzXDJcMlwy XDM0XHUwMjFjXDNcMlwyXDJcMzZcdTAyMjVcM1wyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcMg0KPiBcdTAyMmVcM1wyXDJcMlwiXHUwMjM3XDNcMlwyXDIkXHUwMjQwXDNcMlwyXDIm XHUwMjQ5IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDIoXHUwMjUxXDNcMlwy XDIqXHUwMjU5XDNcMlwyXDIsXHUwMjYxXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ii5cdTAyNjlcM1wyXDJcMlw2MFx1MDI5NVwzXDJcMlwyXDYyXHUwMmEyXDNcMlwyXDJcNjRcdTAy YWEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlw2Nlx1MDJhY1wzXDJcMlwy OFx1MDJiMVwzXDJcMlwyOlx1MDJiZVwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDI8 XHUwMmMwXDNcMlwyXDI+XHUwMmQxXDNcMlwyXDJAXHUwMmYzXDNcMlwyXDJCXHUwMzJkIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJEXHUwMzJmXDNcMlwyXDJGXHUwMzQ4XDNc MlwyXDJIXHUwMzRmXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIkpcdTAzNTZcM1wy XDJcMkxcdTAzNjZcM1wyXDJcMk5cdTAzNzZcM1wyXDJcMlBcdTAzN2JcMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlwyUlx1MDM4MlwzXDJcMlwyVFx1MDM5MVwzXDJcMlwyVlx1MDNhN1wz XDJcMlwyWFx1MDNiNSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyWlx1MDNl M1wzXDJcMlwyXFxcdTAzZTVcM1wyXDJcMl5cdTAzZWNcM1wyXDJcMiIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoImBcdTAzZjBcM1wyXDJcMmJcdTAzZjJcM1wyXDJcMmRcdTAzZmFcM1wyXDJc MmZcdTA0MWVcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyaFx1MDQyMFwzXDJcMlwy alx1MDQzZlwzXDJcMlwybFx1MDQ0MlwzXDJcMlwyblx1MDQ0NSIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwycFx1MDQ0ZlwzXDJcMlwyclx1MDQ1MVwzXDJcMlwydFx1MDQ3Nlwz XDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ2XHUwNDc4XDNcMlwyXDJ4XHUwNDgwXDNc MlwyXDJ6XHUwNDgyXDNcMlwyXDJ8XHUwNGIzXDMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcMlwyXDJ+XHUwNGI3XDNcMlwyXDJcdTAwODBcdTA0YjlcM1wyXDJcMlx1MDA4Mlx1MDRmZSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwODRcdTA1MDhcM1wyXDJcMlx1MDA4 Nlx1MDUwYVwzXDJcMlwyXHUwMDg4IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTFm XDNcMlwyXDJcdTAwOGFcdTA1MmNcM1wyXDJcMlx1MDA4Y1x1MDUyZVwzXDJcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAwOGVcdTA1NDlcM1wyXDJcMlx1MDA5MFx1MDU2NFwzXDJcMlwy XHUwMDkyXHUwNTZjXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDA5NFx1MDU3 MVwzXDJcMlwyXHUwMDk2XHUwNTc5XDNcMlwyXDJcdTAwOThcdTA1N2UiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXDJcMlwyXHUwMDlhXHUwNTk0XDNcMlwyXDJcdTAwOWNcdTA1OWVcM1wyXDJc Mlx1MDA5ZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWE4XDNcMlwyXDJcdTAwYTBcdTA1 YWFcM1wyXDJcMlx1MDBhMlx1MDVjMFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAwYTRcdTA1ZDZcM1wyXDJcMlx1MDBhNlx1MDVlNlwzXDJcMlwyXHUwMGE4XHUwNWVhXDMiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDBhYVx1MDVlY1wzXDJcMlwyXHUwMGFjXHUw NjBhXDNcMlwyXDJcdTAwYWVcdTA2MWQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwy XHUwMGIwXHUwNjFmXDNcMlwyXDJcdTAwYjJcdTA2MjNcM1wyXDJcMlx1MDBiNCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNjJhXDNcMlwyXDJcdTAwYjZcdTA2MmZcM1wyXDJcMlx1MDBiOFx1 MDYzM1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYmFcdTA2MzVcM1wyXDJc Mlx1MDBiY1x1MDY0YVwzXDJcMlwyXHUwMGJlXHUwNjU4XDMiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwyXDJcMlx1MDBjMFx1MDY1YVwzXDJcMlwyXHUwMGMyXHUwNjZmXDNcMlwyXDJcdTAwYzRc dTA2NzkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDBjNlx1MDY3ZFwz XDJcMlwyXHUwMGM4XHUwNjdmXDNcMlwyXDJcdTAwY2EiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDY5NVwzXDJcMlwyXHUwMGNjXHUwNmE5XDNcMlwyXDJcdTAwY2VcdTA2YmFcM1wyXDJcMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGQwXHUwNmJjXDNcMlwyXDJcdTAwZDJcdTA2Y2Vc M1wyXDJcMlx1MDBkNFx1MDZkOFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAw ZDZcdTA2ZGFcM1wyXDJcMlx1MDBkOFx1MDZmNlwzXDJcMlwyXHUwMGRhXHUwNzAxDQo+ICIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAwZGNcdTA3MDNcM1wyXDJcMlx1MDBkZVx1 MDcyNVwzXDJcMlwyXHUwMGUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3MmZcM1wyXDJc Mlx1MDBlMlx1MDczMVwzXDJcMlwyXHUwMGU0XHUwNzQ1XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDBlNlx1MDc1MVwzXDJcMlwyXHUwMGU4XHUwNzUzXDNcMlwyXDJcdTAwZWFc dTA3YjNcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMGVjXHUwN2M3XDNcMlwy XDJcdTAwZWVcdTA3Y2ZcM1wyXDJcMlx1MDBmMFx1MDdkMSIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXHUwMGYyXHUwODMxXDNcMlwyXDJcdTAwZjRcdTA4NDVcM1wyXDJcMlx1 MDBmNiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDg0ZFwzXDJcMlwyXHUwMGY4XHUw ODUzXDNcMlwyXDJcdTAwZmFcdTA4NTVcM1wyXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlx1MDBmY1x1MDg1YVwzXDJcMlwyXHUwMGZlXHUwODVjXDNcMlwyXDJcdTAxMDBcdTA4NjRc MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTAyXHUwODZhXDNcMlwyXDJcdTAx MDRcdTA4NmNcM1wyXDJcMlx1MDEwNlx1MDg3OCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwMTA4XHUwODhhXDNcMlwyXDJcdTAxMGFcdTA4OWNcM1wyXDJcMlx1MDEwYyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGI2XDNcMlwyXDJcdTAxMGVcdTA4ZDBcM1wyXDJc Mlx1MDExMFx1MDhlZFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMTJcdTA4 ZWZcM1wyXDJcMlx1MDExNFx1MDhmOVwzXDJcMlwyXHUwMTE2XHUwOTEyXDMiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwyXDJcMlx1MDExOFx1MDkzYlwzXDJcMlwyXHUwMTFhXHUwOTNmXDNcMlwy XDJcdTAxMWNcdTA5NTYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDEx ZVx1MDlhZlwzXDJcMlwyXHUwMTIwXHUwOWMwXDNcMlwyXDJcdTAxMjIiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcdTA5YzNcM1wyXDJcMlx1MDEyNFx1MDljNVwzXDJcMlwyXHUwMTI2XHUw OWNkXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDEyOFx1MDlkNVwzXDJcMlwy XHUwMTJhXHUwOWRkXDNcMlwyXDJcdTAxMmNcdTA5ZTVcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDJcMlwyXHUwMTJlXHUwOWVkXDNcMlwyXDJcdTAxMzBcdTA5ZjhcM1wyXDJcMlx1MDEzMlx1 MDlmYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxMzRcdTBhMDlcM1wyXDJc Mlx1MDEzNlx1MGEwYlwzXDJcMlwyXHUwMTM4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBh MTZcM1wyXDJcMlx1MDEzYVx1MGExOFwzXDJcMlwyXHUwMTNjXHUwYTIzXDNcMlwyXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDEzZVx1MGEyNVwzXDJcMlwyXHUwMTQwXHUwYTMyXDNcMlwy XDJcdTAxNDJcdTBhMzlcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTQ0XHUw YTRhXDNcMlwyXDJcdTAxNDZcdTBhNGNcM1wyXDJcMlx1MDE0OFx1MGE1MyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxNGFcdTBhNWFcM1wyXDJcMlx1MDE0Y1x1MGE2M1wzXDJc MlwyXHUwMTRlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhNzJcM1wyXDJcMlx1MDE1MFx1 MGE3NFwzXDJcMlwyXHUwMTUyXHUwYTc2XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDE1NFx1MGE4N1wzXDJcMlwyXHUwMTU2XHUwYTk1XDNcMlwyXDJcdTAxNThcdTBhYTNcMyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMTVhXHUwYWI3XDNcMlwyXDJcdTAxNWNc dTBhYjlcM1wyXDJcMlx1MDE1ZVx1MGFiZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwz XDJcMlwyXHUwMTYwXHUwYWM0XDNcMlwyXDJcdTAxNjJcdTBhYzlcM1wyXDJcMlx1MDE2NCIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWQ0XDNcMlwyXDJcdTAxNjZcdTBhZDZcM1wyXDJcMlx1 MDE2OFx1MGFkYlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxNmFcdTBhZGRc M1wyXDJcMlx1MDE2Y1x1MGFlOFwzXDJcMlwyXHUwMTZlXHUwYWY0XDMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXDJcMlx1MDE3MFx1MGFmNlwzXDJcMlwyXHUwMTcyXHUwYWZiXDNcMlwyXDJc dTAxNzRcdTBiMDAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMTc2XHUwYjE1 XDNcMlwyXDJcdTAxNzhcdTBiMWFcM1wyXDJcMlx1MDE3YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwYjFmXDNcMlwyXDJcdTAxN2NcdTBiMmFcM1wyXDJcMlx1MDE3ZVx1MGIyZlwzXDJcMlwy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxODBcdTBiMzRcM1wyXDJcMlx1MDE4Mlx1MGIz OVwzXDJcMlwyXHUwMTg0XHUwYjRiXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDE4Nlx1MGI0ZFwzXDJcMlwyXHUwMTg4XHUwYjU2XDNcMlwyXDJcdTAxOGFcdTBiNjgNCj4gIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDE4Y1x1MGI2YVwzXDJcMlwyXHUwMThl XHUwYjczXDNcMlwyXDJcdTAxOTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGI3Y1wzXDJc MlwyXHUwMTkyXHUwYjkwXDNcMlwyXDJcdTAxOTRcdTBiOTJcM1wyXDJcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMTk2XHUwMTlhXDVcblw2XDJcdTAxOTdcdTAxOWFcNVxmXDdcMlx1MDE5 OFx1MDE5YVw1IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDE2XGJcMlx1MDE5OVx1MDE5 NlwzXDJcMlwyXHUwMTk5XHUwMTk3XDNcMlwyXDJcdTAxOTkiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDE5OFwzXDJcMlwyXHUwMTlhXHUwMTlkXDNcMlwyXDJcdTAxOWJcdTAxOTlcM1wyXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTliXHUwMTljXDNcMlwyXDJcdTAxOWNcdTAx OWVcM1wyXDJcMlx1MDE5ZFx1MDE5YlwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJc MlwyXHUwMTllXHUwMTlmXDUuXDMwXDJcdTAxOWZcM1wzXDJcMlwyXHUwMWEwXHUwMWExIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcN1wzXDJcMlx1MDFhMVw1XDNcMlwyXDJcdTAxYTJcdTAxYTVc dFwyXDJcMlx1MDFhM1x1MDFhNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDFh NFx1MDFhNlw3XHUwMGZiXDJcMlx1MDFhNVx1MDFhM1wzXDJcMlwyXHUwMWE1IikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwMWE2XDNcMlwyXDJcdTAxYTZcdTAxYTlcM1wyXDJcMlx1MDFh N1x1MDFhOFw3IVwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFhOFx1MDFhYVw3XHUw MGZhXDJcMlx1MDFhOVx1MDFhN1wzXDJcMlwyXHUwMWE5XHUwMWFhIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDFhYVw3XDNcMlwyXDJcdTAxYWJcdTAxYWRcN1x1MDBmYVwyXDJc dTAxYWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFhYlwzXDJcMlwyXHUwMWFjXHUwMWFk XDNcMlwyXDJcdTAxYWRcdFwzXDJcMlwyXHUwMWFlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMWFmXDdcNlwyXDJcdTAxYWZcdTAxYjBcN1w3XDJcMlx1MDFiMFx1MDFiNFw3XDMwXDIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwMWIxXHUwMWI1XDVcNFwzXDJcdTAxYjJcdTAx YjVcNVw2XDRcMlx1MDFiM1x1MDFiNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcYlw1XDJc dTAxYjRcdTAxYjFcM1wyXDJcMlx1MDFiNFx1MDFiMlwzXDJcMlwyXHUwMWI0IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTAxYjNcM1wyXDJcMlx1MDFiNFx1MDFiNVwzXDJcMlwyXHUwMWI1XHUw MWI2XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFiNlx1MDFiN1w3XDMxXDJc Mlx1MDFiN1wxM1wzXDJcMlwyXHUwMWI4XHUwMWJhXDdcdTAwODQNCj4gIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlwyXHUwMWI5XHUwMWI4XDNcMlwyXDJcdTAxYjlcdTAxYmFcM1wyXDJcMlx1 MDFiYVx1MDFiYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxYmJcdTAxYmRc N1BcMlwyXHUwMWJjXHUwMWJlXDdPXDJcMlx1MDFiZFx1MDFiDQo+IGMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXDJcMlwyXHUwMWJkXHUwMWJlXDNcMlwyXDJcdTAxYmVcdTAxYzBcM1wyXDJc Mlx1MDFiZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDFjMVw3XHUwMGZiXDJcMlx1 MDFjMFx1MDFiZlwzXDJcMlwyXHUwMWMwXHUwMWMxXDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDJcMlx1MDFjMVx1MDFjMlwzXDJcMlwyXHUwMWMyXHUwMWMzXDdcMjZcMlwyXHUwMWMzXHUw MWM0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDVcMjBcdFwyXHUwMWM0XHUwMWM2XDdc MjdcMlwyXHUwMWM1XHUwMWM3XDdcdTAwZmJcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwMWM2XHUwMWM1XDNcMlwyXDJcdTAxYzZcdTAxYzdcM1wyXDJcMlx1MDFjN1x1MDFjOFwz IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwMWM4XHUwMWM5XDcgXDJcMlx1 MDFjOVxyXDNcMlwyXDJcdTAxY2FcdTAxY2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUw MDg0XDJcMlx1MDFjYlx1MDFjYVwzXDJcMlwyXHUwMWNiXHUwMWNjXDNcMlwyXDJcdTAxY2MiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFjZFwzXDJcMlwyXHUwMWNkXHUwMWNmXDdRXDJcMlx1 MDFjZVx1MDFkMFw3T1wyXDJcdTAxY2YNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAx Y2VcM1wyXDJcMlx1MDFjZlx1MDFkMFwzXDJcMlwyXHUwMWQwXHUwMWQyXDNcMlwyXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDFkMVx1MDFkM1w3XHUwMGZiXDJcMlx1MDFkMlx1MDFkMVwz XDJcMlwyXHUwMWQyXHUwMWQzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDFk M1x1MDFkNFwzXDJcMlwyXHUwMWQ0XHUwMWQ1XDdcMjZcMlwyXHUwMWQ1IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAxZDZcNVwyMFx0XDJcdTAxZDZcdTAxZDhcN1wyN1wyXDJcdTAxZDdcdTAx ZDlcN1x1MDBmYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDFkOFx1MDFkN1wzXDJc MlwyXHUwMWQ4XHUwMWQ5XDNcMlwyXDJcdTAxZDlcdTAxZGEiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcM1wyXDJcMlx1MDFkYVx1MDFkYlw3DQo+IFwyXDJcdTAxZGJcMTdcM1wyXDJcMlx1 MDFkY1x1MDFlYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcMjJcblwyXHUwMWRkXHUwMWVi XDVcMjRcMTNcMlx1MDFkZVx1MDFlYlw1XDI2XGZcMlx1MDFkZg0KPiAiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDFlYlw1XDMwXHJcMlx1MDFlMFx1MDFlYlw1XDMyXDE2XDJcdTAxZTFcdTAx ZWJcNVwzNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwxN1wyXHUwMWUyXHUwMWViXDVc MzZcMjBcMlx1MDFlM1x1MDFlYlw1DQo+IFwyMVwyXHUwMWU0IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTAxZWJcNVwiXDIyXDJcdTAxZTVcdTAxZWJcNSRcMjNcMlx1MDFlNlx1MDFlYlw1Jlwy NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAxZTdcdTAxZWJcNShcMjVcMlx1MDFlOFx1 MDFlYlw1KlwyNlwyXHUwMWU5XHUwMWViIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNSxcMjdc Mlx1MDFlYVx1MDFkY1wzXDJcMlwyXHUwMWVhXHUwMWRkXDNcMlwyXDJcdTAxZWEiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDFkZVwzXDJcMlwyXHUwMWVhXHUwMWRmXDNcMlwyXDJcdTAxZWFc dTAxZTBcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWVhXHUwMWUxXDNcMlwy XDJcdTAxZWFcdTAxZTJcM1wyXDJcMlx1MDFlYVx1MDFlM1wzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcMlwyXDJcdTAxZWFcdTAxZTRcM1wyXDJcMlx1MDFlYVx1MDFlNVwzXDJcMlwyXHUwMWVh XHUwMWU2DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAxZWFcdTAxZTdc M1wyXDJcMlx1MDFlYVx1MDFlOFwzXDJcMlwyXHUwMWVhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTAxZTlcM1wyXDJcMlx1MDFlYlx1MDFlZVwzXDJcMlwyXHUwMWVjXHUwMWVhXDNcMlwyXDIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFlY1x1MDFlZFwzXDJcMlwyXHUwMWVkXDIxXDNc MlwyXDJcdTAxZWVcdTAxZWNcM1wyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1 MDFlZlx1MDFmMFw3U1wyXDJcdTAxZjBcdTAxZjRcN1x1MDBmYlwyXDJcdTAxZjEiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdTAxZjJcN1wzMlwyXDJcdTAxZjJcdTAxZjNcN1x1MDBmYVwy XDJcdTAxZjNcdTAxZjVcNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzM1wyXDJcdTAx ZjRcdTAxZjFcM1wyXDJcMlx1MDFmNFx1MDFmNVwzXDJcMlwyXHUwMWY1IikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXHUwMWY2XDNcMlwyXDJcdTAxZjZcdTAxZjdcNw0KPiBcMlwyXHUwMWY3 XDIzXDNcMlwyXDJcdTAxZjgiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAxZjlcN1Rc MlwyXHUwMWY5XHUwMWZkXDdcdTAwZmJcMlwyXHUwMWZhXHUwMWZiXDdcMzIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwyXDJcdTAxZmJcdTAxZmNcN1x1MDBmYVwyXDJcdTAxZmNcdTAxZmVcN1wz M1wyXDJcdTAxZmQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAxZmFcM1wyXDJcMlx1 MDFmZFx1MDFmZVwzXDJcMlwyXHUwMWZlXHUwMWZmXDNcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTAxZmZcdTAyMDBcNyBcMlwyXHUwMjAwXDI1XDNcMlwyXDJcdTAyMDFcdTAy MDJcN1VcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwMjAyXHUwMjA2XDdcdTAw ZmJcMlwyXHUwMjAzXHUwMjA0XDdcMzJcMlwyXHUwMjA0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXHUwMjA1XDdcdTAwZmFcMlwyXHUwMjA1XHUwMjA3XDdcMzNcMlwyXHUwMjA2XHUwMjAz XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDIwNlx1MDIwN1wzXDJcMlwyXHUw MjA3XHUwMjA4XDNcMlwyXDJcdTAyMDhcdTAyMDkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcNw0KPiBcMlwyXHUwMjA5XDI3XDNcMlwyXDJcdTAyMGFcdTAyMGJcN1ZcMlwyXHUwMjBiXHUw MjBmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmJcMlwyXHUwMjBjXHUwMjBk XDdcMzJcMlwyXHUwMjBkXHUwMjBlXDdcdTAwZmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwy XDJcdTAyMGVcdTAyMTBcN1wzM1wyXDJcdTAyMGZcdTAyMGNcM1wyXDJcMlx1MDIwZlx1MDIxMCIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMjEwXHUwMjExXDNcMlwyXDJc dTAyMTFcdTAyMTJcNyBcMlwyXHUwMjEyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMzFcM1wy XDJcMlx1MDIxM1x1MDIxNFw3UlwyXDJcdTAyMTRcdTAyMThcN1x1MDBmYlwyXDIiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDIxNVx1MDIxNlw3XDMyXDJcMlx1MDIxNlx1MDIxN1w3XHUwMGZh XDJcMlx1MDIxN1x1MDIxOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcMzNcMlwyXHUwMjE4 XHUwMjE1XDNcMlwyXDJcdTAyMThcdTAyMTlcM1wyXDJcMlx1MDIxOSIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlx1MDIxYVwzXDJcMlwyXHUwMjFhXHUwMjFiXDcNCj4gXDJcMlx1MDIxYlwz M1wzXDJcMlwyXHUwMjFjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyMWRcN1dcMlwyXHUw MjFkXHUwMjIxXDdcdTAwZmJcMlwyXHUwMjFlXHUwMjFmXDdcMzIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwyXDJcdTAyMWZcdTAyMjBcN1x1MDBmYVwyXDJcdTAyMjBcdTAyMjJcN1wzM1wyXDJc dTAyMjEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDIxZVwzXDJcMlwyXHUwMjIxXHUwMjIy XDNcMlwyXDJcdTAyMjJcdTAyMjNcM1wyXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo Ilx1MDIyM1x1MDIyNFw3IFwyXDJcdTAyMjRcMzVcM1wyXDJcMlx1MDIyNVx1MDIyNlw3WFwyIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAyMjZcdTAyMmFcN1x1MDBmYlwyXDJcdTAy MjdcdTAyMjhcN1wzMlwyXDJcdTAyMjgiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAy MjlcN1x1MDBmYVwyXDJcdTAyMjlcdTAyMmJcN1wzM1wyXDJcdTAyMmFcdTAyMjdcMyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMjJhXHUwMjJiXDNcMlwyXDJcdTAyMmJcdTAyMmNc M1wyXDJcMlx1MDIyY1x1MDIyZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3DQo+IFwy XDJcdTAyMmRcMzdcM1wyXDJcMlx1MDIyZVx1MDIyZlw3WVwyXDJcdTAyMmZcdTAyMzMiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBmYlwyXDJcdTAyMzBcdTAyMzFcN1wzMlwyXDJc dTAyMzFcdTAyMzJcN1x1MDBmYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDIzMlx1 MDIzNFw3XDMzXDJcMlx1MDIzM1x1MDIzMFwzXDJcMlwyXHUwMjMzXHUwMjM0IikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyMzRcdTAyMzVcM1wyXDJcMlx1MDIzNVx1MDIz Nlw3IFwyXDJcdTAyMzYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIiFcM1wyXDJcMlx1MDIzN1x1 MDIzOFw3WlwyXDJcdTAyMzhcdTAyM2NcN1x1MDBmYlwyXDJcdTAyMzkiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcdTAyM2FcN1wzMlwyXDJcdTAyM2FcdTAyM2JcN1x1MDBmYVwyXDJcdTAy M2JcdTAyM2RcNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzM1wyXDJcdTAyM2NcdTAy MzlcM1wyXDJcMlx1MDIzY1x1MDIzZFwzXDJcMlwyXHUwMjNkIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHUwMjNlXDNcMlwyXDJcdTAyM2VcdTAyM2ZcNyBcMlwyXHUwMjNmI1wzXDJcMlwy XHUwMjQwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyNDFcN1x1MDBmYlwyXDJcdTAyNDFc dTAyNDVcN1x1MDBmYlwyXDJcdTAyNDJcdTAyNDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3 XDMyXDJcMlx1MDI0M1x1MDI0NFw3XHUwMGZhXDJcMlx1MDI0NFx1MDI0Nlw3XDMzXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMjQ1XHUwMjQyXDNcMlwyXDJcdTAyNDVcdTAyNDZcM1wy XDJcMlx1MDI0Nlx1MDI0N1wzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUw MjQ3XHUwMjQ4XDcNCj4gXDJcMlx1MDI0OCVcM1wyXDJcMlx1MDI0OVx1MDI0Ylw3IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJTXDJcMlx1MDI0YVx1MDI0Y1w3XHUwMGZiXDJcMlx1MDI0Ylx1MDI0 YVwzXDJcMlwyXHUwMjRiIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjRjXDNcMlwy XDJcdTAyNGNcdTAyNGRcM1wyXDJcMlx1MDI0ZFx1MDI0ZVw3XDM2XDIiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcMlx1MDI0ZVx1MDI0Zlw3XHUwMGZhXDJcMlx1MDI0Zlx1MDI1MFw3IFwy XDJcdTAyNTBcJyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAyNTFcdTAyNTNc N1RcMlwyXHUwMjUyXHUwMjU0XDdcdTAwZmJcMlwyXHUwMjUzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTAyNTJcM1wyXDJcMlx1MDI1M1x1MDI1NFwzXDJcMlwyXHUwMjU0XHUwMjU1XDNcMlwy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDI1NVx1MDI1Nlw3XDM2XDJcMlx1MDI1Nlx1 MDI1N1w3XHUwMGZhXDJcMlx1MDI1N1x1MDI1OCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo Ilw3IFwyXDJcdTAyNTgpXDNcMlwyXDJcdTAyNTlcdTAyNWJcN1VcMlwyXHUwMjVhXHUwMjVjIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBmYlwyXDJcdTAyNWJcdTAyNWFcM1wyXDJcMlx1 MDI1Ylx1MDI1Y1wzXDJcMlwyXHUwMjVjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyNWRc M1wyXDJcMlx1MDI1ZFx1MDI1ZVw3XDM2XDJcMlx1MDI1ZVx1MDI1Zlw3XHUwMGZhIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDI1Zlx1MDI2MFw3IFwyXDJcdTAyNjArXDNcMlwy XDJcdTAyNjFcdTAyNjNcN1YiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAyNjJcdTAy NjRcN1x1MDBmYlwyXDJcdTAyNjNcdTAyNjJcM1wyXDJcMlx1MDI2MyIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlx1MDI2NFwzXDJcMlwyXHUwMjY0XHUwMjY1XDNcMlwyXDJcdTAyNjVcdTAy NjZcN1wzNlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAyNjZcdTAyNjdcN1x1 MDBmYVwyXDJcdTAyNjdcdTAyNjhcNyBcMlwyXHUwMjY4LVwzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcMlwyXDJcdTAyNjlcdTAyNmFcNytcMlwyXHUwMjZhXHUwMjZiXDdbXDJcMlx1MDI2Ylx1 MDI2YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTAyNmNcdTAyNmRcNUxcJ1wy XHUwMjZkXHUwMjZlXDchXDJcMlx1MDI2ZVx1MDI2ZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDcuXDJcMlx1MDI2Zlx1MDI3MFw3XGJcMlwyXHUwMjcwXHUwMjcxXDdcdTAwZWNcMlwyXHUwMjcx IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjcyXDdcMzBcMlwyXHUwMjcyXHUwMjcz XDdcdTAwZmFcMlwyXHUwMjczXHUwMjc0XDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzMVwy XDJcdTAyNzRcdTAyNzVcNyFcMlwyXHUwMjc1XHUwMjc2XDc9XDJcMlx1MDI3Nlx1MDI3NyIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwMjc3XHUwMjc4XDdcdTAwZWNcMlwy XHUwMjc4XHUwMjc5XDdcMzBcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyNzlcdTAy N2FcN1x1MDBmYVwyXDJcdTAyN2FcdTAyN2JcN1wzMVwyXDJcdTAyN2JcdTAyODEiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTAyN2NcdTAyN2RcN1x1MDA4M1wyXDJcdTAyN2RcdTAy N2VcN1xiXDJcMlx1MDI3ZSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDI3Zlw1XDYw XDMxXDJcdTAyN2ZcdTAyODBcNyFcMlwyXHUwMjgwXHUwMjgyXDNcMlwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlx1MDI4MVx1MDI3Y1wzXDJcMlwyXHUwMjgxXHUwMjgyXDNcMlwyXDJcdTAy ODJcdTAyODgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMjgzXHUwMjg0XDdc dTAwODFcMlwyXHUwMjg0XHUwMjg1XDdcYlwyXDJcdTAyODUiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcdTAyODZcNVw2MlwzMlwyXHUwMjg2XHUwMjg3XDchXDJcMlx1MDI4N1x1MDI4OVwz XDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAyODhcdTAyODNcM1wyXDJcMlx1MDI4 OFx1MDI4OVwzXDJcMlwyXHUwMjg5XHUwMjhmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MDI4YVx1MDI4Ylw3XHUwMDgyXDJcMlx1MDI4Ylx1MDI4Y1w3XGJcMlwyXHUwMjhjIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjhkXDVcNjZcMzRcMlx1MDI4ZFx1MDI4ZVw3 IVwyXDJcdTAyOGVcdTAyOTBcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwMjhm XHUwMjhhXDNcMlwyXDJcdTAyOGZcdTAyOTBcM1wyXDJcMlx1MDI5MFx1MDI5MSIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwMjkxXHUwMjkyXDU4XDM1XDJcdTAyOTJcdTAy OTNcNy1cMlwyXHUwMjkzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMjk0XDcgXDJc Mlx1MDI5NC9cM1wyXDJcMlx1MDI5NVx1MDI5OFw1TFwnXDJcdTAyOTYiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDI5N1w3KFwyXDJcdTAyOTdcdTAyOTlcNUxcJ1wyXHUwMjk4XHUwMjk2XDNc MlwyXDJcdTAyOTgiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAyOTlcM1wyXDJcMlx1 MDI5OVx1MDI5Y1wzXDJcMlwyXHUwMjlhXHUwMjliXDcoXDJcMiIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlx1MDI5Ylx1MDI5ZFw1TFwnXDJcdTAyOWNcdTAyOWFcM1wyXDJcMlx1MDI5Y1x1 MDI5ZFwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAyOWRcdTAyYTBcM1wyXDJc Mlx1MDI5ZVx1MDI5Zlw3KFwyXDJcdTAyOWZcdTAyYTEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcNUxcJ1wyXHUwMmEwXHUwMjllXDNcMlwyXDJcdTAyYTBcdTAyYTFcM1wyXDJcMlx1MDJh MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDYxXDNcMlwyXDJcdTAyYTJcdTAyYTdcNVw2NFwz M1wyXHUwMmEzXHUwMmE0XDcoXDJcMlx1MDJhNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw MmE2XDVcNjRcMzNcMlx1MDJhNVx1MDJhM1wzXDJcMlwyXHUwMmE2XHUwMmE5XDNcMlwyIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTAyYTdcdTAyYTVcM1wyXDJcMlx1MDJhN1x1MDJh OFwzXDJcMlwyXHUwMmE4XDYzXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDJh OVx1MDJhN1wzXDJcMlwyXHUwMmFhXHUwMmFiXHRcM1wyXDJcdTAyYWJcNjUiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmFjXHUwMmFkXHRcNFwyXDJcdTAyYWRcNjdcM1wyXDJc Mlx1MDJhZVx1MDJiMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDU6XDM2XDJcdTAyYWZcdTAy YWVcM1wyXDJcMlx1MDJiMFx1MDJiM1wzXDJcMlwyXHUwMmIxIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTAyYWZcM1wyXDJcMlx1MDJiMVx1MDJiMlwzXDJcMlwyXHUwMmIyOVwzXDJcMlwyXHUw MmIzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyYjFcM1wyXDJcMlx1MDJiNFx1MDJiZlw1 ZFw2M1wyXHUwMmI1XHUwMmJmXDVoXDY1XDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc dTAyYjZcdTAyYmZcNWpcNjZcMlx1MDJiN1x1MDJiZlw1Pg0KPiBcMlx1MDJiOFx1MDJiZlw1QCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiIVwyXHUwMmI5XHUwMmJmXDVEI1wyXHUwMmJhXHUwMmJm XDU8XDM3XDJcdTAyYmJcdTAyYmYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1RiRcMlx1MDJi Y1x1MDJiZlw1SCVcMlx1MDJiZFx1MDJiZlw1XHUwMTFjXHUwMDhmXDJcdTAyYg0KPiBlIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAyYjRcM1wyXDJcMlx1MDJiZVx1MDJiNVwzXDJcMlwyXHUw MmJlXHUwMmI2XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDJiZVx1MDJiN1wz XDJcMlwyXHUwMmJlXHUwMmI4XDNcMlwyXDJcdTAyYmVcdTAyYjlcMyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcMlwyXHUwMmJlXHUwMmJhXDNcMlwyXDJcdTAyYmVcdTAyYmJcM1wyXDJcMlx1 MDJiZVx1MDJiDQo+IGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMmJlXHUw MmJkXDNcMlwyXDJcdTAyYmY7XDNcMlwyXDJcdTAyYzBcdTAyYzEiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcN1x1MDA5YlwyXDJcdTAyYzFcdTAyYzJcN1x1MDBmYlwyXDJcdTAyYzJcdTAy YzNcNyFcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAyYzNcdTAyYzRcN1w2MlwyXDJc dTAyYzRcdTAyYzVcN1xiXDJcMlx1MDJjNVx1MDJjNiIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlw3XHUwMGVjXDJcMlx1MDJjNlx1MDJjN1w3XDMwXDJcMlx1MDJjN1x1MDJjOFw3XHUwMGZh IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwMmM4XHUwMmNkXDdcMzFcMlwyXHUwMmM5 XHUwMmNhXDchXDJcMlx1MDJjYVx1MDJjYiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3 XHUwMDljXDJcMlx1MDJjYlx1MDJjY1w3XGJcMlwyXHUwMmNjXHUwMmNlXDdcdTAwZmFcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAyY2RcdTAyYzlcM1wyXDJcMlx1MDJjZFx1MDJjZVwz XDJcMlwyXHUwMmNlXHUwMmNmIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTAyY2ZcdTAyZDBcNw0KPiBcMlwyXHUwMmQwPVwzXDJcMlwyXHUwMmQxXHUwMmUyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcN1x1MDA5ZFwyXDJcdTAyZDJcdTAyZDNcN1x1MDBmYlwyXDJcdTAy ZDNcdTAyZTNcNyFcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTAyZDRcdTAyZDVcN1Zc MlwyXHUwMmQ1XHUwMmUzXDchXDJcMlx1MDJkNlx1MDJkN1w3IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJVXDJcMlx1MDJkN1x1MDJlM1w3IVwyXDJcdTAyZDhcdTAyZDlcN1RcMlwyXHUwMmQ5XHUw MmUzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwMmRhXHUwMmRiXDdTXDJcMlx1 MDJkYlx1MDJlM1w3IVwyXDJcdTAyZGNcdTAyZGQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3 WFwyXDJcdTAyZGRcdTAyZTNcNyFcMlwyXHUwMmRlXHUwMmRmXDdZXDJcMlx1MDJkZlx1MDJlMyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDJlMFx1MDJlMVw3WlwyXDJcdTAyZTFc dTAyZTNcNyFcMlwyXHUwMmUyXHUwMmQyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDJlMlx1MDJkNFwzXDJcMlwyXHUwMmUyXHUwMmQ2XDNcMlwyXDJcdTAyZTIiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDJkOFwzXDJcMlwyXHUwMmUyXHUwMmRhXDNcMlwyXDJcdTAyZTJc dTAyZGNcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMmUyXHUwMmRlXDNcMlwy XDJcdTAyZTJcdTAyZTBcM1wyXDJcMlx1MDJlM1x1MDJlOFwzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcMlwyXDJcdTAyZTRcdTAyZTVcN1x1MDA4ZlwyXDJcdTAyZTVcdTAyZTZcN1xiXDJcMlx1 MDJlNiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDJlN1w3XHUwMGZhXDJcMlx1MDJl N1x1MDJlOVw3IVwyXDJcdTAyZThcdTAyZTRcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc MlwyXHUwMmU4XHUwMmU5XDNcMlwyXDJcdTAyZTlcdTAyZWFcM1wyXDJcMlx1MDJlYVx1MDJlYiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAwOGVcMlwyXHUwMmViXHUwMmVjXDdcYlwyXDJc dTAyZWNcdTAyZWRcN1x1MDBmYlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDJlZFx1 MDJlZVw3IVwyXDJcdTAyZWVcdTAyZWZcN1tcMlwyXHUwMmVmXHUwMmYwXDciKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcYlwyXDJcdTAyZjBcdTAyZjFcNUxcJ1wyXHUwMmYxXHUwMmYyXDcg XDJcMlx1MDJmMj9cMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcMlx1MDJmM1x1 MDMwNFw3XHUwMDllXDJcMlx1MDJmNFx1MDJmNVw3XHUwMGZiXDJcMiIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlx1MDJmNVx1MDMwNVw3IVwyXDJcdTAyZjZcdTAyZjdcN1ZcMlwyXHUwMmY3 XHUwMzA1XDchIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDJmOFx1MDJmOVw3 VVwyXDJcdTAyZjlcdTAzMDVcNyFcMlwyXHUwMmZhXHUwMmZiIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcN1RcMlwyXHUwMmZiXHUwMzA1XDchXDJcMlx1MDJmY1x1MDJmZFw3U1wyXDJcdTAyZmRc dTAzMDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTAyZmVcdTAyZmZcN1hcMlwy XHUwMmZmXHUwMzA1XDchXDJcMlx1MDMwMFx1MDMwMSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDdZXDJcMlx1MDMwMVx1MDMwNVw3IVwyXDJcdTAzMDJcdTAzMDNcN1pcMlwyXHUwMzAzXHUwMzA1 IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDchXDJcMlx1MDMwNFx1MDJmNFwzXDJcMlwy XHUwMzA0XHUwMmY2XDNcMlwyXDJcdTAzMDQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc dTAyZjhcM1wyXDJcMlx1MDMwNFx1MDJmYVwzXDJcMlwyXHUwMzA0XHUwMmZjXDNcMlwyXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDMwNFx1MDJmZVwzXDJcMlwyXHUwMzA0XHUwMzAwXDNc MlwyXDJcdTAzMDRcdTAzMDJcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwMzA1 XHUwMzBhXDNcMlwyXDJcdTAzMDZcdTAzMDdcN1x1MDA4ZlwyXDJcdTAzMDciKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcdTAzMDhcN1xiXDJcMlx1MDMwOFx1MDMwOVw3XHUwMGZhXDJcMlx1 MDMwOVx1MDMwYlw3ISIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDMwYVx1MDMwNlwz XDJcMlwyXHUwMzBhXHUwMzBiXDNcMlwyXDJcdTAzMGJcdTAzMGMiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwzXDJcMlwyXHUwMzBjXHUwMzBkXDdcdTAwOWNcMlwyXHUwMzBkXHUwMzBlXDdcYlwy XDJcdTAzMGUNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzMTNcNUJcIlwyXHUwMzBm XHUwMzEwXDcoXDJcMlx1MDMxMFx1MDMxMlw1QlwiXDJcdTAzMTEiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTAzMGZcM1wyXDJcMlx1MDMxMlx1MDMxNVwzXDJcMlwyXHUwMzEzXHUwMzEx XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDMxM1x1MDMxNFwzXDJcMlwyXHUw MzE0XHUwMzE2XDNcMlwyXDJcdTAzMTVcdTAzMTNcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDJcMlwyXHUwMzE2XHUwMzI2XDchXDJcMlx1MDMxN1x1MDMxOFw3XHUwMDhlXDJcMlx1MDMxOCIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDMxOVw3XGJcMlwyXHUwMzE5XHUwMzFhXDdc dTAwZmJcMlwyXHUwMzFhXHUwMzI3XDchIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUw MzFiXHUwMzFjXDdcdTAwOGVcMlwyXHUwMzFjXHUwMzFkXDdcYlwyXDJcdTAzMWQiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdTAzMWVcN1x1MDBlY1wyXDJcdTAzMWVcdTAzMWZcN1wzMFwy XDJcdTAzMWZcdTAzMjBcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDMy MFx1MDMyMVw3XDMxXDJcMlx1MDMyMVx1MDMyMlw3IVwyXDJcdTAzMjIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDMyM1w3XHUwMDlmXDJcMlx1MDMyM1x1MDMyNFw3XGJcMlwyXHUwMzI0XHUw MzI1XDdcdTAwZmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAzMjVcdTAzMjdcNyFc MlwyXHUwMzI2XHUwMzE3XDNcMlwyXDJcdTAzMjZcdTAzMWIiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcM1wyXDJcMlx1MDMyN1x1MDMyOFwzXDJcMlwyXHUwMzI4XHUwMzI5XDdbXDJcMlx1 MDMyOSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDMyYVw3XGJcMlwyXHUwMzJhXHUw MzJiXDVMXCdcMlx1MDMyYlx1MDMyY1w3DQo+IFwyXDJcdTAzMmMiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIkFcM1wyXDJcMlx1MDMyZFx1MDMyZVw3XHUwMGZhXDJcMlx1MDMyZUNcM1wyXDJcMlx1 MDMyZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzMwXDdcdTAwYTBcMlwyXHUwMzMwXHUw MzMxXDdcdTAwZmJcMlwyXHUwMzMxXHUwMzM2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNyFc MlwyXHUwMzMyXHUwMzMzXDdcdTAwOGZcMlwyXHUwMzMzXHUwMzM0XDdcYlwyXDJcdTAzMzQiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAzMzVcN1x1MDBmYVwyXDJcdTAzMzVcdTAzMzdc NyFcMlwyXHUwMzM2XHUwMzMyXDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDMz Nlx1MDMzN1wzXDJcMlwyXHUwMzM3XHUwMzNmXDNcMlwyXDJcdTAzMzhcdTAzMzkiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3XHUwMDhlXDJcMlx1MDMzOVx1MDMzYVw3XGJcMlwyXHUwMzNhXHUw MzNiXDdcdTAwZWNcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwMzNiXHUwMzNj XDdcMzBcMlwyXHUwMzNjXHUwMzNkXDdcdTAwZmFcMlwyXHUwMzNkIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTAzM2VcN1wzMVwyXDJcdTAzM2VcdTAzNDBcNyFcMlwyXHUwMzNmXHUwMzM4XDNc MlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM0MFx1MDM0MVwzXDJcMlwyXHUwMzQx XHUwMzNmXDNcMlwyXDJcdTAzNDFcdTAzNDJcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc MlwyXHUwMzQyXHUwMzQzXDNcMlwyXDJcdTAzNDNcdTAzNDRcN1tcMlwyXHUwMzQ0XHUwMzQ1IikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTAzNDVcdTAzNDZcNUxcJ1wyXHUw MzQ2XHUwMzQ3XDcgXDJcMlx1MDM0N0UiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wy XDJcMlx1MDM0OFx1MDM0OVw3bFwyXDJcdTAzNDlcdTAzNGFcNVx1MDEyNFx1MDA5MyIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlwyXHUwMzRhXHUwMzRiXDcgXDJcMlx1MDM0Ylx1MDM0Y1w1 OFwzNVwyXHUwMzRjXHUwMzRkIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdzXDJcMlx1 MDM0ZFx1MDM0ZVw3IFwyXDJcdTAzNGVHXDNcMlwyXDJcdTAzNGZcdTAzNTAiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcN2tcMlwyXHUwMzUwXHUwMzUxXDVcdTAxMjRcdTAwOTNcMlx1MDM1 MVx1MDM1Mlw3DQo+IFwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAzNTJcdTAz NTNcNThcMzVcMlx1MDM1M1x1MDM1NFw3c1wyXDJcdTAzNTRcdTAzNTVcNyIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIg0KPiBcMlwyXHUwMzU1SVwzXDJcMlwyXHUwMzU2XHUwMzU3XDdcdTAw ZmFcMlwyXHUwMzU3XHUwMzU4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwMzU4 XHUwMzU5XDdcdTAwZmFcMlwyXHUwMzU5XHUwMzVhXDchXDJcMlx1MDM1YSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMzViXDdcdTAwZmFcMlwyXHUwMzViXHUwMzVjXDchXDJcMlx1MDM1Y1x1 MDM1ZFw3XHUwMGZhIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDM1ZFx1MDM1 ZVw3IVwyXDJcdTAzNWVcdTAzNWZcN1x1MDBmYVwyXDJcdTAzNWYiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTAzNjBcNyFcMlwyXHUwMzYwXHUwMzYxXDdcdTAwZmFcMlwyXHUwMzYxXHUw MzYyXDchXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwMzYyXHUwMzYzXDdcdTAwZmFc MlwyXHUwMzYzXHUwMzY0XDchXDJcMlx1MDM2NFx1MDM2NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDdcdTAwZmFcMlwyXHUwMzY1S1wzXDJcMlwyXHUwMzY2XHUwMzY3XDdcMjZcMlwyXHUwMzY3 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzNjhcN1x1MDBmYVwyXDJcdTAzNjhcdTAzNjlc NyFcMlwyXHUwMzY5XHUwMzZhXDdcdTAwZmEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc MlwyXHUwMzZhXHUwMzZiXDchXDJcMlx1MDM2Ylx1MDM2Y1w3XHUwMGZhXDJcMlx1MDM2YyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzcyXDchXDJcMlx1MDM2ZFx1MDM2ZVw3XDI2XDJcMlx1 MDM2ZVx1MDM2Zlw1SiZcMlx1MDM2ZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDM3 MFw3XDI3XDJcMlx1MDM3MFx1MDM3M1wzXDJcMlwyXHUwMzcxXHUwMzczXDVKJlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAzNzJcdTAzNmRcM1wyXDJcMlx1MDM3Mlx1MDM3MVwzXDJcMlwy XHUwMzczXHUwMzc0XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDM3NFx1MDM3 NVw3XDI3XDJcMlx1MDM3NU1cM1wyXDJcMlx1MDM3Nlx1MDM3NyIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlw3XHUwMGVjXDJcMlx1MDM3N1x1MDM3OFw3XDMwXDJcMlx1MDM3OFx1MDM3OVw3 XHUwMGZhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwMzc5XHUwMzdhXDdcMzFcMlwy XHUwMzdhT1wzXDJcMlwyXHUwMzdiXHUwMzdjXDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlIq XDJcdTAzN2NcdTAzN2RcNVQrXDJcdTAzN2RRXDNcMlwyXDJcdTAzN2VcdTAzN2ZcN1x1MDA4ZQ0K PiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAzN2ZcdTAzODBcN1xiXDJcMlx1MDM4 MFx1MDM4MVw3XHUwMGZiXDJcMlx1MDM4MSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1 MDM4M1w3IVwyXDJcdTAzODJcdTAzN2VcM1wyXDJcMlx1MDM4Mlx1MDM4M1wzXDJcMlwyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzODNcdTAzODlcM1wyXDJcMlx1MDM4NFx1MDM4NVw3XHUw MDhmXDJcMlx1MDM4NVx1MDM4NiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwy XHUwMzg2XHUwMzg3XDVYLQ0KPiBcMlx1MDM4N1x1MDM4OFw3IVwyXDJcdTAzODhcdTAzOGEiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwMzg5XHUwMzg0XDNcMlwyXDJcdTAzODlc dTAzOGFcM1wyXDJcMlx1MDM4YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzhmXDNcMlwy XDJcdTAzOGJcdTAzOGNcN1x1MDA5MVwyXDJcdTAzOGNcdTAzOGRcN1xiIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDJcMlx1MDM4ZFx1MDM4ZVw3XHUwMGZhXDJcMlx1MDM4ZVx1MDM5MFw3 IVwyXDJcdTAzOGYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDM4YlwzXDJcMlwyXHUwMzhm XHUwMzkwXDNcMlwyXDJcdTAzOTBTXDNcMlwyXDJcdTAzOTEiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDM5Mlw3XDYyXDJcMlx1MDM5Mlx1MDM5M1w3XGJcMlwyXHUwMzkzXHUwMzk0XDdcdTAw ZWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAzOTRcdTAzOTVcN1wzMFwyXDJcdTAz OTVcdTAzOTZcN1x1MDBmYVwyXDJcdTAzOTYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc dTAzOTdcN1wzMVwyXDJcdTAzOTdcdTAzOThcNyFcMlwyXHUwMzk4XHUwMzk5XDc9XDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMzk5XHUwMzlhXDdcYlwyXDJcdTAzOWFcdTAzOWJcN1x1 MDBlY1wyXDJcdTAzOWJcdTAzOWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XDMwXDJcMlx1 MDM5Y1x1MDM5ZFw3XHUwMGZhXDJcMlx1MDM5ZFx1MDM5ZVw3XDMxXDJcMiIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlx1MDM5ZVVcM1wyXDJcMlx1MDM5Zlx1MDNhOFw3flwyXDJcdTAzYTBc dTAzYThcN3lcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzYTFcdTAzYThcN3tcMlwy XHUwM2EyXHUwM2E4XDdcdTAwODBcMlwyXHUwM2EzXHUwM2E4IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcN3xcMlwyXHUwM2E0XHUwM2E4XDdcMTc3XDJcMlx1MDNhNVx1MDNhOFw3elwyXDJcdTAz YTYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAzYThcN31cMlwyXHUwM2E3XHUwMzlm XDNcMlwyXDJcdTAzYTdcdTAzYTBcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw M2E3XHUwM2ExXDNcMlwyXDJcdTAzYTdcdTAzYTJcM1wyXDJcMlx1MDNhN1x1MDNhM1wzIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTAzYTdcdTAzYTRcM1wyXDJcMlx1MDNhN1x1MDNh NVwzXDJcMlwyXHUwM2E3XHUwM2E2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1 MDNhOFdcM1wyXDJcMlx1MDNhOVx1MDNhYVw3XHUwMGZiXDJcMlx1MDNhYSIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlx1MDNhYlw3XDMyXDJcMlx1MDNhYlx1MDNhY1w3XHUwMGZhXDJcMlx1 MDNhY1x1MDNiNlw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMzNcMlwyXHUwM2FkXHUwM2Iy XDdcdTAwZmJcMlwyXHUwM2FlXHUwM2FmXDdcMzRcMlwyXHUwM2FmIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTAzYjFcNVx1MDE1Y1x1MDBhZlwyXHUwM2IwXHUwM2FlXDNcMlwyXDJcdTAzYjFc dTAzYjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwM2IyXHUwM2IwXDNcMlwy XDJcdTAzYjJcdTAzYjNcM1wyXDJcMlx1MDNiMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw M2I2XDNcMlwyXDJcdTAzYjRcdTAzYjJcM1wyXDJcMlx1MDNiNVx1MDNhOVwzXDJcMlwyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzYjVcdTAzYWRcM1wyXDJcMlx1MDNiNllcM1wyXDJcMlx1 MDNiN1x1MDNiOVw3XDM1XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwM2I4XHUwM2I3 XDNcMlwyXDJcdTAzYjhcdTAzYjlcM1wyXDJcMlx1MDNiOVx1MDNiYSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTAzYmFcdTAzZTRcN1x1MDBmYVwyXDJcdTAzYmJcdTAzZTRcN1x1 MDBkM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDNiY1x1MDNlNFw3XHUwMGQ0XDJc Mlx1MDNiZFx1MDNlNFw3XHUwMGQ1XDJcMlx1MDNiZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwM2U0XDdcdTAwZDZcMlwyXHUwM2JmXHUwM2U0XDdcdTAwZDdcMlwyXHUwM2MwXHUwM2MxIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmFcMlwyXHUwM2MxXHUwM2MyXDdcMzZc MlwyXHUwM2MyXHUwM2MzXDdcdTAwZmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAz YzNcdTAzYzRcN1wzNlwyXDJcdTAzYzRcdTAzZTRcN1x1MDBmYVwyXDJcdTAzYzUiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdTAzYzZcN1x1MDBmYVwyXDJcdTAzYzZcdTAzYzdcN1wzN1wy XDJcdTAzYzdcdTAzYzhcNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDBmYVwyXDJc dTAzYzhcdTAzYzlcN1wzN1wyXDJcdTAzYzlcdTAzZTRcN1x1MDBmYVwyIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDJcdTAzY2FcdTAzY2JcN1x1MDBmYVwyXDJcdTAzY2JcdTAzY2NcNw0K PiBcMlwyXHUwM2NjXHUwM2NkIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAwZmFc MlwyXHUwM2NkXHUwM2NlXDcNCj4gXDJcMlx1MDNjZVx1MDNjZlw1TFwnXDJcdTAzY2YiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAzZDBcNw0KPiBcMlwyXHUwM2QwXHUwM2QxXDdcdTAw ZWNcMlwyXHUwM2QxXHUwM2QyXDdcMzAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAz ZDJcdTAzZDNcN1x1MDBmYVwyXDJcdTAzZDNcdTAzZDRcN1wzMVwyXDJcdTAzZDQiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDNlNFwzXDJcMlwyXHUwM2Q1XHUwM2Q2XDdcdTAwZWNcMlwyXHUw M2Q2XHUwM2Q3XDdcMzAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTAzZDdcdTAzZDhc N1x1MDBmYVwyXDJcdTAzZDhcdTAzZTRcN1wzMVwyXDJcdTAzZDkiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTAzZGFcN1wyNlwyXDJcdTAzZGFcdTAzZGZcN1x1MDBmYVwyXDJcdTAzZGJc dTAzZGNcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiIVwyXDJcdTAzZGNcdTAzZGVcN1x1MDBm YVwyXDJcdTAzZGRcdTAzZGJcM1wyXDJcMlx1MDNkZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwM2UxXDNcMlwyXDJcdTAzZGZcdTAzZGRcM1wyXDJcMlx1MDNkZlx1MDNlMFwzXDJcMlwyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzZTBcdTAzZTJcM1wyXDJcMlx1MDNlMVx1MDNkZlwz XDJcMlwyXHUwM2UyXHUwM2U0XDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyN1wyXDJcdTAz ZTNcdTAzYjhcM1wyXDJcMlx1MDNlM1x1MDNiYlwzXDJcMlwyXHUwM2UzIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAzYmNcM1wyXDJcMlx1MDNlM1x1MDNiZFwzXDJcMlwyXHUwM2UzXHUwM2Jl XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNlM1x1MDNiZlwzXDJcMlwyXHUw M2UzXHUwM2MwXDNcMlwyXDJcdTAzZTNcdTAzYzVcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDJcMlwyXHUwM2UzXHUwM2NhXDNcMlwyXDJcdTAzZTNcdTAzZDVcM1wyXDJcMlx1MDNlM1x1MDNk OQ0KPiAiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDNlNFtcM1wyXDJc Mlx1MDNlNVx1MDNlNlw3XHUwMDkyXDJcMlx1MDNlNiIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlx1MDNlN1w3XGJcMlwyXHUwM2U3XHUwM2U4XDdcdFwyXDJcdTAzZThcdTAzZTlcN1wzMFwy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDNlOVx1MDNlYVw3XHUwMGZhXDJcMlx1MDNl YVx1MDNlYlw3XDMxXDJcMlx1MDNlYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXVwzXDJcMlwy XHUwM2VjXHUwM2VkXDdcdTAwOTNcMlwyXHUwM2VkX1wzXDJcMlwyXHUwM2VlIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwM2YxXDVcXC9cMlx1MDNlZlx1MDNmMVw1Xlw2MFwyXHUwM2Yw XHUwM2VlXDNcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAzZjBcdTAzZWZc M1wyXDJcMlx1MDNmMWFcM1wyXDJcMlx1MDNmMlx1MDNmN1w1YFw2MSIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlwyXHUwM2YzXHUwM2Y0XDchXDJcMlx1MDNmNFx1MDNmNlw1YFw2MVwyXHUw M2Y1XHUwM2YzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTAzZjZcdTAz ZjlcM1wyXDJcMlx1MDNmN1x1MDNmNVwzXDJcMlwyXHUwM2Y3IikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXHUwM2Y4XDNcMlwyXDJcdTAzZjhjXDNcMlwyXDJcdTAzZjlcdTAzZjdcM1wyXDJc Mlx1MDNmYSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDNmYlw3XDY3XDJcMlx1MDNm Ylx1MDNmY1w3L1wyXDJcdTAzZmNcdTAzZmRcN1xiXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlx1MDNmZFx1MDNmZVw3XHUwMGZhXDJcMlx1MDNmZVx1MDNmZlw3IVwyXDJcdTAzZmZc dTA0MDAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3LlwyXDJcdTA0MDBcdTA0MDFcN1xiXDJc Mlx1MDQwMVx1MDQwMlw3XHUwMGVjXDJcMlx1MDQwMiIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlx1MDQwM1w3XDMwXDJcMlx1MDQwM1x1MDQwNFw3XHUwMGZhXDJcMlx1MDQwNFx1MDQwNVw3 IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDMxXDJcMlx1MDQwNVx1MDQwOVw3DQo+IFwy XDJcdTA0MDZcdTA0MDhcNWZcNjRcMlx1MDQwN1x1MDQwNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTA0MDhcdTA0MGJcM1wyXDJcMlx1MDQwOVx1MDQwN1wzXDJcMlwyXHUwNDA5 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0MGFcM1wyXDJcMlx1MDQwYVx1MDQwY1wzXDJc MlwyXHUwNDBiXHUwNDA5XDNcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA0 MGNcdTA0MGRcN1w2NlwyXDJcdTA0MGRcdTA0MGVcNyBcMlwyXHUwNDBlZVwzXDJcMiIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlwyXHUwNDBmXHUwNDFmXDVqXDY2XDJcdTA0MTBcdTA0MWZc NWxcNjdcMlx1MDQxMVx1MDQxZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw1bjhcMlx1 MDQxMlx1MDQxZlw1XHUwMGE0U1wyXHUwNDEzXHUwNDFmXDVwOVwyXHUwNDE0IikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNDFmXDVcdTAwODhFXDJcdTA0MTVcdTA0MWZcNVx1MDBmOH1c Mlx1MDQxNlx1MDQxZlw1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMThcdTAwOGRcMlx1 MDQxN1x1MDQxZlw1XHUwMTFhXHUwMDhlXDJcdTA0MThcdTA0MWYiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlw1XHUwMTEwXHUwMDg5XDJcdTA0MTlcdTA0MWZcNVx1MDExY1x1MDA4ZlwyXHUwNDFh XHUwNDFmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDEyMFx1MDA5MVwyXHUwNDFiXHUw NDFjXDVcdTAwOTZMXDJcdTA0MWNcdTA0MWRcNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo Ig0KPiBcMlwyXHUwNDFkXHUwNDFmXDNcMlwyXDJcdTA0MWVcdTA0MGZcM1wyXDJcMlx1MDQxZVx1 MDQxMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA0MWVcdTA0MTFcM1wyXDJc Mlx1MDQxZVx1MDQxMlwzXDJcMlwyXHUwNDFlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0 MTNcM1wyXDJcMlx1MDQxZVx1MDQxNFwzXDJcMlwyXHUwNDFlXHUwNDE1XDNcMlwyXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDQxZVx1MDQxNlwzXDJcMlwyXHUwNDFlXHUwNDE3XDNcMlwy XDJcdTA0MWVcdTA0MThcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNDFlXHUw NDE5XDNcMlwyXDJcdTA0MWVcdTA0MWFcM1wyXDJcMlx1MDQxZVx1MDQxYg0KPiAiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNDFmZ1wzXDJcMlwyXHUwNDIwXHUwNDIxXDc4XDJc Mlx1MDQyMVx1MDQyMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDcvXDJcMlx1MDQyMlx1MDQy M1w3XGJcMlwyXHUwNDIzXHUwNDI0XDdcdTAwZmFcMlwyXHUwNDI0IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA0MzNcNyFcMlwyXHUwNDI1XHUwNDI2XDc5XDJcMlx1MDQyNlx1MDQyN1w3XGJc MlwyXHUwNDI3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNDI4XDdcdTAwZWNcMlwy XHUwNDI4XHUwNDI5XDdcMzBcMlwyXHUwNDI5XHUwNDJhXDciKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcdTAwZmFcMlwyXHUwNDJhXHUwNDJiXDdcMzFcMlwyXHUwNDJiXHUwNDJjXDcNCj4g XDJcMlx1MDQyYyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDJkXDc6XDJcMlx1MDQyZFx1 MDQyZVw3XGJcMlwyXHUwNDJlXHUwNDJmXDVMXCdcMlx1MDQyZiIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlx1MDQzMFw3IFwyXDJcdTA0MzBcdTA0MzJcM1wyXDJcMlx1MDQzMVx1MDQyNVwz XDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0MzJcdTA0MzVcM1wyXDJcMlx1MDQz M1x1MDQzMVwzXDJcMlwyXHUwNDMzXHUwNDM0XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwy XDJcMlx1MDQzNFx1MDQzOVwzXDJcMlwyXHUwNDM1XHUwNDMzXDNcMlwyXDJcdTA0MzZcdTA0Mzgi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1Zlw2NFwyXHUwNDM3XHUwNDM2XDNcMlwyXDJcdTA0 MzhcdTA0M2JcM1wyXDJcMlx1MDQzOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDM3XDNc MlwyXDJcdTA0MzlcdTA0M2FcM1wyXDJcMlx1MDQzYVx1MDQzY1wzXDJcMlwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA0M2JcdTA0MzlcM1wyXDJcMlx1MDQzY1x1MDQzZFw3XDY2XDJcMlx1 MDQzZFx1MDQzZSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3IFwyXDJcdTA0M2VpXDNc MlwyXDJcdTA0M2ZcdTA0NDBcNVxcL1wyXHUwNDQwXHUwNDQxIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDcNCj4gXDJcMlx1MDQ0MWtcM1wyXDJcMlx1MDQ0Mlx1MDQ0M1w1Xlw2MFwyXHUw NDQzXHUwNDQ0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDcNCj4gXDJcMlx1MDQ0NG1c M1wyXDJcMlx1MDQ0NVx1MDQ0Nlw3XHUwMDk0XDJcMlx1MDQ0Nlx1MDQ0NyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDdcdTAwZmJcMlwyXHUwNDQ3XHUwNDQ4XDchXDJcMlx1MDQ0OFx1MDQ0OVw1 XHUwMTI0XHUwMDkzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcdTA0NDlcdTA0NGFc N1x1MDA5NVwyXDJcdTA0NGFcdTA0NGJcNw0KPiBcMlwyXHUwNDRib1wzIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlwyXDJcdTA0NGNcdTA0NTBcNXI6XDJcdTA0NGRcdTA0NTBcNXo+XDJcdTA0 NGVcdTA0NTAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1fkBcMlx1MDQ0Zlx1MDQ0Y1wzXDJc MlwyXHUwNDRmXHUwNDRkXDNcMlwyXDJcdTA0NGZcdTA0NGUNCj4gIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDQ1MHFcM1wyXDJcMlx1MDQ1MVx1MDQ1Mlw3O1wyXDJcdTA0NTJc dTA0NTMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3PlwyXDJcdTA0NTNcdTA0NTRcN1xiXDJc Mlx1MDQ1NFx1MDQ1NVw3XHUwMGVjXDJcMlx1MDQ1NSIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlx1MDQ1Nlw3XDMwXDJcMlx1MDQ1Nlx1MDQ1N1w3XHUwMGZhXDJcMlx1MDQ1N1x1MDQ1Y1w3 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMzFcMlwyXHUwNDU4XHUwNDU5XDchXDJcMlx1MDQ1 OVx1MDQ1YVw3QFwyXDJcdTA0NWFcdTA0NWIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XGJc MlwyXHUwNDViXHUwNDVkXDV2PFwyXHUwNDVjXHUwNDU4XDNcMlwyXDJcdTA0NWNcdTA0NWQNCj4g IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA0NWRcdTA0NzJcM1wyXDJc Mlx1MDQ1ZVx1MDQ1Zlw3IVwyXDJcdTA0NWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ2 MVw1Ylw2MlwyXHUwNDYwXHUwNDVlXDNcMlwyXDJcdTA0NjBcdTA0NjFcM1wyXDJcMiIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlx1MDQ2MVx1MDQ2MlwzXDJcMlwyXHUwNDYyXHUwNDczXDcg XDJcMlx1MDQ2M1x1MDQ2NFw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCIhXDJcMlx1MDQ2NFx1 MDQ2Nlw1Ylw2MlwyXHUwNDY1XHUwNDYzXDNcMlwyXDJcdTA0NjVcdTA0NjYiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDQ2Nlx1MDQ2ZVwzXDJcMlwyXHUwNDY3XHUwNDZi XDchXDJcMlx1MDQ2OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDZhXDV0O1wyXHUwNDY5 XHUwNDY4XDNcMlwyXDJcdTA0NmFcdTA0NmRcM1wyXDJcMlx1MDQ2YiIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlx1MDQ2OVwzXDJcMlwyXHUwNDZiXHUwNDZjXDNcMlwyXDJcdTA0NmNcdTA0 NmZcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDZkXHUwNDZiXDNcMlwyXDJc dTA0NmVcdTA0NjdcM1wyXDJcMlx1MDQ2ZVx1MDQ2ZlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXDJcdTA0NmZcdTA0NzBcM1wyXDJcMlx1MDQ3MFx1MDQ3MVw3PFwyXDJcdTA0NzFcdTA0 NzMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNyBcMlwyXHUwNDcyXHUwNDYwXDNcMlwy XDJcdTA0NzJcdTA0NjVcM1wyXDJcMlx1MDQ3MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgic1wz XDJcMlwyXHUwNDc0XHUwNDc3XDVwOVwyXHUwNDc1XHUwNDc3XDVcdTAwODhFXDJcdTA0NzYiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ3NFwzXDJcMlwyXHUwNDc2XHUwNDc1XDNcMlwyXDJc dTA0Nzd1XDNcMlwyXDJcdTA0NzgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ3ZFw1eD1c Mlx1MDQ3OVx1MDQ3YVw3KFwyXDJcdTA0N2FcdTA0N2NcNXg9XDJcdTA0N2IiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDQ3OVwzXDJcMlwyXHUwNDdjXHUwNDdmXDNcMlwyXDJcdTA0N2RcdTA0 N2JcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDdkXHUwNDdlXDNcMlwyXDJc dTA0N2V3XDNcMlwyXDJcdTA0N2ZcdTA0N2RcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXHUwNDgwXHUwNDgxXHRcNVwyXDJcdTA0ODF5XDNcMlwyXDJcdTA0ODJcdTA0ODNcNz5cMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA0ODNcdTA0ODRcNz1cMlwyXHUwNDg0XHUwNDg1 XDdcYlwyXDJcdTA0ODVcdTA0ODYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBl Y1wyXDJcdTA0ODZcdTA0ODdcN1wzMFwyXDJcdTA0ODdcdTA0ODhcN1x1MDBmYSIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDQ4OFx1MDQ4OVw3XDMxXDJcMlx1MDQ4OVx1MDQ4YVw3IVwy XDJcdTA0OGFcdTA0OGIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3PlwyXDJcdTA0OGJcdTA0 OGNcN1xiXDJcMlx1MDQ4Y1x1MDQ4ZFw3XHUwMGVjXDJcMlx1MDQ4ZCIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlx1MDQ4ZVw3XDMwXDJcMlx1MDQ4ZVx1MDQ4Zlw3XHUwMGZhXDJcMlx1MDQ4 Zlx1MDQ5N1w3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMzFcMlwyXHUwNDkwXHUwNDkxXDch XDJcMlx1MDQ5MVx1MDQ5Mlw3PlwyXDJcdTA0OTJcdTA0OTMiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcN1xiXDJcMlx1MDQ5M1x1MDQ5NFw3XHUwMGVjXDJcMlx1MDQ5NFx1MDQ5NVw3XDMw XDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNDk1XHUwNDk2XDdcdTAwZmFcMlwyXHUw NDk2XHUwNDk4XDdcMzFcMlwyXHUwNDk3XHUwNDkwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1wyXDJcMlx1MDQ5N1x1MDQ5OFwzXDJcMlwyXHUwNDk4XHUwNGE5XDNcMlwyXDJcdTA0OTkiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDQ5YVw3IVwyXDJcdTA0OWFcdTA0OWJcN0BcMlwyXHUw NDliXHUwNDljXDdcYlwyXDJcdTA0OWMNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0 YTFcNXw/XDJcdTA0OWRcdTA0OWVcNyhcMlwyXHUwNDllXHUwNGEwXDV8P1wyXHUwNDlmIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0OWRcM1wyXDJcMlx1MDRhMFx1MDRhM1wzXDJcMlwyXHUw NGExXHUwNDlmXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRhMVx1MDRhMlwz XDJcMlwyXHUwNGEyXHUwNGE0XDNcMlwyXDJcdTA0YTNcdTA0YTFcMyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcMlwyXHUwNGE0XHUwNGE1XDchXDJcMlx1MDRhNVx1MDRhNlw3dFwyXDJcdTA0 YTZcdTA0YTciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwNGE3XHUwNGE4XDdc dTAwZmFcMlwyXHUwNGE4XHUwNGFhXDNcMlwyXDJcdTA0YTkiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDQ5OVwzXDJcMlwyXHUwNGE5XHUwNGFhXDNcMlwyXDJcdTA0YWFcdTA0YWRcM1wyXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGFiXHUwNGFjXDchXDJcMlx1MDRhY1x1MDRh ZVw1Ylw2MlwyXHUwNGFkXHUwNGFiXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1 MDRhZFx1MDRhZVwzXDJcMlwyXHUwNGFlXHUwNGFmXDNcMlwyXDJcdTA0YWZcdTA0YjAiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcNw0KPiBcMlwyXHUwNGIwe1wzXDJcMlwyXHUwNGIxXHUw NGI0XDdcdTAwZmFcMlwyXHUwNGIyXHUwNGI0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDVWLFwyXHUwNGIzXHUwNGIxXDNcMlwyXDJcdTA0YjNcdTA0YjJcM1wyXDJcMlx1MDRiNH0iKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNGI1XHUwNGI4XDVcdTAwODBBXDJcdTA0 YjZcdTA0YjhcNVx1MDA4NkRcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGI3XHUwNGI1 XDNcMlwyXDJcdTA0YjdcdTA0YjZcM1wyXDJcMlx1MDRiOFwxNzdcM1wyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlwyXHUwNGI5XHUwNGU5XDduXDJcMlx1MDRiYVx1MDRiYlw3KlwyXDJcdTA0 YmJcdTA0YmMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwNGJjXHUwNGJkXDdc dTAwZWNcMlwyXHUwNGJkXHUwNGJlXDdcMzBcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA0YmVcdTA0YmZcN1x1MDBmYVwyXDJcdTA0YmZcdTA0YzBcN1wzMVwyXDJcdTA0YzBcdTA0YzEi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA0YzFcdTA0YzJcN29cMlwyXHUwNGMy XHUwNGMzXDdcYlwyXDJcdTA0YzNcdTA0YzQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1TFwn XDJcdTA0YzRcdTA0YzVcNyFcMlwyXHUwNGM1XHUwNGM2XDcvXDJcMlx1MDRjNlx1MDRjNyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA0YzdcdTA0YzhcN1x1MDBmYVwyXDJcdTA0 YzhcdTA0YzlcNyFcMlwyXHUwNGM5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0Y2FcN1x1 MDA5MFwyXDJcdTA0Y2FcdTA0Y2JcN1xiXDJcMlx1MDRjYlx1MDRjY1w3XHUwMGZhIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNGNjXHUwNGNkXDchXDJcMlx1MDRjZFx1MDRlYVwzXDJc MlwyXHUwNGNlXHUwNGNmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN29cMlwyXHUwNGNmXHUw NGQwXDdcYlwyXDJcdTA0ZDBcdTA0ZDFcNUxcJ1wyXHUwNGQxXHUwNGQyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcNyFcMlwyXHUwNGQyXHUwNGQzXDcvXDJcMlx1MDRkM1x1MDRkNFw3XGJcMlwy XHUwNGQ0XHUwNGQ1DQo+ICIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XHUwMGZhXDJc Mlx1MDRkNVx1MDRkNlw3IVwyXDJcdTA0ZDZcdTA0ZDdcN1x1MDA5MFwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlx1MDRkN1x1MDRkOFw3XGJcMlwyXHUwNGQ4XHUwNGQ5XDdcdTAwZmFcMlwy XHUwNGQ5XHUwNGQNCj4gYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDRkYVx1 MDRlYVwzXDJcMlwyXHUwNGRiXHUwNGRjXDcvXDJcMlx1MDRkY1x1MDRkZA0KPiAiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw3XGJcMlwyXHUwNGRkXHUwNGRlXDdcdTAwZmFcMlwyXHUwNGRlXHUw NGRmXDchXDJcMlx1MDRkZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNGUwXDdcdTAwOTBc MlwyXHUwNGUwXHUwNGU1XDdcYlwyXDJcdTA0ZTFcdTA0ZTJcN1x1MDBmDQo+IGIiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwNGUyXHUwNGU2XDchXDJcMlx1MDRlM1x1MDRlNFw3 XHUwMGZhXDJcMlx1MDRlNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDRlNlw3IVwy XDJcdTA0ZTVcdTA0ZTFcM1wyXDJcMlx1MDRlNVx1MDRlM1wzXDJcMlwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA0ZTZcdTA0ZWFcM1wyXDJcMlx1MDRlN1x1MDRlOFw3XHUwMGZhXDJcMlx1 MDRlOFx1MDRlYSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA0ZTlcdTA0 YmFcM1wyXDJcMlx1MDRlOVx1MDRjZVwzXDJcMlwyXHUwNGU5IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTA0ZGJcM1wyXDJcMlx1MDRlOVx1MDRlN1wzXDJcMlwyXHUwNGU5XHUwNGVhXDNcMlwy XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRlYVx1MDRlYlwzXDJcMlwyXHUwNGViXHUw NGYwXDVQKVwyXHUwNGVjXHUwNGVkXDchIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUw NGVkXHUwNGVlXDdAXDJcMlx1MDRlZVx1MDRlZlw3XGJcMlwyXHUwNGVmXHUwNGYxIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcNVx1MDA4MkJcMlx1MDRmMFx1MDRlY1wzXDJcMlwyXHUwNGYwXHUw NGYxXDNcMlwyXDJcdTA0ZjEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDRmNlwzXDJcMlwy XHUwNGYyXHUwNGYzXDchXDJcMlx1MDRmM1x1MDRmNFw3dFwyXDJcdTA0ZjQiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcdTA0ZjVcN1xiXDJcMlx1MDRmNVx1MDRmN1w3XHUwMGZhXDJcMlx1 MDRmNlx1MDRmMlwzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA0ZjZcdTA0Zjdc M1wyXDJcMlx1MDRmN1x1MDRmYVwzXDJcMlwyXHUwNGY4XHUwNGY5IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcNyFcMlwyXHUwNGY5XHUwNGZiXDVcdTAwYjRbXDJcdTA0ZmFcdTA0ZjhcM1wyXDJc Mlx1MDRmYSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDRmYlwzXDJcMlwyXHUwNGZi XHUwNGZjXDNcMlwyXDJcdTA0ZmNcdTA0ZmRcNyBcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA0ZmRcdTAwODFcM1wyXDJcMlx1MDRmZVx1MDUwM1w1XHUwMDg0Q1wyXHUwNGZmXHUwNTAw IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNyhcMlwyXHUwNTAwXHUwNTAyXDVcdTAwODRDXDJc dTA1MDFcdTA0ZmZcM1wyXDJcMlx1MDUwMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTA1 XDNcMlwyXDJcdTA1MDNcdTA1MDFcM1wyXDJcMlx1MDUwM1x1MDUwNFwzXDJcMlwyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA1MDRcdTAwODNcM1wyXDJcMlx1MDUwNVx1MDUwM1wzXDJcMlwy XHUwNTA2XHUwNTA5XDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBmYVwyXDJcdTA1MDdc dTA1MDlcNVYsXDJcdTA1MDhcdTA1MDZcM1wyXDJcMlx1MDUwOCIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNTA3XDNcMlwyXDJcdTA1MDlcdTAwODVcM1wyXDJcMlx1MDUwYVx1MDUwYlw3XHUw MDk5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNTBiXHUwNTBjXDdcdTAwOWJcMlwy XHUwNTBjXHUwNTBkXDdcYlwyXDJcdTA1MGQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc dTA1MGVcN1x1MDBmYlwyXDJcdTA1MGVcdTA1MGZcNyFcMlwyXHUwNTBmXHUwNTEwXDVUKyIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwNTEwXHUwNTE0XDchXDJcMlx1MDUxMVx1MDUx Mlw1Ylw2MlwyXHUwNTEyXHUwNTEzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDchXDJc Mlx1MDUxM1x1MDUxNVwzXDJcMlwyXHUwNTE0XHUwNTExXDNcMlwyXDJcdTA1MTQiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDUxNVwzXDJcMlwyXHUwNTE1XHUwNTE2XDNcMlwyXDJcdTA1MTZc dTA1MTdcN1x1MDA5YSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA1MTdcdTA1 MThcNw0KPiBcMlwyXHUwNTE4XHUwMDg3XDNcMlwyXDJcdTA1MTlcdTA1MjAiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlw1XHUwMGI4XVwyXHUwNTFhXHUwNTIwXDVcdTAwZTh1XDJcdTA1MWJcdTA1 MjBcNVx1MDBjNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiZFwyXHUwNTFjXHUwNTIwXDVcdTAw ZDRrXDJcdTA1MWRcdTA1MjBcNVx1MDBlMnJcMlx1MDUxZSIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlx1MDUyMFw1XHUwMGYweVwyXHUwNTFmXHUwNTE5XDNcMlwyXDJcdTA1MWZcdTA1MWFc M1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNTFmXHUwNTFiXDNcMlwyXDJcdTA1 MWZcdTA1MWNcM1wyXDJcMlx1MDUxZlx1MDUxZCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTA1MWZcdTA1MWVcM1wyXDJcMlx1MDUyMFx1MDA4OVwzXDJcMlwyXHUwNTIxIikNCj4g DQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTIyXDVgXDYxXDJcdTA1MjJcdTA1MjNcNyFcMlwy XHUwNTIzXHUwNTJkXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUyNFx1MDUy ZFw1XHUwMDhjR1wyXHUwNTI1XHUwNTJkXDVcdTAwOGVIXDJcdTA1MjZcdTA1Mg0KPiBkIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDA5MElcMlx1MDUyN1x1MDUyZFw1XHUwMDkySlwyXHUw NTI4XHUwNTJkXDVcdTAwOTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIktcMlx1MDUyOVx1MDUy ZFw1XHUwMTFjXHUwMDhmXDJcdTA1MmFcdTA1MmRcNVx1MDA5NkxcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNTJiXHUwNTJkXDVcdTAwOThNXDJcdTA1MmNcdTA1MjFcM1wyXDJcMlx1MDUy Y1x1MDUyNCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTJjXHUwNTI1 XDNcMlwyXDJcdTA1MmNcdTA1MjZcM1wyXDJcMlx1MDUyYyIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlx1MDUyN1wzXDJcMlwyXHUwNTJjXHUwNTI4XDNcMlwyXDJcdTA1MmNcdTA1MjlcM1wy XDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTJjXHUwNTJhXDNcMlwyXDJcdTA1MmNc dTA1MmJcM1wyXDJcMlx1MDUyZFx1MDA4YlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwy XDJcdTA1MmVcdTA1MmZcN3BcMlwyXHUwNTJmXHUwNTMwXDdcNjJcMlwyXHUwNTMwXHUwNTMxIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA1MzFcdTA1MzJcN1x1MDBlY1wy XDJcdTA1MzJcdTA1MzNcN1wzMFwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUzM1x1 MDUzNFw3XHUwMGZhXDJcMlx1MDUzNFx1MDUzNVw3XDMxXDJcMlx1MDUzNVx1MDU0MiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDUzNlx1MDUzN1w3QFwyXDJcdTA1MzdcdTA1Mzhc N1xiXDJcMlx1MDUzOFx1MDUzZA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMDll UFwyXHUwNTM5XHUwNTNhXDcoXDJcMlx1MDUzYVx1MDUzY1w1XHUwMDllUFwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA1M2JcdTA1MzlcM1wyXDJcMlx1MDUzY1x1MDUzZlwzXDJcMlwyXHUw NTNkXHUwNTNiXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDUzZFx1MDUzZVwz XDJcMlwyXHUwNTNlXHUwNTQwXDNcMlwyXDJcdTA1M2ZcdTA1M2QNCj4gIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1NDBcdTA1NDFcNyFcMlwyXHUwNTQxXHUwNTQzXDNc MlwyXDJcdTA1NDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDUzNlwzXDJcMlwyXHUwNTQy XHUwNTQzXDNcMlwyXDJcdTA1NDNcdTA1NDRcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNTQ0XHUwNTQ1XDVcdTAxMjRcdTAwOTNcMlx1MDU0NVx1MDU0N1w3c1wyXDJcdTA1NDYi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NDhcNyBcMlwyXHUwNTQ3XHUwNTQ2XDNc MlwyXDJcdTA1NDdcdTA1NDhcM1wyXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1 MDU0OFx1MDA4ZFwzXDJcMlwyXHUwNTQ5XHUwNTRhXDdyXDJcMlx1MDU0YVx1MDU0Ylw3IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcNjJcMlwyXHUwNTRiXHUwNTRjXDdcYlwyXDJcdTA1NGNcdTA1 NGRcN1x1MDBlY1wyXDJcdTA1NGQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NGVc N1wzMFwyXDJcdTA1NGVcdTA1NGZcN1x1MDBmYVwyXDJcdTA1NGZcdTA1NTBcNyIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXDMxXDJcMlx1MDU1MFx1MDU1ZFw3IVwyXDJcdTA1NTFcdTA1NTJcN0Bc MlwyXHUwNTUyXHUwNTUzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDU1M1x1 MDU1OFw1XHUwMDllUFwyXHUwNTU0XHUwNTU1XDcoXDJcMlx1MDU1NSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNTU3XDVcdTAwOWVQXDJcdTA1NTZcdTA1NTRcM1wyXDJcMlx1MDU1N1x1MDU1 YVwzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA1NThcdTA1NTZcM1wyXDJcMlx1 MDU1OFx1MDU1OVwzXDJcMlwyXHUwNTU5XHUwNTViIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTA1NWFcdTA1NThcM1wyXDJcMlx1MDU1Ylx1MDU1Y1w3IVwyXDJcdTA1NWMi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDU1ZVwzXDJcMlwyXHUwNTVkXHUwNTUxXDNcMlwy XDJcdTA1NWRcdTA1NWVcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTVlXHUw NTVmXDNcMlwyXDJcdTA1NWZcdTA1NjBcNVx1MDEyNFx1MDA5M1wyXHUwNTYwIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNTYyXDdzXDJcMlx1MDU2MVx1MDU2M1w3DQo+IFwyXDJcdTA1 NjJcdTA1NjFcM1wyXDJcMlx1MDU2MiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDU2 M1wzXDJcMlwyXHUwNTYzXHUwMDhmXDNcMlwyXDJcdTA1NjRcdTA1NjVcN2xcMlwyIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNTY1XHUwNTY2XDVcdTAxMjRcdTAwOTNcMlx1MDU2Nlx1 MDU2N1w3IFwyXDJcdTA1NjciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1NjhcNVx1 MDBiNFtcMlx1MDU2OFx1MDU2YVw3c1wyXDJcdTA1NjlcdTA1NmJcNyBcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcdTA1NmFcdTA1NjlcM1wyXDJcMlx1MDU2YVx1MDU2YlwzXDJcMlwyXHUw NTZiXHUwMDkxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDU2Y1x1MDU2ZFw3 XHUwMGE0XDJcMlx1MDU2ZFx1MDU2ZVw3XHUwMGE1XDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXHUwNTZlXHUwNTZmXDdcYlwyXDJcdTA1NmZcdTA1NzBcN1x1MDBmYVwyXDJcdTA1NzBcdTAw OTMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNTcxXHUwNTcyXDdcdTAwYTZc MlwyXHUwNTcyXHUwNTczXDdcYlwyXDJcdTA1NzMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcdTA1NzRcN1x1MDBlY1wyXDJcdTA1NzRcdTA1NzVcN1wzMFwyXDJcdTA1NzVcdTA1NzZcNyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MDU3Nlx1MDU3N1w3XDMxXDJcMlx1 MDU3N1x1MDU3OFw3IVwyXDJcdTA1NzgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDA5NVwz XDJcMlwyXHUwNTc5XHUwNTdhXDdcdTAwZWJcMlwyXHUwNTdhXHUwNTdiXDdcYiIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA1N2JcdTA1N2NcNUxcJ1wyXHUwNTdjXHUwNTdkXDch XDJcMlx1MDU3ZFx1MDA5NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1N2Vc dTA1N2ZcN3FcMlwyXHUwNTdmXHUwNTgwXDdcNjJcMlwyXHUwNTgwIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA1ODFcN1xiXDJcMlx1MDU4MVx1MDU4Mlw3XHUwMGVjXDJcMlx1MDU4Mlx1MDU4 M1w3XDMwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNTgzXHUwNTg0XDdcdTAwZmFc MlwyXHUwNTg0XHUwNTg1XDdcMzFcMlwyXHUwNTg1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA1OGFcNyFcMlwyXHUwNTg2XHUwNTg3XDdNXDJcMlx1MDU4N1x1MDU4OFw3XGJcMlwyXHUwNTg4 DQo+ICIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDU4OVw3XHUwMGZhXDJcMlx1MDU4 OVx1MDU4Ylw3IVwyXDJcdTA1OGFcdTA1ODZcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc MlwyXHUwNThhXHUwNThiXDNcMlwyXDJcdTA1OGJcdTA1OGNcM1wyXDJcMlx1MDU4Y1x1MDU4ZCIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw1XHUwMTI0XHUwMDkzXDJcdTA1OGRcdTA1OGZc N3NcMlwyXHUwNThlXHUwNTkwXDcNCj4gXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw NThmXHUwNThlXDNcMlwyXDJcdTA1OGZcdTA1OTBcM1wyXDJcMlx1MDU5MFx1MDA5OVwzIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA1OTFcdTA1OTNcNVx1MDA4YUZcMlx1MDU5Mlx1 MDU5MVwzXDJcMlwyXHUwNTkzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1OTZcM1wyXDJc Mlx1MDU5NFx1MDU5MlwzXDJcMlwyXHUwNTk0XHUwNTk1XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDU5NVx1MDA5YlwzXDJcMlwyXHUwNTk2XHUwNTk0XDNcMlwyXDJcdTA1OTdc dTA1OWZcNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGEwUVwyXHUwNTk4XHUwNTlmXDVc dTAwYTJSXDJcdTA1OTlcdTA1OWZcNVx1MDBhNlQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwy XHUwNTlhXHUwNTlmXDVcdTAwYTRTXDJcdTA1OWJcdTA1OWZcNVx1MDBhOFVcMlx1MDU5YyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTlmXDVcdTAwYjBZXDJcdTA1OWRcdTA1OWZcNVx1MDBi MlpcMlx1MDU5ZVx1MDU5N1wzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA1OWVc dTA1OThcM1wyXDJcMlx1MDU5ZVx1MDU5OVwzXDJcMlwyXHUwNTllXHUwNTlhDQo+ICIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA1OWVcdTA1OWJcM1wyXDJcMlx1MDU5ZVx1MDU5 Y1wzXDJcMlwyXHUwNTllIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1OWRcM1wyXDJcMlx1 MDU5Zlx1MDA5ZFwzXDJcMlwyXHUwNWEwXHUwNWE5XDdcdTAwZmEiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlwyXDJcdTA1YTFcdTA1YTlcN3lcMlwyXHUwNWEyXHUwNWE5XDd2XDJcMlx1MDVhM1x1 MDVhOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDd1XDJcMlx1MDVhNFx1MDVhOVw3e1wyXDJc dTA1YTVcdTA1YTlcN3xcMlwyXHUwNWE2XHUwNWE5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc N3pcMlwyXHUwNWE3XHUwNWE5XDd9XDJcMlx1MDVhOFx1MDVhMFwzXDJcMlwyXHUwNWE4XHUwNWEx IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDVhOFx1MDVhMlwzXDJcMlwyXHUw NWE4XHUwNWEzXDNcMlwyXDJcdTA1YTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVhNFwz XDJcMlwyXHUwNWE4XHUwNWE1XDNcMlwyXDJcdTA1YThcdTA1YTZcM1wyXDJcMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNWE4XHUwNWE3XDNcMlwyXDJcdTA1YTlcdTAwOWZcM1wyXDJcMlx1 MDVhYVx1MDVhYlw3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgia1wyXDJcdTA1YWJcdTA1 YWNcNVx1MDEyNFx1MDA5M1wyXHUwNWFjXHUwNWI5XDcNCj4gXDJcMlx1MDVhZCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwNWFlXDdAXDJcMlx1MDVhZVx1MDVhZlw3XGJcMlwyXHUwNWFmXHUw NWI0XDVcdTAwOWUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlBcMlx1MDViMFx1MDViMVw3KFwy XDJcdTA1YjFcdTA1YjNcNVx1MDA5ZVBcMlx1MDViMlx1MDViMA0KPiAiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwzXDJcMlwyXHUwNWIzXHUwNWI2XDNcMlwyXDJcdTA1YjRcdTA1YjJcM1wyXDJc Mlx1MDViNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNWI1XDNcMlwyXDJcdTA1YjVcdTA1 YjdcM1wyXDJcMlx1MDViNlx1MDViNFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA1YjdcdTA1YjhcNyFcMlwyXHUwNWI4XHUwNWJhXDNcMlwyXDJcdTA1YjlcdTA1YWRcMyIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNWI5XHUwNWJhXDNcMlwyXDJcdTA1YmFcdTA1 YmJcM1wyXDJcMlx1MDViYlx1MDViYw0KPiAiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc NVx1MDBiNFtcMlx1MDViY1x1MDViZVw3c1wyXDJcdTA1YmRcdTA1YmZcNw0KPiBcMlwyXHUwNWJl IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1YmRcM1wyXDJcMlx1MDViZVx1MDViZlwzXDJc MlwyXHUwNWJmXHUwMGExXDNcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1 YzBcdTA1YzFcN0tcMlwyXHUwNWMxXHUwNWMyXDVcdTAxMjRcdTAwOTNcMlx1MDVjMiIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlx1MDVjZlw3DQo+IFwyXDJcdTA1YzNcdTA1YzRcN0BcMlwy XHUwNWM0XHUwNWM1XDdcYlwyXDJcdTA1YzUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVj YVw1XHUwMDllUFwyXHUwNWM2XHUwNWM3XDcoXDJcMlx1MDVjN1x1MDVjOVw1XHUwMDllIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJQXDJcdTA1YzhcdTA1YzZcM1wyXDJcMlx1MDVjOVx1MDVjY1wz XDJcMlwyXHUwNWNhXHUwNWM4IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA1Y2FcdTA1Y2JcM1wyXDJcMlx1MDVjYlx1MDVjZFwzXDJcMlwyXHUwNWNjIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwNWNhXDNcMlwyXDJcdTA1Y2RcdTA1Y2VcNyFcMlwyXHUwNWNl XHUwNWQwXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVjZlx1MDVjM1wzXDJc MlwyXHUwNWNmXHUwNWQwXDNcMlwyXDJcdTA1ZDBcdTA1ZDFcMyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDJcMlwyXHUwNWQxXHUwNWQyXDVcdTAwYjRbXDJcdTA1ZDJcdTA1ZDRcN3NcMlwyXHUw NWQzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNWQ1XDcgXDJcMlx1MDVkNFx1MDVk M1wzXDJcMlwyXHUwNWQ0XHUwNWQ1XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDVkNVx1MDBhM1wzXDJcMlwyXHUwNWQ2XHUwNWRlXDdjXDJcMlx1MDVkN1x1MDVkOFw1IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwYTZUXDJcdTA1ZDhcdTA1ZDlcNyFcMlwyXHUwNWQ5XHUw NWRmXDNcMlwyXDJcdTA1ZGEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVkYlw3XGJcMlwy XHUwNWRiXHUwNWRjXDVaLlwyXHUwNWRjXHUwNWRkXDchXDJcMlx1MDVkZCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNWRmXDNcMlwyXDJcdTA1ZGVcdTA1ZDdcM1wyXDJcMlx1MDVkZVx1MDVk YVwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1ZGZcdTA1ZTRcM1wyXDJcMlx1 MDVlMFx1MDVlMVw3XHUwMDliXDJcMlx1MDVlMVx1MDVlMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDdcYlwyXDJcdTA1ZTJcdTA1ZTNcN1x1MDBmYlwyXDJcdTA1ZTNcdTA1ZTVcNyFcMlwyXHUw NWU0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1ZTBcM1wyXDJcMlx1MDVlNFx1MDVlNVwz XDJcMlwyXHUwNWU1XHUwMGE1XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVl Nlx1MDVlN1w3XHUwMDk2XDJcMlx1MDVlN1x1MDVlOFw3XGJcMlwyXHUwNWU4XHUwNWU5IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDEyNFx1MDA5M1wyXHUwNWU5XHUwMGE3XDNcMlwyXDJc dTA1ZWFcdTA1ZWJcNVx1MDBhYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiVlwyXHUwNWViXHUw MGE5XDNcMlwyXDJcdTA1ZWNcdTA1ZWRcNz9cMlwyXHUwNWVkXHUwNWVlIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcNz5cMlwyXHUwNWVlXHUwNWVmXDdcYlwyXDJcdTA1ZWZcdTA1ZjBcN1x1MDBl Y1wyXDJcdTA1ZjAiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA1ZjFcN1wzMFwyXDJc dTA1ZjFcdTA1ZjJcN1x1MDBmYVwyXDJcdTA1ZjJcdTA1ZjNcNyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDMxXDJcMlx1MDVmM1x1MDVmNFw3IVwyXDJcdTA1ZjRcdTA1ZjVcN1x1MDA5NlwyXDJc dTA1ZjUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDVmNlw3XGJcMlwyXHUwNWY2XHUwNWY3 XDVaLlwyXHUwNWY3XHUwNWY4XDchXDJcMlx1MDVmOCIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlx1MDVmOVw3QFwyXDJcdTA1ZjlcdTA1ZmFcN1xiXDJcMlx1MDVmYVx1MDVmZlw1XHUwMGFj IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiV1wyXHUwNWZiXHUwNWZjXDchXDJcMlx1MDVm Y1x1MDVmZFw3dFwyXDJcdTA1ZmRcdTA1ZmUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XGJc MlwyXHUwNWZlXHUwNjAwXDdcdTAwZmFcMlwyXHUwNWZmXHUwNWZiXDNcMlwyXDJcdTA1ZmYiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA2MDBcM1wyXDJcMlx1MDYwMFx1MDYwNVwzXDJc MlwyXHUwNjAxXHUwNjAyXDchXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDYw Mlx1MDYwNFw1XFwvXDJcdTA2MDNcdTA2MDFcM1wyXDJcMlx1MDYwNFx1MDYwN1wzIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA2MDVcdTA2MDNcM1wyXDJcMlx1MDYwNVx1MDYwNlwz XDJcMlwyXHUwNjA2XHUwNjA4IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA2MDdcdTA2MDVcM1wyXDJcMlx1MDYwOFx1MDYwOVw3IFwyXDJcdTA2MDkiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDBhYlwzXDJcMlwyXHUwNjBhXHUwNjBmXDVcdTAwYWVYXDJcdTA2MGJc dTA2MGNcNyhcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA2MGNcdTA2MGVcNVx1MDBh ZVhcMlx1MDYwZFx1MDYwYlwzXDJcMlwyXHUwNjBlXHUwNjExDQo+ICIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjBmXHUwNjBkXDNcMlwyXDJcdTA2MGZcdTA2MTBcM1wy XDJcMlx1MDYxMCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGFkXDNcMlwyXDJcdTA2MTFc dTA2MGZcM1wyXDJcMlx1MDYxMlx1MDYxZVw3XHUwMGZhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXHUwNjEzXHUwNjFlXDdcdTAwZWRcMlwyXHUwNjE0XHUwNjFlXDdcdTAwZWVcMlwyXHUw NjENCj4gNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjFlXDd5XDJcMlx1MDYxNlx1MDYx ZVw3e1wyXDJcdTA2MTdcdTA2MWVcN1x1MDA4MFwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc Mlx1MDYxOFx1MDYxZVw3fFwyXDJcdTA2MTlcdTA2MWVcN3ZcMlwyXHUwNjFhXHUwNjFlXDciKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoInVcMlwyXHUwNjFiXHUwNjFlXDd6XDJcMlx1MDYxY1x1MDYx ZVw3fVwyXDJcdTA2MWRcdTA2MTIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUw NjFkXHUwNjEzXDNcMlwyXDJcdTA2MWRcdTA2MTRcM1wyXDJcMlx1MDYxZCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNjE1XDNcMlwyXDJcdTA2MWRcdTA2MTZcM1wyXDJcMlx1MDYxZFx1MDYx N1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2MWRcdTA2MThcM1wyXDJcMlx1 MDYxZFx1MDYxOVwzXDJcMlwyXHUwNjFkXHUwNjFhXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXDJcMlx1MDYxZFx1MDYxYlwzXDJcMlwyXHUwNjFkXHUwNjFjXDNcMlwyXDJcdTA2MWVcdTAw YWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjFmXHUwNjIwXDdcdTAwOTdc MlwyXHUwNjIwXHUwNjIxXDVcdTAxMjRcdTAwOTMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcMlx1MDYyMVx1MDYyMlw3IFwyXDJcdTA2MjJcdTAwYjFcM1wyXDJcMlx1MDYyM1x1MDYyNCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAwOThcMlwyXHUwNjI0XHUwNjI1XDVcdTAxMjRc dTAwOTNcMlx1MDYyNVx1MDYyNlw3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiDQo+IFwy XDJcdTA2MjZcdTAwYjNcM1wyXDJcMlx1MDYyN1x1MDYyOVw1XHUwMGI2XFxcMlx1MDYyOCIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjI3XDNcMlwyXDJcdTA2MjlcdTA2MmNcM1wyXDJcMlx1 MDYyYVx1MDYyOFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2MmFcdTA2MmJc M1wyXDJcMlx1MDYyYlx1MDBiNVwzXDJcMlwyXHUwNjJjXHUwNjJhXDMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXDJcMlx1MDYyZFx1MDYzMFw1XHUwMDhhRlwyXHUwNjJlXHUwNjMwXDVcdTAw OWNPXDJcdTA2MmYNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2MmRcM1wyXDJcMlx1 MDYyZlx1MDYyZVwzXDJcMlwyXHUwNjMwXHUwMGI3XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDYzMVx1MDYzNFw1XHUwMGJhXlwyXHUwNjMyXHUwNjM0XDVcdTAwYzBhXDJcdTA2 MzNcdTA2Mw0KPiAxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDYzM1x1MDYz MlwzXDJcMlwyXHUwNjM0XHUwMGI5XDNcMlwyXDJcdTA2MzUiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDYzNlw3XFxcMlwyXHUwNjM2XHUwNjM3XDVSKlwyXHUwNjM3XHUwNjM4XDVUK1wyXHUw NjM4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2M2VcNyFcMlwyXHUwNjM5XHUwNjNhXDdA XDJcMlx1MDYzYVx1MDYzYlw3XGJcMlwyXHUwNjMNCj4gYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNjNjXDVcdTAwYmNfXDJcdTA2M2NcdTA2M2RcNyFcMlwyXHUwNjNkXHUwNjNmXDNcMlwy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDYzZVx1MDYzOVwzXDJcMlwyXHUwNjNlXHUw NjNmXDNcMlwyXDJcdTA2M2ZcdTA2NDQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wy XDJcMlx1MDY0MFx1MDY0MVw3dFwyXDJcdTA2NDFcdTA2NDJcN1xiXDJcMlx1MDY0MiIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlx1MDY0M1w3XHUwMGZhXDJcMlx1MDY0M1x1MDY0NVw3IVwy XDJcdTA2NDRcdTA2NDBcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNjQ0XHUw NjQ1XDNcMlwyXDJcdTA2NDVcdTA2NDZcM1wyXDJcMlx1MDY0Nlx1MDY0NyIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlw1XHUwMGI0W1wyXHUwNjQ3XHUwNjQ4XDddXDJcMlx1MDY0OFx1MDY0 OVw3DQo+IFwyXDJcdTA2NDkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBiYlwzXDJcMlwy XHUwNjRhXHUwNjRmXDVcdTAwYmVgXDJcdTA2NGJcdTA2NGNcNyhcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDJcdTA2NGNcdTA2NGVcNVx1MDBiZWBcMlx1MDY0ZFx1MDY0YlwzXDJcMlwyXHUw NjRlXHUwNjUxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA2NGZcdTA2 NGRcM1wyXDJcMlx1MDY0Zlx1MDY1MFwzXDJcMlwyXHUwNjUwIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTAwYmRcM1wyXDJcMlx1MDY1MVx1MDY0ZlwzXDJcMlwyXHUwNjUyXHUwNjU5XDdcdTAw ZmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA2NTNcdTA2NTlcN3VcMlwyXHUwNjU0 XHUwNjU5XDd2XDJcMlx1MDY1NVx1MDY1OSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDd3XDJc Mlx1MDY1Nlx1MDY1OVw3eFwyXDJcdTA2NTdcdTA2NTlcNVYsXDJcdTA2NThcdTA2NTIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjU4XHUwNjUzXDNcMlwyXDJcdTA2NThcdTA2 NTRcM1wyXDJcMlx1MDY1OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjU1XDNcMlwyXDJc dTA2NThcdTA2NTZcM1wyXDJcMlx1MDY1OFx1MDY1N1wzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA2NTlcdTAwYmZcM1wyXDJcMlx1MDY1YVx1MDY1Ylw3XHUwMGExXDJcMlx1MDY1 Ylx1MDY1YyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVQKVwyXHUwNjVjXHUwNjYyXDchXDJc Mlx1MDY1ZFx1MDY1ZVw3QFwyXDJcdTA2NWVcdTA2NWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilw3XGJcMlwyXHUwNjVmXHUwNjYwXDVcdTAwYzJiXDJcdTA2NjBcdTA2NjFcNyFcMlwyXHUwNjYx IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2NjNcM1wyXDJcMlx1MDY2Mlx1MDY1ZFwzXDJc MlwyXHUwNjYyXHUwNjYzXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY2M1x1 MDY2NFwzXDJcMlwyXHUwNjY0XHUwNjY1XDdcdTAwYTJcMlwyXHUwNjY1XHUwNjY2IikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA2NjZcdTA2NjdcN1x1MDBlY1wyXDJcdTA2 NjdcdTA2NjhcN1wzMFwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDY2OFx1MDY2OVw3 XHUwMGZhXDJcMlx1MDY2OVx1MDY2YVw3XDMxXDJcMlx1MDY2YVx1MDY2YiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDY2Ylx1MDY2Y1w1XHUwMDlhTlwyXHUwNjZjXHUwNjZkXDdc dTAwYTNcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNjZkXHUwNjZlXDcgXDJc Mlx1MDY2ZVx1MDBjMVwzXDJcMlwyXHUwNjZmXHUwNjc0XDUiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDBjNGNcMlx1MDY3MFx1MDY3MVw3KFwyXDJcdTA2NzFcdTA2NzNcNVx1MDBjNGNcMlx1 MDY3MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjcwXDNcMlwyXDJcdTA2NzNcdTA2NzZc M1wyXDJcMlx1MDY3NFx1MDY3MlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2 NzRcdTA2NzVcM1wyXDJcMlx1MDY3NVx1MDBjM1wzXDJcMlwyXHUwNjc2XHUwNjc0XDMiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDY3N1x1MDY3YVw3XHUwMGZhXDJcMlx1MDY3OFx1 MDY3YVw1VixcMlx1MDY3OSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjc3XDNcMlwyXDJc dTA2NzlcdTA2NzhcM1wyXDJcMlx1MDY3YVx1MDBjNVwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA2N2JcdTA2N2VcNVx1MDBjOGVcMlx1MDY3Y1x1MDY3ZVw1XHUwMGQwaVwyXHUw NjdkXHUwNjcNCj4gYiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNjdk XHUwNjdjXDNcMlwyXDJcdTA2N2VcdTAwYzdcM1wyXDJcMlx1MDY3ZiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNjgwXDdeXDJcMlx1MDY4MFx1MDY4MVw1UipcMlx1MDY4MVx1MDY4Mlw1VCtc Mlx1MDY4MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjg4XDchXDJcMlx1MDY4M1x1MDY4 NFw3QFwyXDJcdTA2ODRcdTA2ODVcN1xiXDJcMlx1MDY4NQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDY4Nlw1XHUwMGNjZ1wyXHUwNjg2XHUwNjg3XDchXDJcMlx1MDY4N1x1MDY4OVwz XDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA2ODhcdTA2ODNcM1wyXDJcMlx1MDY4 OFx1MDY4OVwzXDJcMlwyXHUwNjg5XHUwNjhlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTA2OGFcdTA2OGJcN3RcMlwyXHUwNjhiXHUwNjhjXDdcYlwyXDJcdTA2OGMiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA2OGRcN1x1MDBmYVwyXDJcdTA2OGRcdTA2OGZc NyFcMlwyXHUwNjhlXHUwNjhhXDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDY4 ZVx1MDY4ZlwzXDJcMlwyXHUwNjhmXHUwNjkwXDNcMlwyXDJcdTA2OTBcdTA2OTEiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDBjYWZcMlx1MDY5MVx1MDY5Mlw1XHUwMGI0W1wyXHUw NjkyXHUwNjkzXDdfXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDY5M1x1MDY5 NFw3IFwyXDJcdTA2OTRcdTAwYzlcM1wyXDJcMlx1MDY5NVx1MDY5Nlw3IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJgXDJcMlx1MDY5Nlx1MDY5OFw3XGJcMlwyXHUwNjk3XHUwNjk5XDdcMzVcMlwy XHUwNjk4XHUwNjk3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDY5OFx1MDY5 OVwzXDJcMlwyXHUwNjk5XHUwNjlhXDNcMlwyXDJcdTA2OWEiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDY5Ylw3XHUwMGZhXDJcMlx1MDY5Ylx1MDY5Y1w3IVwyXDJcdTA2OWNcdTA2OWRcN2Fc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA2OWRcdTA2OWZcN1xiXDJcMlx1MDY5ZVx1 MDZhMFw3XDM1XDJcMlx1MDY5Zlx1MDY5ZSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwz XDJcMlwyXHUwNjlmXHUwNmEwXDNcMlwyXDJcdTA2YTBcdTA2YTFcM1wyXDJcMlx1MDZhMSIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNmEyXDdcdTAwZmFcMlwyXHUwNmEyXHUwNmE3XDchXDJc Mlx1MDZhM1x1MDZhNFw3YlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDZhNFx1MDZh NVw3XGJcMlwyXHUwNmE1XHUwNmE2XDdcdTAwZmFcMlwyXHUwNmE2XHUwNmE4DQo+ICIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA2YTdcdTA2YTNcM1wyXDJcMlx1MDZhN1x1 MDZhOFwzXDJcMlwyXHUwNmE4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwY2JcM1wyXDJc Mlx1MDZhOVx1MDZhZVw1XHUwMGNlaFwyXHUwNmFhXHUwNmFiXDcoXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXHUwNmFiXHUwNmFkXDVcdTAwY2VoXDJcdTA2YWNcdTA2YWFcM1wyXDJcMlx1 MDZhZFx1MDZiMCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwNmFlXHUw NmFjXDNcMlwyXDJcdTA2YWVcdTA2YWZcM1wyXDJcMlx1MDZhZiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwMGNkXDNcMlwyXDJcdTA2YjBcdTA2YWVcM1wyXDJcMlx1MDZiMVx1MDZiYlw3XHUw MGZhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNmIyXHUwNmJiXDdcdTAwZWZcMlwy XHUwNmIzXHUwNmJiXDdcdTAwZjBcMlwyXHUwNmI0DQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNmJiXDdcdTAwZjFcMlwyXHUwNmI1XHUwNmJiXDdcdTAwZjJcMlwyXHUwNmI2XHUwNmJi IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBmM1wyXDJcdTA2YjdcdTA2YmJcN1x1MDBm NFwyXDJcdTA2YjhcdTA2YmJcN1x1MDBmNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1 MDZiOVx1MDZiYlw1VixcMlx1MDZiYVx1MDZiMVwzXDJcMlwyXHUwNmJhXHUwNmIyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDZiYVx1MDZiM1wzXDJcMlwyXHUwNmJhXHUwNmI0 XDNcMlwyXDJcdTA2YmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZiNVwzXDJcMlwyXHUw NmJhXHUwNmI2XDNcMlwyXDJcdTA2YmFcdTA2YjdcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwNmJhXHUwNmI4XDNcMlwyXDJcdTA2YmFcdTA2YjlcM1wyXDJcMlx1MDZiYlx1MDBj ZlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA2YmNcdTA2YmRcN1w2MFwyXDJc dTA2YmRcdTA2YmVcNVIqXDJcdTA2YmVcdTA2YmYNCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcNVQrXDJcdTA2YmZcdTA2YzVcNyFcMlwyXHUwNmMwXHUwNmMxXDdAXDJcMlx1MDZjMVx1MDZj MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA2YzJcdTA2YzNcNVx1MDBkMmpc Mlx1MDZjM1x1MDZjNFw3IVwyXDJcdTA2YzQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJc dTA2YzZcM1wyXDJcMlx1MDZjNVx1MDZjMFwzXDJcMlwyXHUwNmM1XHUwNmM2XDNcMlwyXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZjNlx1MDZjOFwzXDJcMlwyXHUwNmM3XHUwNmM5XDVc dTAwY2FmXDJcdTA2YzhcdTA2YzciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJc Mlx1MDZjOFx1MDZjOVwzXDJcMlwyXHUwNmM5XHUwNmNhXDNcMlwyXDJcdTA2Y2EiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcdTA2Y2JcNVx1MDBiNFtcMlx1MDZjYlx1MDZjY1w3XDYxXDJc Mlx1MDZjY1x1MDZjZFw3ICIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJcdTA2Y2Rc dTAwZDFcM1wyXDJcMlx1MDZjZVx1MDZkM1w1XHUwMGNlaFwyXHUwNmNmIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA2ZDBcNyhcMlwyXHUwNmQwXHUwNmQyXDVcdTAwY2VoXDJcdTA2ZDFcdTA2 Y2ZcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwNmQyXHUwNmQ1XDNcMlwyXDJc dTA2ZDNcdTA2ZDFcM1wyXDJcMlx1MDZkM1x1MDZkNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDNcMlwyXDJcdTA2ZDRcdTAwZDNcM1wyXDJcMlx1MDZkNVx1MDZkM1wzXDJcMlwyXHUwNmQ2IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA2ZDlcNVx1MDBkNmxcMlx1MDZkN1x1MDZkOVw1XHUw MGRjb1wyXHUwNmQ4XHUwNmQ2XDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDZk OFx1MDZkN1wzXDJcMlwyXHUwNmQ5XHUwMGQ1XDNcMlwyXDJcdTA2ZGFcdTA2ZGINCj4gIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcN2ZcMlwyXHUwNmRiXHUwNmRjXDVQKVwyXHUwNmRjXHUwNmUy XDchXDJcMlx1MDZkZFx1MDZkZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdAXDJcMlx1MDZk ZVx1MDZkZlw3XGJcMlwyXHUwNmRmXHUwNmUwXDVcdTAwZDhtXDJcdTA2ZTANCj4gIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmUxXDchXDJcMlx1MDZlMVx1MDZlM1wzXDJcMlwyXHUw NmUyXHUwNmRkXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDZlMlx1MDZlM1wz XDJcMlwyXHUwNmUzXHUwNmU4XDNcMlwyXDJcdTA2ZTRcdTA2ZTVcNyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgidFwyXDJcdTA2ZTVcdTA2ZTZcN1xiXDJcMlx1MDZlNlx1MDZlN1w3XHUwMGZhXDJc Mlx1MDZlNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDZlOVw3IVwyXDJcdTA2ZThc dTA2ZTRcM1wyXDJcMlx1MDZlOFx1MDZlOVwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA2ZTlcdTA2ZWFcM1wyXDJcMlx1MDZlYVx1MDZlYlw3aFwyXDJcdTA2ZWJcdTA2ZWNcNyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXGJcMlwyXHUwNmVjXHUwNmVkXDdcdTAwZmFcMlwyXHUw NmVkXHUwNmVlXDchXDJcMlx1MDZlZSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDZl Zlw3aVwyXDJcdTA2ZWZcdTA2ZjBcN1xiXDJcMlx1MDZmMFx1MDZmMVw3XHUwMGZhIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNmYxXHUwNmYyXDchXDJcMlx1MDZmMlx1MDZmM1w1XHUw MGI0W1wyXHUwNmYzXHUwNmY0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdnXDJcMlx1 MDZmNFx1MDZmNVw3DQo+IFwyXDJcdTA2ZjVcdTAwZDdcM1wyXDJcMlx1MDZmNlx1MDZmYiIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlw1XHUwMGRhblwyXHUwNmY3XHUwNmY4XDcoXDJcMlx1 MDZmOFx1MDZmYVw1XHUwMGRhblwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNmY5 XHUwNmY3XDNcMlwyXDJcdTA2ZmFcdTA2ZmRcM1wyXDJcMlx1MDZmYlx1MDZmOVwzIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA2ZmJcdTA2ZmNcM1wyXDJcMlx1MDZmY1x1MDBkOVwz XDJcMlwyXHUwNmZkXHUwNmZiIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJc dTA2ZmVcdTA3MDJcN1x1MDBmYVwyXDJcdTA2ZmZcdTA3MDJcN1wxM1wyXDIiKQ0KPiANCj4gKyAg ICAgICAgYnVmLndyaXRlKCJcdTA3MDBcdTA3MDJcNVYsXDJcdTA3MDFcdTA2ZmVcM1wyXDJcMlx1 MDcwMVx1MDZmZlwzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA3MDFcdTA3MDBc M1wyXDJcMlx1MDcwMlx1MDBkYlwzXDJcMlwyXHUwNzAzXHUwNzA0IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcN2RcMlwyXHUwNzA0XHUwNzA1XDVQKVwyXHUwNzA1XHUwNzBiXDchXDJcMlx1MDcw Nlx1MDcwNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdAXDJcMlx1MDcwN1x1MDcwOFw3XGJc MlwyXHUwNzA4XHUwNzA5XDVcdTAwZGVwXDJcdTA3MDkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcdTA3MGFcNyFcMlwyXHUwNzBhXHUwNzBjXDNcMlwyXDJcdTA3MGJcdTA3MDZcM1wyXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzBiXHUwNzBjXDNcMlwyXDJcdTA3MGNcdTA3 MTFcM1wyXDJcMlx1MDcwZFx1MDcwZVw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ0XDJcMlx1 MDcwZVx1MDcwZlw3XGJcMlwyXHUwNzBmXHUwNzEwXDdcdTAwZmFcMlwyXHUwNzEwIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwNzEyXDchXDJcMlx1MDcxMVx1MDcwZFwzXDJcMlwyXHUw NzExXHUwNzEyXDNcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MTJcdTA3 MTNcM1wyXDJcMlx1MDcxM1x1MDcxNFw3aFwyXDJcdTA3MTRcdTA3MTVcNyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXGJcMlwyXHUwNzE1XHUwNzE2XDdcdTAwZmFcMlwyXHUwNzE2XHUwNzE3XDch XDJcMlx1MDcxNyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDcxOFw3aVwyXDJcdTA3 MThcdTA3MTlcN1xiXDJcMlx1MDcxOVx1MDcxYVw3XHUwMGZhIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDJcMlx1MDcxYVx1MDcxZlw3IVwyXDJcdTA3MWJcdTA3MWNcN2pcMlwyXHUwNzFj XHUwNzFkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDcxZFx1MDcxZVw3XHUw MGZhXDJcMlx1MDcxZVx1MDcyMFw3IVwyXDJcdTA3MWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDcxYlwzXDJcMlwyXHUwNzFmXHUwNzIwXDNcMlwyXDJcdTA3MjBcdTA3MjFcM1wyXDJcMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzIxXHUwNzIyXDVcdTAwYjRbXDJcdTA3MjJcdTA3 MjNcN2VcMlwyXHUwNzIzXHUwNzI0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDcNCj4g XDJcMlx1MDcyNFx1MDBkZFwzXDJcMlwyXHUwNzI1XHUwNzJhXDVcdTAwZTBxXDJcdTA3MjYiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDcyN1w3KFwyXDJcdTA3MjdcdTA3MjlcNVx1MDBlMHFc Mlx1MDcyOFx1MDcyNlwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA3MjlcdTA3 MmNcM1wyXDJcMlx1MDcyYVx1MDcyOFwzXDJcMlwyXHUwNzJhXHUwNzJiIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcM1wyXDJcMlx1MDcyYlx1MDBkZlwzXDJcMlwyXHUwNzJjXHUwNzJhXDNcMlwy XDJcdTA3MmQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDczMFw3XHUwMGZhXDJcMlx1MDcy ZVx1MDczMFw1VixcMlx1MDcyZlx1MDcyZFwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDJcdTA3MmZcdTA3MmVcM1wyXDJcMlx1MDczMFx1MDBlMVwzXDJcMlwyXHUwNzMxXHUwNzMyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1w2M1wyXDJcdTA3MzJcdTA3MzNcNVApXDJcdTA3MzNc dTA3MzhcNyFcMlwyXHUwNzM0XHUwNzM1IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdc NjRcMlwyXHUwNzM1XHUwNzM2XDdcYlwyXDJcdTA3MzZcdTA3MzdcN1x1MDBmYVwyXDIiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA3MzdcdTA3MzlcNyFcMlwyXHUwNzM4XHUwNzM0XDNc MlwyXDJcdTA3MzhcdTA3MzlcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUwNzM5 XHUwNzNmXDNcMlwyXDJcdTA3M2FcdTA3M2JcN0BcMlwyXHUwNzNiXHUwNzNjIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDczY1x1MDczZFw1XHUwMGU0c1wyXHUwNzNkXHUwNzNl XDchXDJcMlx1MDczZSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDc0MFwzXDJcMlwy XHUwNzNmXHUwNzNhXDNcMlwyXDJcdTA3M2ZcdTA3NDBcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwNzQwXHUwNzQxXDNcMlwyXDJcdTA3NDFcdTA3NDJcNVx1MDBiNFtcMlx1MDc0 Mlx1MDc0MyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XDY1XDJcMlx1MDc0M1x1MDc0 NFw3IFwyXDJcdTA3NDRcdTAwZTNcM1wyXDJcMlx1MDc0NSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwNzRhXDVcdTAwZTZ0XDJcdTA3NDZcdTA3NDdcNyhcMlwyXHUwNzQ3XHUwNzQ5XDVcdTAw ZTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInRcMlx1MDc0OFx1MDc0NlwzXDJcMlwyXHUwNzQ5 XHUwNzRjXDNcMlwyXDJcdTA3NGFcdTA3NDgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJc MlwyXHUwNzRhXHUwNzRiXDNcMlwyXDJcdTA3NGJcdTAwZTVcM1wyXDJcMlx1MDc0YyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwNzRhXDNcMlwyXDJcdTA3NGRcdTA3NTJcN1x1MDBmYVwyXDJc dTA3NGVcdTA3NTJcN1x1MDBjMA0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA3 NGZcdTA3NTJcN1x1MDBjMVwyXDJcdTA3NTBcdTA3NTJcNVYsXDJcdTA3NTFcdTA3NGQiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwNzUxXHUwNzRlXDNcMlwyXDJcdTA3NTFcdTA3 NGZcM1wyXDJcMlx1MDc1MSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDc1MFwzXDJc MlwyXHUwNzUyXHUwMGU3XDNcMlwyXDJcdTA3NTNcdTA3YWVcN0FcMlwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA3NTRcdTA3NTVcNVApXDJcdTA3NTVcdTA3NWJcNyFcMlwyXHUwNzU2XHUw NzU3XDdAXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwNzU3XHUwNzU4XDdcYlwyXDJc dTA3NThcdTA3NTlcNVx1MDBlY3dcMlx1MDc1OVx1MDc1YQ0KPiAiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcNyFcMlwyXHUwNzVhXHUwNzVjXDNcMlwyXDJcdTA3NWJcdTA3NTZcM1wyXDJc Mlx1MDc1YiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzVjXDNcMlwyXDJcdTA3NWNcdTA3 NWRcM1wyXDJcMlx1MDc1ZFx1MDc1ZVw1XHUwMGI0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJb XDJcdTA3NWVcdTA3YWZcM1wyXDJcMlx1MDc1Zlx1MDc2MFw3Q1wyXDJcdTA3NjBcdTA3NjEiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMDhmXDJcMlx1MDc2MVx1MDc2Mlw3XGJcMlwyXHUw NzYyXHUwNzYzXDdcdTAwZmJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwNzYz XHUwNzY0XDdcMzRcMlwyXHUwNzY0XHUwNzY1XDdcdTAwZmJcMlwyXHUwNzY1IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA3NjZcNyFcMlwyXHUwNzY2XHUwNzY3XDdcNjJcMlwyXHUwNzY3XHUw NzY4XDdcYlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc2OFx1MDc2OVw3XHUwMGVj XDJcMlx1MDc2OVx1MDc2YVw3XDMwXDJcMlx1MDc2YVx1MDc2YiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDdcdTAwZmFcMlwyXHUwNzZiXHUwNzZjXDdcMzFcMlwyXHUwNzZjXHUwNzZkXDchXDJc Mlx1MDc2ZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDc2ZVw3PVwyXDJcdTA3NmVc dTA3NmZcN1xiXDJcMlx1MDc2Zlx1MDc3MFw3XHUwMGVjIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXHUwNzcwXHUwNzcxXDdcMzBcMlwyXHUwNzcxXHUwNzcyXDdcdTAwZmFcMlwyXHUwNzcy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3NzNcN1wzMVwyXDJcdTA3NzNcdTA3NzRcNyFc MlwyXHUwNzc0XHUwNzc1XDVcdTAwZWEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoInZcMlx1MDc3 NVx1MDc3Nlw3RFwyXDJcdTA3NzZcdTA3NzdcN1x1MDA4ZlwyXDJcdTA3NzdcdTA3NzgNCj4gIikN Cj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA3NzhcdTA3NzlcN1x1MDBmYlwy XDJcdTA3NzlcdTA3N2FcN1wzNFwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc3YVx1 MDc3Ylw3XHUwMGZiXDJcMlx1MDc3Ylx1MDc3Y1w3IVwyXDJcdTA3N2NcdTA3N2QiKQ0KPiANCj4g KyAgICAgICAgYnVmLndyaXRlKCJcN1w2MlwyXDJcdTA3N2RcdTA3N2VcN1xiXDJcMlx1MDc3ZVx1 MDc3Zlw3XHUwMGVjXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzdmXHUwNzgwXDdc MzBcMlwyXHUwNzgwXHUwNzgxXDdcdTAwZmFcMlwyXHUwNzgxXHUwNzgyIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDdcMzFcMlwyXHUwNzgyXHUwNzgzXDchXDJcMlx1MDc4M1x1MDc4NFw3 PVwyXDJcdTA3ODQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDc4NVw3XGJcMlwyXHUwNzg1 XHUwNzg2XDdcdTAwZWNcMlwyXHUwNzg2XHUwNzg3XDdcMzAiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwyXDJcdTA3ODdcdTA3ODhcN1x1MDBmYVwyXDJcdTA3ODhcdTA3ODlcN1wzMVwyXDJcdTA3 ODkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA3OGFcNyFcMlwyXHUwNzhhXHUwNzhi XDVcdTAwZWF2XDJcdTA3OGJcdTA3OGNcN0VcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc dTA3OGNcdTA3OGRcN1x1MDA4ZlwyXDJcdTA3OGRcdTA3OGVcN1xiXDJcMlx1MDc4ZVx1MDc4Zg0K PiAiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBmYlwyXDJcdTA3OGZcdTA3OTBc N1wzNFwyXDJcdTA3OTBcdTA3OTFcN1x1MDBmYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc Mlx1MDc5MVx1MDc5Mlw3IVwyXDJcdTA3OTJcdTA3OTNcN1w2MlwyXDJcdTA3OTNcdTA3OTQiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1xiXDJcMlx1MDc5NFx1MDc5NVw3XHUwMGVjXDJc Mlx1MDc5NVx1MDc5Nlw3XDMwXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzk2XHUw Nzk3XDdcdTAwZmFcMlwyXHUwNzk3XHUwNzk4XDdcMzFcMlwyXHUwNzk4XHUwNzk5IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcNyFcMlwyXHUwNzk5XHUwNzlhXDc9XDJcMlx1MDc5YVx1MDc5Ylw3 XGJcMlwyXHUwNzliXHUwNzljDQo+ICIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XHUw MGVjXDJcMlx1MDc5Y1x1MDc5ZFw3XDMwXDJcMlx1MDc5ZFx1MDc5ZVw3XHUwMGZhIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwNzllXHUwNzlmXDdcMzFcMlwyXHUwNzlmXHUwN2EwXDch XDJcMlx1MDdhMFx1MDdhNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAwZWF2XDJcdTA3 YTFcdTA3YTJcN0BcMlwyXHUwN2EyXHUwN2EzXDdcYlwyXDJcdTA3YTMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDdhNFw1XHUwMGVjd1wyXHUwN2E0XHUwN2E1XDchXDJcMlx1MDdhNVx1MDdh N1wzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA3YTZcdTA3YTFcM1wyXDJcMlx1 MDdhNlx1MDdhN1wzXDJcMlwyXHUwN2E3XHUwN2FiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1wyXDJcMlx1MDdhOFx1MDdhYVw1XHUwMDhjR1wyXHUwN2E5XHUwN2E4XDNcMlwyXDJcdTA3YWEi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdhZFwzXDJcMlwyXHUwN2FiXHUwN2E5XDNcMlwy XDJcdTA3YWJcdTA3YWNcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2FjXHUw N2FmXDNcMlwyXDJcdTA3YWRcdTA3YWJcM1wyXDJcMlx1MDdhZVx1MDc1NFwzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMlwyXDJcdTA3YWVcdTA3NWZcM1wyXDJcMlx1MDdhZlx1MDdiMFwzXDJc MlwyXHUwN2IwXHUwN2IxIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdCXDJcMlx1MDdi MVx1MDdiMlw3DQo+IFwyXDJcdTA3YjJcdTAwZTlcM1wyXDJcMlx1MDdiM1x1MDdiNCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDdgXDJcMlx1MDdiNFx1MDdiNVw3XGJcMlwyXHUwN2I1XHUwN2I2 XDdcdTAwZmFcMlwyXHUwN2I2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA3YjdcNyFcMlwy XHUwN2I3XHUwN2I4XDdhXDJcMlx1MDdiOFx1MDdiOVw3XGJcMlwyXHUwN2I5DQo+ICIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwN2JhXDdcdTAwZmFcMlwyXHUwN2JhXHUwN2JmXDchXDJcMlx1 MDdiYlx1MDdiY1w3YlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDdiY1x1MDdiZFw3 XGJcMlwyXHUwN2JkXHUwN2JlXDdcdTAwZmFcMlwyXHUwN2JlXHUwN2MNCj4gMCIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlw3IVwyXDJcdTA3YmZcdTA3YmJcM1wyXDJcMlx1MDdiZlx1MDdj MFwzXDJcMlwyXHUwN2MwIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwN2M1XDNcMlwy XDJcdTA3YzFcdTA3YzJcN2NcMlwyXHUwN2MyXHUwN2MzXDdcYlwyXDIiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MDdjM1x1MDdjNFw3XHUwMGZhXDJcMlx1MDdjNFx1MDdjNlw3IVwyXDJcdTA3 YzVcdTA3YzEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDdjNVx1MDdj NlwzXDJcMlwyXHUwN2M2XHUwMGViXDNcMlwyXDJcdTA3YzciKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDdjY1w1XHUwMGVleFwyXHUwN2M4XHUwN2M5XDcoXDJcMlx1MDdjOVx1MDdjYlw1XHUw MGVlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJ4XDJcdTA3Y2FcdTA3YzhcM1wyXDJcMlx1MDdj Ylx1MDdjZVwzXDJcMlwyXHUwN2NjXHUwN2NhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wy XDJcMlx1MDdjY1x1MDdjZFwzXDJcMlwyXHUwN2NkXHUwMGVkXDNcMlwyXDJcdTA3Y2UiKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA3Y2NcM1wyXDJcMlx1MDdjZlx1MDdkMFx0XDZcMlwy XHUwN2QwXHUwMGVmXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdkMVx1MDgy Y1w3RlwyXDJcdTA3ZDJcdTA3ZDNcNVApXDJcdTA3ZDNcdTA3ZDlcNyFcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcdTA3ZDRcdTA3ZDVcN0BcMlwyXHUwN2Q1XHUwN2Q2XDdcYlwyXDJcdTA3 ZDZcdTA3ZDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMGY0e1wyXHUwN2Q3XHUwN2Q4 XDchXDJcMlx1MDdkOFx1MDdkYVwzXDJcMlwyXHUwN2Q5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA3ZDRcM1wyXDJcMlx1MDdkOVx1MDdkYVwzXDJcMlwyXHUwN2RhXHUwN2RiXDNcMlwyXDIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDdkYlx1MDdkY1w1XHUwMGI0W1wyXHUwN2RjXHUw ODJkXDNcMlwyXDJcdTA3ZGRcdTA3ZGUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3SFwyXDJc dTA3ZGVcdTA3ZGZcN1x1MDA4ZlwyXDJcdTA3ZGZcdTA3ZTBcN1xiXDJcMlx1MDdlMCIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwN2UxXDdcdTAwZmJcMlwyXHUwN2UxXHUwN2UyXDdcMzRcMlwy XHUwN2UyXHUwN2UzXDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBmYlwyXDJcdTA3ZTNc dTA3ZTRcNyFcMlwyXHUwN2U0XHUwN2U1XDdcNjJcMlwyXHUwN2U1IikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA3ZTZcN1xiXDJcMlx1MDdlNlx1MDdlN1w3XHUwMGVjXDJcMlx1MDdlN1x1MDdl OFw3XDMwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwN2U4XHUwN2U5XDdcdTAwZmFc MlwyXHUwN2U5XHUwN2VhXDdcMzFcMlwyXHUwN2VhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTA3ZWJcNyFcMlwyXHUwN2ViXHUwN2VjXDc9XDJcMlx1MDdlY1x1MDdlZFw3XGJcMlwyXHUwN2UN Cj4gZCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDdlZVw3XHUwMGVjXDJcMlx1MDdl ZVx1MDdlZlw3XDMwXDJcMlx1MDdlZlx1MDdmMFw3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAwZmFcMlwyXHUwN2YwXHUwN2YxXDdcMzFcMlwyXHUwN2YxXHUwN2YyXDchXDJcMlx1MDdmMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwN2YzXDVcdTAwZjJ6XDJcdTA3ZjNcdTA3ZjRcN0lc MlwyXHUwN2Y0XHUwN2Y1XDdcdTAwOGYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwy XHUwN2Y1XHUwN2Y2XDdcYlwyXDJcdTA3ZjZcdTA3ZjdcN1x1MDBmYlwyXDJcdTA3ZjciKQ0KPiAN Cj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA3ZjhcN1wzNFwyXDJcdTA3ZjhcdTA3ZjlcN1x1MDBm YlwyXDJcdTA3ZjlcdTA3ZmFcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiIVwyXDJcdTA3ZmFc dTA3ZmJcN1w2MlwyXDJcdTA3ZmJcdTA3ZmNcN1xiXDJcMlx1MDdmY1x1MDdmZCIpDQo+IA0KPiAr ICAgICAgICBidWYud3JpdGUoIlw3XHUwMGVjXDJcMlx1MDdmZFx1MDdmZVw3XDMwXDJcMlx1MDdm ZVx1MDdmZlw3XHUwMGZhIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwN2ZmXHUwODAw XDdcMzFcMlwyXHUwODAwXHUwODAxXDchXDJcMlx1MDgwMVx1MDgwMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDc9XDJcMlx1MDgwMlx1MDgwM1w3XGJcMlwyXHUwODAzXHUwODA0XDdcdTAwZWNc MlwyXHUwODA0IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwODA1XDdcMzBcMlwyXHUw ODA1XHUwODA2XDdcdTAwZmFcMlwyXHUwODA2XHUwODA3XDciKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwzMVwyXDJcdTA4MDdcdTA4MDhcNyFcMlwyXHUwODA4XHUwODA5XDVcdTAwZjJ6XDJcdTA4 MDkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA4MGFcN0pcMlwyXHUwODBhXHUwODBi XDdcdTAwOGZcMlwyXHUwODBiXHUwODBjXDdcYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc Mlx1MDgwY1x1MDgwZFw3XHUwMGZiXDJcMlx1MDgwZFx1MDgwZVw3XDM0XDJcMlx1MDgwZSIpDQo+ IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDgwZlw3XHUwMGZiXDJcMlx1MDgwZlx1MDgxMFw3 IVwyXDJcdTA4MTBcdTA4MTFcN1w2MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDgx MVx1MDgxMlw3XGJcMlwyXHUwODEyXHUwODEzXDdcdTAwZWNcMlwyXHUwODEzIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwODE0XDdcMzBcMlwyXHUwODE0XHUwODE1XDdcdTAwZmFcMlwy XHUwODE1XHUwODE2XDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzMVwyXDJcdTA4MTZcdTA4 MTdcNyFcMlwyXHUwODE3XHUwODE4XDc9XDJcMlx1MDgxOFx1MDgxOSIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlw3XGJcMlwyXHUwODE5XHUwODFhXDdcdTAwZWNcMlwyXHUwODFhXHUwODFi XDdcMzBcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4MWJcdTA4MWNcN1x1MDBmYVwy XDJcdTA4MWNcdTA4MWRcN1wzMVwyXDJcdTA4MWRcdTA4MWUiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlw3IVwyXDJcdTA4MWVcdTA4MjRcNVx1MDBmMnpcMlx1MDgxZlx1MDgyMFw3QFwyXDJcdTA4 MjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDgyMVw3XGJcMlwyXHUwODIxXHUwODIyXDVc dTAwZjR7XDJcdTA4MjJcdTA4MjNcNyFcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA4 MjNcdTA4MjVcM1wyXDJcMlx1MDgyNFx1MDgxZlwzXDJcMlwyXHUwODI0XHUwODI1IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDgyNVx1MDgyOVwzXDJcMlwyXHUwODI2XHUwODI4 XDVcdTAwOGNHXDJcdTA4MjciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDgyNlwzXDJcMlwy XHUwODI4XHUwODJiXDNcMlwyXDJcdTA4MjlcdTA4MjdcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwODI5XHUwODJhXDNcMlwyXDJcdTA4MmFcdTA4MmRcM1wyXDJcMlx1MDgyYlx1 MDgyOVwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA4MmNcdTA3ZDJcM1wyXDJc Mlx1MDgyY1x1MDdkZFwzXDJcMlwyXHUwODJkXHUwODJlDQo+ICIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlwzXDJcMlwyXHUwODJlXHUwODJmXDdHXDJcMlx1MDgyZlx1MDgzMFw3DQo+IFwy XDJcdTA4MzBcdTAwZjEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDgz MVx1MDgzMlw3YFwyXDJcdTA4MzJcdTA4MzNcN1xiXDJcMlx1MDgzMyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwODM0XDdcdTAwZmFcMlwyXHUwODM0XHUwODM1XDchXDJcMlx1MDgzNVx1MDgz Nlw3YVwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDgzNlx1MDgzN1w3XGJcMlwyXHUw ODM3XHUwODM4XDdcdTAwZmFcMlwyXHUwODM4XHUwODNkDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDchXDJcMlx1MDgzOVx1MDgzYVw3YlwyXDJcdTA4M2FcdTA4M2JcN1xiXDJcMlx1MDgz Ylx1MDgzYw0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGZhXDJcMlx1MDgzY1x1 MDgzZVw3IVwyXDJcdTA4M2RcdTA4MzlcM1wyXDJcMlx1MDgzZCIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlx1MDgzZVwzXDJcMlwyXHUwODNlXHUwODQzXDNcMlwyXDJcdTA4M2ZcdTA4NDBc N2NcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4NDBcdTA4NDFcN1xiXDJcMlx1MDg0 MVx1MDg0Mlw3XHUwMGZhXDJcMlx1MDg0Mlx1MDg0NCIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlw3IVwyXDJcdTA4NDNcdTA4M2ZcM1wyXDJcMlx1MDg0M1x1MDg0NFwzXDJcMlwyXHUwODQ0 IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGYzXDNcMlwyXDJcdTA4NDVcdTA4NGFc NVx1MDBmNnxcMlx1MDg0Nlx1MDg0N1w3KFwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1 MDg0N1x1MDg0OVw1XHUwMGY2fFwyXHUwODQ4XHUwODQ2XDNcMlwyXDJcdTA4NDlcdTA4NGMiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODRhXHUwODQ4XDNcMlwyXDJcdTA4NGFc dTA4NGJcM1wyXDJcMlx1MDg0YiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDBmNVwz XDJcMlwyXHUwODRjXHUwODRhXDNcMlwyXDJcdTA4NGRcdTA4NGVcdFw3XDJcMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwODRlXHUwMGY3XDNcMlwyXDJcdTA4NGZcdTA4NTRcNVx1MDEwNFx1 MDA4M1wyXHUwODUwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4NTRcNVx1MDBmY1wxNzdc Mlx1MDg1MVx1MDg1NFw1XHUwMGZlXHUwMDgwXDJcdTA4NTIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDg1NFw1XHUwMTBlXHUwMDg4XDJcdTA4NTNcdTA4NGZcM1wyXDJcMlx1MDg1M1x1MDg1 MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4NTNcdTA4NTFcM1wyXDJcMlx1 MDg1M1x1MDg1MlwzXDJcMlwyXHUwODU0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwZjlc M1wyXDJcMlx1MDg1NVx1MDg1Nlw1XHUwMTA0XHUwMDgzXDJcdTA4NTZcdTA4NTciKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlw1XHUwMTBhXHUwMDg2XDJcdTA4NTdcdTA4NThcNVx1MDEwY1x1MDA4 N1wyXHUwODU4XHUwODU5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDEwZVx1MDA4OFwy XHUwODU5XHUwMGZiXDNcMlwyXDJcdTA4NWFcdTA4NWJcNVx1MDEwYSIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwMDg2XDJcdTA4NWJcdTAwZmRcM1wyXDJcMlx1MDg1Y1x1MDg1ZFw1XHUwMTBj XHUwMDg3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDg1ZFx1MDBmZlwzXDJcMlwyXHUw ODVlXHUwODY1XDVwOVwyXHUwODVmXHUwODY1XDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDA4OEVcMlx1MDg2MFx1MDg2NVw1XHUwMGY4fVwyXHUwODYxXHUwODY1XDVcdTAxMThcdTAwOGQN Cj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MDg2Mlx1MDg2NVw1XHUwMTFjXHUwMDhm XDJcdTA4NjNcdTA4NjVcNVx1MDExMFx1MDA4OSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc dTA4NjRcdTA4NWVcM1wyXDJcMlx1MDg2NFx1MDg1ZlwzXDJcMlwyXHUwODY0XHUwODYwIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MDg2NFx1MDg2MVwzXDJcMlwyXHUwODY0XHUw ODYyXDNcMlwyXDJcdTA4NjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg2M1wzXDJcMlwy XHUwODY1XHUwMTAxXDNcMlwyXDJcdTA4NjZcdTA4NmJcNXA5XDJcdTA4NjcNCj4gIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTA4NmJcNVx1MDA4OEVcMlx1MDg2OFx1MDg2Ylw1XHUwMTE4XHUw MDhkXDJcdTA4NjlcdTA4NmINCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDExMFx1 MDA4OVwyXHUwODZhXHUwODY2XDNcMlwyXDJcdTA4NmFcdTA4NjdcM1wyXDIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwyXHUwODZhXHUwODY4XDNcMlwyXDJcdTA4NmFcdTA4NjlcM1wyXDJcMlx1 MDg2Ylx1MDEwMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwODZjXHUw ODZkXDdsXDJcMlx1MDg2ZFx1MDg2ZVw1XHUwMTI0XHUwMDkzIikNCj4gDQo+ICsgICAgICAgIGJ1 Zi53cml0ZSgiXDJcdTA4NmVcdTA4NzJcNw0KPiBcMlwyXHUwODZmXHUwODcxXDVcdTAxMDBcdTAw ODFcMlx1MDg3MCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDg2ZlwzXDJcMlwyXHUw ODcxXHUwODc0XDNcMlwyXDJcdTA4NzJcdTA4NzBcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwODcyXHUwODczXDNcMlwyXDJcdTA4NzNcdTA4NzVcM1wyXDJcMlx1MDg3NFx1MDg3 MlwzIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlwyXHUwODc1XHUwODc2XDdzXDJc Mlx1MDg3Nlx1MDg3N1w3DQo+IFwyXDJcdTA4NzdcdTAxMDUiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwzXDJcMlwyXHUwODc4XHUwODg1XDdrXDJcMlx1MDg3OVx1MDg3YVw3QFwyXDJcdTA4N2Fc dTA4Nw0KPiBiIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1xiXDJcMlx1MDg3Ylx1MDg4MFw1 XHUwMDllUFwyXHUwODdjXHUwODdkXDcoXDJcMlx1MDg3ZCIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlx1MDg3Zlw1XHUwMDllUFwyXHUwODdlXHUwODdjXDNcMlwyXDJcdTA4N2ZcdTA4ODJc M1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwODgwXHUwODdlXDNcMlwyXDJcdTA4 ODBcdTA4ODFcM1wyXDJcMlx1MDg4MVx1MDg4MyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IlwzXDJcMlwyXHUwODgyXHUwODgwXDNcMlwyXDJcdTA4ODNcdTA4ODRcNyFcMlwyXHUwODg0IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4ODZcM1wyXDJcMlx1MDg4NVx1MDg3OVwzXDJcMlwy XHUwODg1XHUwODg2XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg4Nlx1MDg4 N1wzXDJcMlwyXHUwODg3XHUwODg4XDVcdTAxMjRcdTAwOTNcMlx1MDg4OCIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlx1MDg4OVw3DQo+IFwyXDJcdTA4ODlcdTAxMDdcM1wyXDJcMlx1MDg4 YVx1MDg5N1w3S1wyXDJcdTA4OGIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg4Y1w3QFwy XDJcdTA4OGNcdTA4OGRcN1xiXDJcMlx1MDg4ZFx1MDg5Mlw1XHUwMDllIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJQXDJcdTA4OGVcdTA4OGZcNyhcMlwyXHUwODhmXHUwODkxXDVcdTAwOWVQXDJc dTA4OTBcdTA4OGUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwODkxXHUwODk0 XDNcMlwyXDJcdTA4OTJcdTA4OTBcM1wyXDJcMlx1MDg5MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwODkzXDNcMlwyXDJcdTA4OTNcdTA4OTVcM1wyXDJcMlx1MDg5NFx1MDg5MlwzXDJcMlwy IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwODk1XHUwODk2XDchXDJcMlx1MDg5Nlx1 MDg5OFwzXDJcMlwyXHUwODk3XHUwODhiXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJc Mlx1MDg5N1x1MDg5OFwzXDJcMlwyXHUwODk4XHUwODk5XDNcMlwyXDJcdTA4OTlcdTA4OWEiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDEyNFx1MDA5M1wyXHUwODlhXHUwODliXDcg XDJcMlx1MDg5Ylx1MDEwOVwzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA4OWNc dTA4YTlcN2tcMlwyXHUwODlkXHUwODllXDdAXDJcMlx1MDg5ZVx1MDg5Zlw3IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcYlwyXDJcdTA4OWZcdTA4YTRcNVx1MDA5ZVBcMlx1MDhhMFx1MDhhMVw3 KFwyXDJcdTA4YTEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDhhM1w1XHUwMDllUFwyXHUw OGEyXHUwOGEwXDNcMlwyXDJcdTA4YTNcdTA4YTZcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcMlwyXHUwOGE0XHUwOGEyXDNcMlwyXDJcdTA4YTRcdTA4YTVcM1wyXDJcMlx1MDhhNVx1MDhh NyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwOGE2XHUwOGE0XDNcMlwy XDJcdTA4YTdcdTA4YThcNyFcMlwyXHUwOGE4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4 YWFcM1wyXDJcMlx1MDhhOVx1MDg5ZFwzXDJcMlwyXHUwOGE5XHUwOGFhXDNcMlwyXDIiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlx1MDhhYVx1MDhhYlwzXDJcMlwyXHUwOGFiXHUwOGFjXDVcdTAx MjRcdTAwOTNcMlx1MDhhYyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDhiMFw3IFwy XDJcdTA4YWRcdTA4YWZcNVx1MDEwMFx1MDA4MVwyXHUwOGFlXHUwOGFkIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcM1wyXDJcMlx1MDhhZlx1MDhiMlwzXDJcMlwyXHUwOGIwXHUwOGFlXDNcMlwy XDJcdTA4YjAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDhiMVwzXDJcMlwyXHUwOGIxXHUw OGIzXDNcMlwyXDJcdTA4YjJcdTA4YjBcM1wyXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlx1MDhiM1x1MDhiNFw3c1wyXDJcdTA4YjRcdTA4YjVcNw0KPiBcMlwyXHUwOGI1XHUwMTBi XDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDhiNlx1MDhjM1w3S1wyXDJcdTA4 YjdcdTA4YjhcN0BcMlwyXHUwOGI4XHUwOGI5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1xi XDJcMlx1MDhiOVx1MDhiZVw1XHUwMDllUFwyXHUwOGJhXHUwOGJiXDcoXDJcMlx1MDhiYiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGJkXDVcdTAwOWVQXDJcdTA4YmNcdTA4YmFcM1wyXDJc Mlx1MDhiZFx1MDhjMFwzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA4YmVcdTA4 YmNcM1wyXDJcMlx1MDhiZVx1MDhiZlwzXDJcMlwyXHUwOGJmXHUwOGMxIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4YzBcdTA4YmVcM1wyXDJcMlx1MDhjMVx1MDhjMlw3 IVwyXDJcdTA4YzIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA4YzRcM1wyXDJcMlx1 MDhjM1x1MDhiN1wzXDJcMlwyXHUwOGMzXHUwOGM0XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYu d3JpdGUoIlx1MDhjNFx1MDhjNVwzXDJcMlwyXHUwOGM1XHUwOGM2XDVcdTAxMjRcdTAwOTNcMlx1 MDhjNiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDhjYVw3IFwyXDJcdTA4YzdcdTA4 YzlcNVx1MDEwMFx1MDA4MVwyXHUwOGM4XHUwOGM3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXDNcMlwyXDJcdTA4YzlcdTA4Y2NcM1wyXDJcMlx1MDhjYVx1MDhjOFwzXDJcMlwyXHUwOGNh IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGNiXDNcMlwyXDJcdTA4Y2JcdTA4Y2Rc M1wyXDJcMlx1MDhjY1x1MDhjYVwzXDJcMlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XHUwOGNkXHUwOGNlXDdzXDJcMlx1MDhjZVx1MDhjZlw3IFwyXDJcdTA4Y2ZcdTAxMGRcM1wyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwOGQwXHUwOGQxXDdwXDJcMlx1MDhkMVx1MDhk Mlw3XDYyXDJcMlx1MDhkMlx1MDhkMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJc dTA4ZDNcdTA4ZDRcN1x1MDBlY1wyXDJcdTA4ZDRcdTA4ZDVcN1wzMFwyXDIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDhkNVx1MDhkNlw3XHUwMGZhXDJcMlx1MDhkNlx1MDhkN1w3XDMxXDJc Mlx1MDhkN1x1MDhlNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDchXDJcMlx1MDhkOFx1MDhk OVw3QFwyXDJcdTA4ZDlcdTA4ZGFcN1xiXDJcMlx1MDhkYVx1MDhkDQo+IGYiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlw1XHUwMDllUFwyXHUwOGRiXHUwOGRjXDcoXDJcMlx1MDhkY1x1MDhkZVw1 XHUwMDllUFwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4ZGRcdTA4ZGJcM1wyXDJcMlx1 MDhkZVx1MDhlMVwzXDJcMlwyXHUwOGRmXHUwOGRkXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo IlwyXDJcMlx1MDhkZlx1MDhlMFwzXDJcMlwyXHUwOGUwXHUwOGUyXDNcMlwyXDJcdTA4ZTFcdTA4 ZGYNCj4gIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA4ZTJcdTA4ZTNc NyFcMlwyXHUwOGUzXHUwOGU1XDNcMlwyXDJcdTA4ZTQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDhkOFwzXDJcMlwyXHUwOGU0XHUwOGU1XDNcMlwyXDJcdTA4ZTVcdTA4ZTZcM1wyXDJcMiIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOGU2XHUwOGU3XDVcdTAxMjRcdTAwOTNcMlx1MDhl N1x1MDhlOFw3c1wyXDJcdTA4ZTgiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZTlc NyBcMlwyXHUwOGU5XHUwMTBmXDNcMlwyXDJcdTA4ZWFcdTA4ZWVcNVx1MDExMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwMDhhXDJcdTA4ZWJcdTA4ZWVcNVx1MDExNFx1MDA4YlwyXHUwOGVj XHUwOGVlXDVcdTAxMTYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDA4Y1wyXHUwOGVkXHUw OGVhXDNcMlwyXDJcdTA4ZWRcdTA4ZWJcM1wyXDJcMlx1MDhlZCIpDQo+IA0KPiArICAgICAgICBi dWYud3JpdGUoIlx1MDhlY1wzXDJcMlwyXHUwOGVlXHUwMTExXDNcMlwyXDJcdTA4ZWZcdTA4ZjBc N21cMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA4ZjBcdTA4ZjFcN1x1MDA5NlwyXDJc dTA4ZjFcdTA4ZjJcN1xiXDJcMlx1MDhmMlx1MDhmMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDdcdTAwZmFcMlwyXHUwOGYzXHUwOGY0XDchXDJcMlx1MDhmNFx1MDhmNVw3dFwyXDJcdTA4ZjUi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA4ZjZcN1xiXDJcMlx1MDhmNlx1MDhmN1w3 XHUwMGZhXDJcMlx1MDhmN1x1MDhmOFw3ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1 MDhmOFx1MDExM1wzXDJcMlwyXHUwOGY5XHUwOGZhXDdOXDJcMlx1MDhmYVx1MDhmYiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDc9XDJcMlx1MDhmYlx1MDhmY1w3XGJcMlwyXHUwOGZjXHUwOGZk XDdcdTAwZWNcMlwyXHUwOGZkIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOGZlXDdc MzBcMlwyXHUwOGZlXHUwOGZmXDdcdTAwZmFcMlwyXHUwOGZmXHUwOTAwXDciKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlwzMVwyXDJcdTA5MDBcdTA5MDFcNyFcMlwyXHUwOTAxXHUwOTAyXDc+XDJc Mlx1MDkwMlx1MDkwMyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XGJcMlwyXHUwOTAz XHUwOTA0XDdcdTAwZWNcMlwyXHUwOTA0XHUwOTA1XDdcMzBcMlwyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcdTA5MDVcdTA5MDZcN1x1MDBmYVwyXDJcdTA5MDZcdTA5MDdcN1wzMVwyXDJcdTA5 MDdcdTA5MGUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3IVwyXDJcdTA5MDhcdTA5MDlcNz5c MlwyXHUwOTA5XHUwOTBhXDdcYlwyXDJcdTA5MGFcdTA5MGINCj4gIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDdcdTAwZWNcMlwyXHUwOTBiXHUwOTBjXDdcMzBcMlwyXHUwOTBjXHUwOTBk XDdcdTAwZmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA5MGRcdTA5MGZcN1wzMVwy XDJcdTA5MGVcdTA5MDhcM1wyXDJcMlx1MDkwZVx1MDkwZiIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXHUwOTBmXHUwOTEwXDNcMlwyXDJcdTA5MTBcdTA5MTFcNyBcMlwyXHUw OTExIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMTVcM1wyXDJcMlx1MDkxMlx1MDkxM1x0 XGJcMlwyXHUwOTEzXHUwOTE0XDdcdTAwODciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJc dTA5MTRcdTA5MTVcNyFcMlwyXHUwOTE1XHUwOTE2XDcvXDJcMlx1MDkxNlx1MDkxNyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDdcYlwyXDJcdTA5MTdcdTA5MThcN1x1MDBmYVwyXDJcdTA5MThc dTA5MTlcNyFcMlwyXHUwOTE5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5MWFcN1w2Mlwy XDJcdTA5MWFcdTA5MWJcN1xiXDJcMlx1MDkxYlx1MDkxY1w3XHUwMGVjIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlwyXHUwOTFjXHUwOTFkXDdcMzBcMlwyXHUwOTFkXHUwOTFlXDdcdTAwZmFc MlwyXHUwOTFlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTFmXDdcMzFcMlwyXHUw OTFmXHUwOTIwXDchXDJcMlx1MDkyMFx1MDkyMVw3PVwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MDkyMVx1MDkyMlw3XGJcMlwyXHUwOTIyXHUwOTIzXDdcdTAwZWNcMlwyXHUwOTIzXHUw OTI0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcN1wzMFwyXDJcdTA5MjRcdTA5MjVcN1x1MDBm YVwyXDJcdTA5MjVcdTA5MzFcN1wzMVwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDky Nlx1MDkyN1w3IVwyXDJcdTA5MjdcdTA5MjhcN0BcMlwyXHUwOTI4XHUwOTI5XDdcYiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MDkyOVx1MDkyZVw1XHUwMDllUFwyXHUwOTJhXHUwOTJi XDcoXDJcMlx1MDkyYlx1MDkyDQo+IGQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMDll UFwyXHUwOTJjXHUwOTJhXDNcMlwyXDJcdTA5MmRcdTA5MzBcM1wyXDJcMlx1MDkyZSIpDQo+IA0K PiArICAgICAgICBidWYud3JpdGUoIlx1MDkyY1wzXDJcMlwyXHUwOTJlXHUwOTJmXDNcMlwyXDJc dTA5MmZcdTA5MzJcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTMwXHUwOTJl XDNcMlwyXDJcdTA5MzFcdTA5MjZcM1wyXDJcMlx1MDkzMVx1MDkzMlwzIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlwyXDJcdTA5MzJcdTA5MzdcM1wyXDJcMlx1MDkzM1x1MDkzNFw3IVwyXDJc dTA5MzRcdTA5MzUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3dFwyXDJcdTA5MzVcdTA5MzZc N1xiXDJcMlx1MDkzNlx1MDkzOFw3XHUwMGZhXDJcMlx1MDkzNyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXHUwOTMzXDNcMlwyXDJcdTA5MzdcdTA5MzhcM1wyXDJcMlx1MDkzOFx1MDkzOVwzXDJc MlwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwOTM5XHUwOTNhXDcgXDJcMlx1MDkz YVx1MDExN1wzXDJcMlwyXHUwOTNiXHUwOTNjXDciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJMXDJcMlx1MDkzY1x1MDkzZFw3XHUwMGZhXDJcMlx1MDkzZFx1MDkzZVw3DQo+IFwyXDJcdTA5 M2UiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAxMTlcM1wyXDJcMlx1MDkzZlx1MDk0 MVw3XHUwMDg4XDJcMlx1MDk0MFx1MDk0Mlw3ISIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc Mlx1MDk0MVx1MDk0MFwzXDJcMlwyXHUwOTQxXHUwOTQyXDNcMlwyXDJcdTA5NDJcdTA5NDMiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDk0M1x1MDk0NFw3LlwyXDJcdTA5 NDRcdTA5NDVcN1xiXDJcMlx1MDk0NSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDk0 Nlw3XHUwMGVjXDJcMlx1MDk0Nlx1MDk0N1w3XDMwXDJcMlx1MDk0N1x1MDk0OFw3IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAwZmFcMlwyXHUwOTQ4XHUwOTQ5XDdcMzFcMlwyXHUwOTQ5XHUw OTU0XDchXDJcMlx1MDk0YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTRiXDdcdTAwOGRc MlwyXHUwOTRiXHUwOTRjXDdcdTAwZmFcMlwyXHUwOTRjXHUwOTRkIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcNyFcMlwyXHUwOTRkXHUwOTRlXDdcdTAwODlcMlwyXHUwOTRlXHUwOTRmXHRcdFwy XDJcdTA5NGYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5NTVcNw0KPiBcMlwyXHUw OTUwXHUwOTUxXDdNXDJcMlx1MDk1MVx1MDk1Mlw3XGJcMlwyXHUwOTUyIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXHUwOTUzXDdcdTAwZmFcMlwyXHUwOTUzXHUwOTU1XDcgXDJcMlx1MDk1 NFx1MDk0YVwzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTA5NTRcdTA5NTBcM1wy XDJcMlx1MDk1NVx1MDExYlwzXDJcMlwyXHUwOTU2XHUwOTU3IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcN1x1MDBhN1wyXDJcdTA5NTdcdTA5NThcN1tcMlwyXHUwOTU4XHUwOTU5XDdcYlwyXDJc dTA5NTkiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YTFcNUxcJ1wyXHUwOTVhXHUw OTViXDchXDJcMlx1MDk1Ylx1MDk1Y1w3XHUwMGE5XDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcMlx1MDk1Y1x1MDk5OVw3XGJcMlwyXHUwOTVkXHUwOTYxXDdTXDJcMlx1MDk1ZVx1MDk1 ZiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XDMyXDJcMlx1MDk1Zlx1MDk2MFw3XHUw MGZhXDJcMlx1MDk2MFx1MDk2Mlw3XDMzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw OTYxXHUwOTVlXDNcMlwyXDJcdTA5NjFcdTA5NjJcM1wyXDJcMlx1MDk2Mlx1MDk5YVwzIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA5NjNcdTA5NjdcN1RcMlwyXHUwOTY0XHUwOTY1 XDdcMzJcMlwyXHUwOTY1XHUwOTY2IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDdcdTAw ZmFcMlwyXHUwOTY2XHUwOTY4XDdcMzNcMlwyXHUwOTY3XHUwOTY0XDNcMlwyXDIiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlx1MDk2N1x1MDk2OFwzXDJcMlwyXHUwOTY4XHUwOTlhXDNcMlwyXDJc dTA5NjlcdTA5NmRcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiVVwyXDJcdTA5NmFcdTA5NmJc N1wzMlwyXDJcdTA5NmJcdTA5NmNcN1x1MDBmYVwyXDJcdTA5NmMiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTA5NmVcN1wzM1wyXDJcdTA5NmRcdTA5NmFcM1wyXDJcMlx1MDk2ZFx1MDk2 ZVwzXDJcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXHUwOTZlXHUwOTlhXDNcMlwy XDJcdTA5NmZcdTA5NzNcN1ZcMlwyXHUwOTcwXHUwOTcxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcN1wzMlwyXDJcdTA5NzFcdTA5NzJcN1x1MDBmYVwyXDJcdTA5NzJcdTA5NzRcN1wzM1wyXDIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDk3M1x1MDk3MFwzXDJcMlwyXHUwOTczXHUwOTc0 XDNcMlwyXDJcdTA5NzRcdTA5OWFcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlwyXHUw OTc1XHUwOTc5XDdSXDJcMlx1MDk3Nlx1MDk3N1w3XDMyXDJcMlx1MDk3N1x1MDk3OA0KPiAiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1x1MDBmYVwyXDJcdTA5NzhcdTA5N2FcN1wzM1wy XDJcdTA5NzlcdTA5NzZcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOTc5XHUw OTdhXDNcMlwyXDJcdTA5N2FcdTA5OWFcM1wyXDJcMlx1MDk3Ylx1MDk3Zlw3IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJXXDJcMlx1MDk3Y1x1MDk3ZFw3XDMyXDJcMlx1MDk3ZFx1MDk3ZVw3XHUw MGZhXDJcMlx1MDk3ZSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MDk4MFw3XDMzXDJc Mlx1MDk3Zlx1MDk3Y1wzXDJcMlwyXHUwOTdmXHUwOTgwXDNcMlwyIikNCj4gDQo+ICsgICAgICAg IGJ1Zi53cml0ZSgiXDJcdTA5ODBcdTA5OWFcM1wyXDJcMlx1MDk4MVx1MDk4NVw3WFwyXDJcdTA5 ODJcdTA5ODMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XDMyXDJcMlx1MDk4M1x1MDk4NFw3 XHUwMGZhXDJcMlx1MDk4NFx1MDk4Nlw3XDMzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwOTg1XHUwOTgyXDNcMlwyXDJcdTA5ODVcdTA5ODZcM1wyXDJcMlx1MDk4Nlx1MDk5YVwzIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA5ODdcdTA5OGJcN1lcMlwyXHUwOTg4XHUw OTg5XDdcMzJcMlwyXHUwOTg5XHUwOThhDQo+ICIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo Ilw3XHUwMGZhXDJcMlx1MDk4YVx1MDk4Y1w3XDMzXDJcMlx1MDk4Ylx1MDk4OFwzXDJcMlwyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5OGJcdTA5OGNcM1wyXDJcMlx1MDk4Y1x1MDk5YVwz XDJcMlwyXHUwOThkXHUwOTkxXDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlpcMlwyXHUwOThl XHUwOThmXDdcMzJcMlwyXHUwOThmXHUwOTkwXDdcdTAwZmFcMlwyXHUwOTkwIikNCj4gDQo+ICsg ICAgICAgIGJ1Zi53cml0ZSgiXHUwOTkyXDdcMzNcMlwyXHUwOTkxXHUwOThlXDNcMlwyXDJcdTA5 OTFcdTA5OTJcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwOTkyXHUwOTlhXDNc MlwyXDJcdTA5OTNcdTA5OTdcN1x1MDBmYlwyXDJcdTA5OTRcdTA5OTUNCj4gIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcN1wzMlwyXDJcdTA5OTVcdTA5OTZcN1x1MDBmYVwyXDJcdTA5OTZcdTA5 OThcN1wzM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDk5N1x1MDk5NFwzXDJcMlwy XHUwOTk3XHUwOTk4XDNcMlwyXDJcdTA5OThcdTA5OWFcMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDJcMlwyXHUwOTk5XHUwOTVkXDNcMlwyXDJcdTA5OTlcdTA5NjNcM1wyXDJcMlx1MDk5OVx1 MDk2OSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwOTk5XHUwOTZmXDNc MlwyXDJcdTA5OTlcdTA5NzVcM1wyXDJcMlx1MDk5OSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwOTdiXDNcMlwyXDJcdTA5OTlcdTA5ODFcM1wyXDJcMlx1MDk5OVx1MDk4N1wzXDJcMlwyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5OTlcdTA5OGRcM1wyXDJcMlx1MDk5OVx1MDk5M1wz XDJcMlwyXHUwOTlhXHUwOTllXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MDk5 Ylx1MDk5ZFw1XHUwMTFlXHUwMDkwXDJcdTA5OWNcdTA5OWJcM1wyXDJcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwOTlkXHUwOWEwXDNcMlwyXDJcdTA5OWVcdTA5OWNcM1wyXDJcMlx1MDk5 ZVx1MDk5ZlwzIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXDJcdTA5OWZcdTA5YTJcM1wy XDJcMlx1MDlhMFx1MDk5ZVwzXDJcMlwyXHUwOWExXHUwOTVhIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcM1wyXDJcMlx1MDlhMVx1MDlhMlwzXDJcMlwyXHUwOWEyXHUwOWFiXDNcMlwyXDJcdTA5 YTMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5YTdcNyFcMlwyXHUwOWE0XHUwOWE2 XDVcdTAxMWNcdTAwOGZcMlx1MDlhNVx1MDlhNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNc MlwyXDJcdTA5YTZcdTA5YTlcM1wyXDJcMlx1MDlhN1x1MDlhNVwzXDJcMlwyXHUwOWE3IikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5YThcM1wyXDJcMlx1MDlhOFx1MDlhYVwzXDJcMlwyXHUw OWE5XHUwOWE3XDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDlhYVx1MDlhY1w3 XHUwMGE4XDJcMlx1MDlhYlx1MDlhM1wzXDJcMlwyXHUwOWFiXHUwOWFjIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5YWNcdTA5YWRcM1wyXDJcMlx1MDlhZFx1MDlhZVw3 IFwyXDJcdTA5YWUiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAxMWRcM1wyXDJcMlx1 MDlhZlx1MDliMFw3IVwyXDJcdTA5YjBcdTA5YjRcN1x1MDBhYSIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDJcMlx1MDliMVx1MDliMlw3XDMyXDJcMlx1MDliMlx1MDliM1w3XHUwMGZhXDJcMlx1 MDliMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWI1XDdcMzNcMlwyXHUwOWI0XHUwOWIx XDNcMlwyXDJcdTA5YjRcdTA5YjVcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUw OWI1XHUwOWJhXDNcMlwyXDJcdTA5YjZcdTA5YjdcN1wzNFwyXDJcdTA5YjdcdTA5YjkiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMTVjXHUwMGFmXDJcdTA5YjhcdTA5YjZcM1wyXDJcMlx1 MDliOVx1MDliY1wzXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTA5YmFcdTA5Yjhc M1wyXDJcMlx1MDliYVx1MDliYlwzXDJcMlwyXHUwOWJiXHUwOWJkIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcM1wyXDJcMlx1MDliY1x1MDliYVwzXDJcMlwyXHUwOWJkXHUwOWJlXDdcYlwyXDJc dTA5YmUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDliZlw3XHUwMGZhXDJcMlx1MDliZlx1 MDExZlwzXDJcMlwyXHUwOWMwXHUwOWMxXDVcdTAxMjIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcdTAwOTJcMlx1MDljMVx1MDljMlw3IFwyXDJcdTA5YzJcdTAxMjFcM1wyXDJcMlx1MDlj MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWM0XDdcdTAwYWJcMlwyXHUwOWM0XHUwMTIz XDNcMlwyXDJcdTA5YzVcdTA5Y2FcNVx1MDEyOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw MDk1XDJcdTA5YzZcdTA5YzdcN1x1MDBkY1wyXDJcdTA5YzdcdTA5YzlcNVx1MDEyOFx1MDA5NQ0K PiAiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlx1MDljOFx1MDljNlwzXDJcMlwyXHUw OWM5XHUwOWNjXDNcMlwyXDJcdTA5Y2FcdTA5YzgiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcM1wyXDJcMlx1MDljYVx1MDljYlwzXDJcMlwyXHUwOWNiXHUwMTI1XDNcMlwyXDJcdTA5Y2Mi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDljYVwzXDJcMlwyXHUwOWNkXHUwOWQyXDVcdTAx MjhcdTAwOTVcMlx1MDljZVx1MDljZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdcdTAwZGNc MlwyXHUwOWNmXHUwOWQxXDVcdTAxMjhcdTAwOTVcMlx1MDlkMFx1MDljZVwzIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMlwyXDJcdTA5ZDFcdTA5ZDRcM1wyXDJcMlx1MDlkMlx1MDlkMFwzXDJc MlwyXHUwOWQyXHUwOWQzDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTA5 ZDNcdTAxMjdcM1wyXDJcMlx1MDlkNFx1MDlkMlwzXDJcMlwyXHUwOWQ1IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTA5ZGFcNVx1MDEyYVx1MDA5NlwyXHUwOWQ2XHUwOWQ3XDdcdTAwZGJcMlwy XHUwOWQ3XHUwOWQNCj4gOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAxMmFcdTAwOTZc Mlx1MDlkOFx1MDlkNlwzXDJcMlwyXHUwOWQ5XHUwOWRjXDNcMlwyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcMlx1MDlkYVx1MDlkOFwzXDJcMlwyXHUwOWRhXHUwOWRiXDNcMlwyXDJcdTA5ZGJc dTAxMjkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwOWRjXHUwOWRhXDNcMlwy XDJcdTA5ZGRcdTA5ZTJcNVx1MDEyY1x1MDA5NyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJc dTA5ZGVcdTA5ZGZcNyhcMlwyXHUwOWRmXHUwOWUxXDVcdTAxMmNcdTAwOTdcMlx1MDllMCIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWRlXDNcMlwyXDJcdTA5ZTFcdTA5ZTRcM1wyXDJcMlx1 MDllMlx1MDllMFwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZTJcdTA5ZTNc M1wyXDJcMlx1MDllM1x1MDEyYlwzXDJcMlwyXHUwOWU0XHUwOWUyXDMiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXDJcMlx1MDllNVx1MDllYVw1XHUwMTJlXHUwMDk4XDJcdTA5ZTZcdTA5ZTdc NylcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5ZTdcdTA5ZTlcNVx1MDEyZVx1MDA5 OFwyXHUwOWU4XHUwOWU2XDNcMlwyXDJcdTA5ZTkiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDllY1wzXDJcMlwyXHUwOWVhXHUwOWU4XDNcMlwyXDJcdTA5ZWFcdTA5ZWJcM1wyXDJcMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWViXHUwMTJkXDNcMlwyXDJcdTA5ZWNcdTA5ZWFcM1wy XDJcMlx1MDllZFx1MDlmMVw1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAxMzJcdTAwOWFc Mlx1MDllZVx1MDlmMFw1XHUwMTMwXHUwMDk5XDJcdTA5ZWZcdTA5ZWUiKQ0KPiANCj4gKyAgICAg ICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MDlmMFx1MDlmM1wzXDJcMlwyXHUwOWYxXHUwOWVmXDNc MlwyXDJcdTA5ZjEiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZjJcM1wyXDJcMlx1 MDlmMlx1MDEyZlwzXDJcMlwyXHUwOWYzXHUwOWYxXDNcMlwyXDIiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTA5ZjRcdTA5ZjVcN1wiXDJcMlx1MDlmNVx1MDlmOVw1XHUwMTMyXHUwMDlh XDJcdTA5ZjYiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZjdcNyNcMlwyXHUwOWY3 XHUwOWY5XDVcdTAxMzJcdTAwOWFcMlx1MDlmOFx1MDlmNCIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlwzXDJcMlwyXHUwOWY4XHUwOWY2XDNcMlwyXDJcdTA5ZjlcdTAxMzFcM1wyXDJcMlx1 MDlmYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwOWZlXDVcdTAxMzZcdTAwOWNcMlx1MDlm Ylx1MDlmZFw1XHUwMTM0XHUwMDliXDJcdTA5ZmMiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRl KCJcdTA5ZmJcM1wyXDJcMlx1MDlmZFx1MGEwMFwzXDJcMlwyXHUwOWZlXHUwOWZjXDNcMlwyXDIi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTA5ZmVcdTA5ZmZcM1wyXDJcMlx1MDlmZlx1 MDEzM1wzXDJcMlwyXHUwYTAwXHUwOWZlXDMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJc Mlx1MGEwMVx1MGEwMlw3JVwyXDJcdTBhMDJcdTBhMGFcNVx1MDEzNlx1MDA5Y1wyIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTBhMDNcdTBhMDRcNyRcMlwyXHUwYTA0XHUwYTBhXDVcdTAxMzZc dTAwOWNcMlx1MGEwNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTA2XDdcJ1wyXDJcdTBh MDZcdTBhMGFcNVx1MDEzNlx1MDA5Y1wyXHUwYTA3XHUwYTA4IikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcNyZcMlwyXHUwYTA4XHUwYTBhXDVcdTAxMzZcdTAwOWNcMlx1MGEwOVx1MGEwMVwzXDJc MiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTBhMDlcdTBhMDNcM1wyXDJcMlx1MGEwOVx1 MGEwNVwzXDJcMlwyXHUwYTA5XHUwYTA3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MGEwYVx1MDEzNVwzXDJcMlwyXHUwYTBiXHUwYTBmXDVcdTAxM2FcdTAwOWUiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwyXHUwYTBjXHUwYTBlXDVcdTAxMzhcdTAwOWRcMlx1MGEwZFx1MGEw Y1wzXDJcMlwyXHUwYTBlIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTExXDNcMlwy XDJcdTBhMGZcdTBhMGRcM1wyXDJcMlx1MGEwZlx1MGExMFwzXDJcMlwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTBhMTBcdTAxMzdcM1wyXDJcMlx1MGExMVx1MGEwZlwzXDJcMlwyXHUwYTEy XHUwYTEzXDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxmXDJcMlx1MGExM1x1MGExN1w1XHUw MTNhXHUwMDllXDJcdTBhMTRcdTBhMTVcN1xyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwYTE1XHUwYTE3XDVcdTAxM2FcdTAwOWVcMlx1MGExNlx1MGExMlwzXDJcMlwyXHUwYTE2IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMTRcM1wyXDJcMlx1MGExN1x1MDEzOVwzXDJcMlwy XHUwYTE4XHUwYTFjXDVcdTAxM2UiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBhMFwyXHUw YTE5XHUwYTFiXDVcdTAxM2NcdTAwOWZcMlx1MGExYVx1MGExOVwzXDJcMiIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcdTBhMWJcdTBhMWVcM1wyXDJcMlx1MGExY1x1MGExYVwzXDJcMlwyXHUw YTFjXHUwYTFkIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGExZFx1MDEzYlwz XDJcMlwyXHUwYTFlXHUwYTFjXDNcMlwyXDJcdTBhMWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MGEyMFw3XDE2XDJcMlx1MGEyMFx1MGEyNFw1XHUwMTNlXHUwMGEwXDJcdTBhMjFcdTBhMjIi KQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcN1wzNVwyXDJcdTBhMjJcdTBhMjRcNVx1MDEz ZVx1MDBhMFwyXHUwYTIzXHUwYTFmXDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1 MGEyM1x1MGEyMVwzXDJcMlwyXHUwYTI0XHUwMTNkXDNcMlwyXDJcdTBhMjVcdTBhMjkiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMTQyXHUwMGEyXDJcdTBhMjZcdTBhMjhcNVx1MDE0MFx1 MDBhMVwyXHUwYTI3XHUwYTI2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGEy OFx1MGEyYlwzXDJcMlwyXHUwYTI5XHUwYTI3XDNcMlwyXDJcdTBhMjkiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlx1MGEyYVwzXDJcMlwyXHUwYTJhXHUwMTNmXDNcMlwyXDJcdTBhMmJcdTBhMjlc M1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTJjXHUwYTJkXDdcMTdcMlwyXHUw YTJkXHUwYTMzXDVcdTAxNDJcdTAwYTJcMlx1MGEyZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwYTJmXDdcMzdcMlwyXHUwYTJmXHUwYTMzXDVcdTAxNDJcdTAwYTJcMlx1MGEzMFx1MGEzMSIp DQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XDIwXDJcMlx1MGEzMVx1MGEzM1w1XHUwMTQy XHUwMGEyXDJcdTBhMzJcdTBhMmNcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUw YTMyXHUwYTJlXDNcMlwyXDJcdTBhMzJcdTBhMzBcM1wyXDJcMlx1MGEzM1x1MDE0MSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBhMzRcdTBhMzVcN1wzMFwyXDJcdTBhMzVcdTBh MzZcdFxuXDJcMlx1MGEzNiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGEzOFw3XDMx XDJcMlx1MGEzN1x1MGEzNFwzXDJcMlwyXHUwYTM4XHUwYTNiXDNcMlwyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcMlx1MGEzOVx1MGEzN1wzXDJcMlwyXHUwYTM5XHUwYTNhXDNcMlwyXDJcdTBh M2FcdTBhM2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTNiXHUwYTM5XDNc MlwyXDJcdTBhM2NcdTBhM2RcNVx1MDE0NFx1MDBhMyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDJcdTBhM2RcdTAxNDNcM1wyXDJcMlx1MGEzZVx1MGE0Ylw1XHUwMTQ2XHUwMGE0XDJcdTBhM2Yi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE0Ylw1XHUwMTQ4XHUwMGE1XDJcdTBhNDBcdTBh NGJcNVx1MDE0YVx1MDBhNlwyXHUwYTQxIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhNGJc NVx1MDE0Y1x1MDBhN1wyXHUwYTQyXHUwYTRiXDVcdTAxNGVcdTAwYThcMlx1MGE0MyIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXHUwYTRiXDVcdTAxNmNcdTAwYjdcMlx1MGE0NFx1MGE0Ylw1XHUw MTZlXHUwMGI4XDJcdTBhNDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE0Ylw1XHUwMTg0 XHUwMGMzXDJcdTBhNDZcdTBhNGJcNVx1MDE5NFx1MDBjYlwyXHUwYTQ3IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTBhNDhcN1x1MDBkZFwyXDJcdTBhNDhcdTBhNGJcNVx1MDE0NFx1MDBhM1wy XHUwYTQ5XHUwYTQNCj4gYiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDVcdTAxNGFcdTAwYTZc Mlx1MGE0YVx1MGEzZVwzXDJcMlwyXHUwYTRhXHUwYTNmXDNcMlwyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcMlx1MGE0YVx1MGE0MFwzXDJcMlwyXHUwYTRhXHUwYTQxXDNcMlwyXDJcdTBhNGFc dTBhNDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTRhXHUwYTQzXDNcMlwy XDJcdTBhNGFcdTBhNDRcM1wyXDJcMlx1MGE0YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUw YTQ1XDNcMlwyXDJcdTBhNGFcdTBhNDZcM1wyXDJcMlx1MGE0YVx1MGE0N1wzXDJcMlwyIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhNGFcdTBhNDlcM1wyXDJcMlx1MGE0Ylx1MDE0NVwzXDJc MlwyXHUwYTRjXHUwYTRkXDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBlN1wyXDJcdTBh NGRcdTBhNGVcN1wzMFwyXDJcdTBhNGVcdTBhNGZcNVx1MDEyNlx1MDA5NCIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcdTBhNGZcdTBhNTBcNyFcMlwyXHUwYTUwXHUwYTUxXDVcdTAxMjZcdTAw OTRcMlx1MGE1MSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYTUyXDdcMzFcMlwyXHUwYTUy XHUwMTQ3XDNcMlwyXDJcdTBhNTNcdTBhNTRcN1x1MDBlNSIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlwyXDJcdTBhNTRcdTBhNTVcN1wzMFwyXDJcdTBhNTVcdTBhNTZcNVx1MDEyNlx1MDA5 NFwyIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTU2XHUwYTU3XDchXDJcMlx1MGE1 N1x1MGE1OFw1XHUwMTI2XHUwMDk0XDJcdTBhNTgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MGE1OVw3XDMxXDJcMlx1MGE1OVx1MDE0OVwzXDJcMlwyXHUwYTVhXHUwYTViXDdcdTAwZTYiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwYTViXHUwYTVjXDdcMzBcMlwyXHUwYTVj XHUwYTVkXDVcdTAxMjZcdTAwOTRcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGE1 ZFx1MGE1ZVw3IVwyXDJcdTBhNWVcdTBhNWZcNVx1MDEyNlx1MDA5NFwyXHUwYTVmIikNCj4gDQo+ ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwYTYwXDchXDJcMlx1MGE2MFx1MGE2MVw1TFwnXDJcdTBh NjFcdTBhNjJcN1wzMVwyXDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTBhNjJcdTAx NGJcM1wyXDJcMlx1MGE2M1x1MGE2NFw3XDMwXDJcMlx1MGE2NFx1MGE2NSIpDQo+IA0KPiArICAg ICAgICBidWYud3JpdGUoIlw1XHUwMTI2XHUwMDk0XDJcdTBhNjVcdTBhNjZcN1wzMVwyXDJcdTBh NjZcdTAxNGRcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwYTY3XHUwYTczXDVc dTAxNTBcdTAwYTlcMlx1MGE2OFx1MGE3M1w1XHUwMTUyXHUwMGFhDQo+ICIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcdTBhNjlcdTBhNzNcNVx1MDE1NFx1MDBhYlwyXHUwYTZhXHUwYTczXDVc dTAxNTZcdTAwYWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYTZiXHUwYTczXDVcdTAx NThcdTAwYWRcMlx1MGE2Y1x1MGE3M1w1XHUwMTVlXHUwMGIwIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcMlx1MGE2ZFx1MGE3M1w1XHUwMTYwXHUwMGIxXDJcdTBhNmVcdTBhNzNcNVx1MDE2Mlx1 MDBiMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTBhNmZcdTBhNzNcNVx1MDE2NFx1MDBi M1wyXHUwYTcwXHUwYTczXDVcdTAxNjZcdTAwYjQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwy XHUwYTcxXHUwYTczXDVcdTAxNmFcdTAwYjZcMlx1MGE3Mlx1MGE2N1wzXDJcMlwyXHUwYTcyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhNjhcM1wyXDJcMlx1MGE3Mlx1MGE2OVwzXDJcMlwy XHUwYTcyXHUwYTZhXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE3Mlx1MGE2 YlwzXDJcMlwyXHUwYTcyXHUwYTZjXDNcMlwyXDJcdTBhNzJcdTBhNmRcMyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXDJcMlwyXHUwYTcyXHUwYTZlXDNcMlwyXDJcdTBhNzJcdTBhNmZcM1wyXDJc Mlx1MGE3Mlx1MGE3MCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTcy XHUwYTcxXDNcMlwyXDJcdTBhNzNcdTAxNGZcM1wyXDJcMlx1MGE3NCIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwYTc1XDdcdTAwYzdcMlwyXHUwYTc1XHUwMTUxXDNcMlwyXDJcdTBhNzZcdTBh NzdcN1x1MDBjOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MGE3N1x1MGE3OFw3XHUw MGM5XDJcMlx1MGE3OFx1MGE3OVw3XDMwXDJcMlx1MGE3OSIpDQo+IA0KPiArICAgICAgICBidWYu d3JpdGUoIlx1MGE3YVw3XHUwMGZhXDJcMlx1MGE3YVx1MGE4NVw3XDMxXDJcMlx1MGE3Ylx1MGE3 Y1w3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcIlwyXDJcdTBhN2NcdTBhODZcN1x1MDBmYVwy XDJcdTBhN2RcdTBhN2VcNyRcMlwyXHUwYTdlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBh ODZcN1x1MDBmYVwyXDJcdTBhN2ZcdTBhODBcNyVcMlwyXHUwYTgwXHUwYTg2XDdcdTAwZmEiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMlwyXHUwYTgxXHUwYTgyXDcmXDJcMlx1MGE4Mlx1 MGE4Nlw3XHUwMGZhXDJcMlx1MGE4MyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGE4 NFw3XCdcMlwyXHUwYTg0XHUwYTg2XDdcdTAwZmFcMlwyXHUwYTg1XHUwYTdiXDNcMiIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MGE4NVx1MGE3ZFwzXDJcMlwyXHUwYTg1XHUwYTdmXDNc MlwyXDJcdTBhODVcdTBhODEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYTg1 XHUwYTgzXDNcMlwyXDJcdTBhODZcdTAxNTNcM1wyXDJcMlx1MGE4NyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwYTg4XDdcdTAwY2FcMlwyXHUwYTg4XHUwYTkzXDVcdTAxNWFcdTAwYWVcMlx1 MGE4OVx1MGE4YQ0KPiAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XCJcMlwyXHUwYThhXHUw YTk0XDdcdTAwZmFcMlwyXHUwYThiXHUwYThjXDckXDJcMlx1MGE4YyIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXHUwYTk0XDdcdTAwZmFcMlwyXHUwYThkXHUwYThlXDclXDJcMlx1MGE4ZVx1MGE5 NFw3XHUwMGZhIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDJcMlx1MGE4Zlx1MGE5MFw3 JlwyXDJcdTBhOTBcdTBhOTRcN1x1MDBmYVwyXDJcdTBhOTEiKQ0KPiANCj4gKyAgICAgICAgYnVm LndyaXRlKCJcdTBhOTJcN1wnXDJcMlx1MGE5Mlx1MGE5NFw3XHUwMGZhXDJcMlx1MGE5M1x1MGE4 OVwzXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcdTBhOTNcdTBhOGJcM1wyXDJcMlx1 MGE5M1x1MGE4ZFwzXDJcMlwyXHUwYTkzXHUwYThmIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc M1wyXDJcMlx1MGE5M1x1MGE5MVwzXDJcMlwyXHUwYTk0XHUwMTU1XDNcMlwyXDJcdTBhOTUiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGE5Nlw3XHUwMGNiXDJcMlx1MGE5Nlx1MGFhMVw1XHUw MTVhXHUwMGFlXDJcdTBhOTdcdTBhOTgNCj4gIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDdcIlwyXDJcdTBhOThcdTBhYTJcNVx1MDE1YVx1MDBhZVwyXHUwYTk5XHUwYTlhXDckXDIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYTlhXHUwYWEyXDVcdTAxNWFcdTAwYWVcMlx1MGE5 Ylx1MGE5Y1w3JVwyXDJcdTBhOWMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGFhMlw1XHUw MTVhXHUwMGFlXDJcdTBhOWRcdTBhOWVcNyZcMlwyXHUwYTllXHUwYWEyIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcNVx1MDE1YVx1MDBhZVwyXHUwYTlmXHUwYWEwXDdcJ1wyXDJcdTBhYTBcdTBh YTJcNVx1MDE1YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGFlXDJcdTBhYTFcdTBhOTdc M1wyXDJcMlx1MGFhMVx1MGE5OVwzXDJcMlwyXHUwYWExIikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTBhOWJcM1wyXDJcMlx1MGFhMVx1MGE5ZFwzXDJcMlwyXHUwYWExXHUwYTlmXDNcMlwyXDIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGFhMlx1MDE1N1wzXDJcMlwyXHUwYWEzXHUwYWE0 XDdcdTAwY2NcMlwyXHUwYWE0XHUwYWE1IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcNVx1MDE1 YVx1MDBhZVwyXHUwYWE1XHUwYWE3XDdcIlwyXDJcdTBhYTZcdTBhYThcN1x1MDBmYSIpDQo+IA0K PiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MGFhN1x1MGFhNlwzXDJcMlwyXHUwYWE4XHUwYWE5XDNc MlwyXDJcdTBhYTlcdTBhYTciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYWE5 XHUwYWFhXDNcMlwyXDJcdTBhYWFcdTAxNTlcM1wyXDJcMlx1MGFhYiIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlx1MGFhY1w3XHUwMGZiXDJcMlx1MGFhY1x1MGFhZFw3XDMyXDJcMlx1MGFh ZFx1MGFhZVw3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUwMGZhXDJcMlx1MGFhZVx1 MGFiOFw3XDMzXDJcMlx1MGFhZlx1MGFiNFw3XHUwMGZiXDIiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlwyXHUwYWIwXHUwYWIxXDdcMzRcMlwyXHUwYWIxXHUwYWIzXDVcdTAxNWNcdTAwYWZcMlx1 MGFiMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWIwXDNcMlwyXDJcdTBhYjNcdTBhYjZc M1wyXDJcMlx1MGFiNFx1MGFiMlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBh YjRcdTBhYjVcM1wyXDJcMlx1MGFiNVx1MGFiOFwzXDJcMlwyXHUwYWI2XHUwYWI0XDMiKQ0KPiAN Cj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MGFiN1x1MGFhYlwzXDJcMlwyXHUwYWI3XHUwYWFm XDNcMlwyXDJcdTBhYjhcdTAxNWINCj4gIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJc Mlx1MGFiOVx1MGFiZFw3XHUwMGZiXDJcMlx1MGFiYVx1MGFiYlw3XDMyXDJcMiIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwYWJiXHUwYWJjXDdcdTAwZmFcMlwyXHUwYWJjXHUwYWJlXDdcMzNc MlwyXHUwYWJkXHUwYWJhDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBh YmRcdTBhYmVcM1wyXDJcMlx1MGFiZVx1MDE1ZFwzXDJcMlwyXHUwYWJmIikNCj4gDQo+ICsgICAg ICAgIGJ1Zi53cml0ZSgiXHUwYWMwXDdcdTAwY2RcMlwyXHUwYWMwXHUwYWMxXDdcMzBcMlwyXHUw YWMxXHUwYWMyXHQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcMTNcMlwyXHUwYWMyXHUw YWMzXDdcMzFcMlwyXHUwYWMzXHUwMTVmXDNcMlwyXDJcdTBhYzQiKQ0KPiANCj4gKyAgICAgICAg YnVmLndyaXRlKCJcdTBhYzVcN1x1MDBjZVwyXDJcdTBhYzVcdTBhYzZcN1wzMFwyXDJcdTBhYzZc dTBhYzdcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGZiXDJcMlx1MGFjN1x1MGFjOFw3 XDMxXDJcMlx1MGFjOFx1MDE2MVwzXDJcMlwyXHUwYWM5IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53 cml0ZSgiXHUwYWNhXDdcdTAwY2ZcMlwyXHUwYWNhXHUwYWQwXDdcMzBcMlwyXHUwYWNiXHUwYWNj XDciKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTAwZWNcMlwyXHUwYWNjXHUwYWNkXDdc MzBcMlwyXHUwYWNkXHUwYWNlXDdcdTAwZmFcMiIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUo IlwyXHUwYWNlXHUwYWQxXDdcMzFcMlwyXHUwYWNmXHUwYWQxXDdcdTAwZmFcMlwyXHUwYWQwIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhY2JcM1wyXDJcMlx1MGFkMFx1MGFjZlwzXDJcMlwy XHUwYWQxXHUwYWQyXDNcMlwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGFkMlx1MGFk M1w3XDMxXDJcMlx1MGFkM1x1MDE2M1wzXDJcMlwyXHUwYWQ0XHUwYWQ1IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcN1x1MDBkMFwyXDJcdTBhZDVcdTAxNjVcM1wyXDJcMlx1MGFkNlx1MGFkN1w3 XHUwMGQxXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYWQ3XHUwYWQ4XDdcMzBcMlwy XHUwYWQ4XHUwYWQ5XDVMXCdcMlx1MGFkOVx1MGFkYSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDdcMzFcMlwyXHUwYWRhXHUwMTY3XDNcMlwyXDJcdTBhZGJcdTBhZGNcdFxmXDJcMlx1MGFkYyIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMTY5XDNcMlwyXDJcdTBhZGRcdTBhZGVcN1x1MDBk MlwyXDJcdTBhZGVcdTBhZGZcN1wzMCIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlwyXDJc dTBhZGZcdTBhZTRcNVgtDQo+IFwyXHUwYWUwXHUwYWUxXDcoXDJcMlx1MGFlMVx1MGFlMiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDdAXDJcMlx1MGFlMlx1MGFlM1w3XGJcMlwyXHUwYWUzXHUw YWU1XDVcdTAxNjhcdTAwYjUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYWU0XHUwYWUw XDNcMlwyXDJcdTBhZTRcdTBhZTVcM1wyXDJcMlx1MGFlNVx1MGFlNiIpDQo+IA0KPiArDQo+IGJ1 Zi53cml0ZSgiXDNcMlwyXDJcdTBhZTZcdTBhZTdcN1wzMVwyXDJcdTBhZTdcdTAxNmJcM1wyXDJc Mlx1MGFlOCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWU5XHRcclwyXDJcdTBhZTlcdTAx NmRcM1wyXDJcMlx1MGFlYVx1MGFmNVw1XHUwMTcwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTAwYjlcMlx1MGFlYlx1MGFmNVw1XHUwMTcyXHUwMGJhXDJcdTBhZWNcdTBhZjVcNVx1MDE3NCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGJiXDJcdTBhZWRcdTBhZjVcNVx1MDE3Nlx1MDBi Y1wyXHUwYWVlXHUwYWY1XDVcdTAxNzgiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDBiZFwy XHUwYWVmXHUwYWY1XDVcdTAxN2FcdTAwYmVcMlx1MGFmMFx1MGFmNVw1XHUwMTdjIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAwYmZcMlx1MGFmMVx1MGFmNVw1XHUwMTdlXHUwMGMwXDJcdTBh ZjJcdTBhZjVcNVx1MDE4MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMGMxXDJcdTBhZjNc dTBhZjVcNVx1MDE4Mlx1MDBjMlwyXHUwYWY0XHUwYWVhXDNcMlwyIikNCj4gDQo+ICsNCj4gYnVm LndyaXRlKCJcMlx1MGFmNFx1MGFlYlwzXDJcMlwyXHUwYWY0XHUwYWVjXDNcMlwyXDJcdTBhZjRc dTBhZWQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcM1wyXDJcMlx1MGFmNFx1MGFlZVwz XDJcMlwyXHUwYWY0XHUwYWVmXDNcMlwyXDJcdTBhZjQiKQ0KPiANCj4gKyAgICAgICAgYnVmLndy aXRlKCJcdTBhZjBcM1wyXDJcMlx1MGFmNFx1MGFmMVwzXDJcMlwyXHUwYWY0XHUwYWYyXDNcMlwy XDIiKQ0KPiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcdTBhZjRcdTBhZjNcM1wyXDJcMlx1MGFm NVx1MDE2ZlwzXDJcMlwyXHUwYWY2XHUwYWY3XDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MDBkYVwyXDJcdTBhZjdcdTBhZjhcN1wzMFwyXDJcdTBhZjhcdTBhZjlcNVx1MDEyNlx1MDA5NCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcdTBhZjlcdTBhZmFcN1wzMVwyXDJcdTBhZmFcdTAx NzFcM1wyXDJcMlx1MGFmYlx1MGFmYyIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlw3XHUw MGRmXDJcMlx1MGFmY1x1MGFmZFw3XDMwXDJcMlx1MGFmZFx1MGFmZVw1XHUwMTI2IikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcdTAwOTRcMlx1MGFmZVx1MGFmZlw3XDMxXDJcMlx1MGFmZlx1MDE3 M1wzXDJcMlwyXHUwYjAwIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiMDFcN1x1MDBlOFwy XDJcdTBiMDFcdTBiMDlcN1wzMFwyXDJcdTBiMDJcdTBiMDNcNyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiKlwyXDJcdTBiMDNcdTBiMDRcN1xiXDJcMlx1MGIwNFx1MGIwNVw3XHUwMGVjXDJcMlx1 MGIwNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjA2XDdcMzBcMlwyXHUwYjA2XHUwYjA3 XDdcdTAwZmFcMlwyXHUwYjA3XHUwYjA4XDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzMVwy XDJcdTBiMDhcdTBiMGFcNyFcMlwyXHUwYjA5XHUwYjAyXDNcMlwyXDJcdTBiMDlcdTBiMGENCj4g IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBiMGFcdTBiMTBcM1wyXDJc Mlx1MGIwYlx1MGIwY1w3W1wyXDJcdTBiMGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGIw ZFw3XGJcMlwyXHUwYjBkXHUwYjBlXDVMXCdcMlx1MGIwZVx1MGIwZlw3IVwyXDJcdTBiMGYiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGIxMVwzXDJcMlwyXHUwYjEwXHUwYjBiXDNcMlwyXDJc dTBiMTBcdTBiMTFcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjExXHUwYjEy XDNcMlwyXDJcdTBiMTJcdTBiMTNcNVx1MDEyNlx1MDA5NFwyXHUwYjEzIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTBiMTRcN1wzMVwyXDJcdTBiMTRcdTAxNzVcM1wyXDJcMlx1MGIxNVx1MGIx Nlw3XHUwMGU5IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwYjE2XHUwYjE3XDdcMzBc MlwyXHUwYjE3XHUwYjE4XDVcdTAxMjZcdTAwOTRcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwYjE4XHUwYjE5XDdcMzFcMlwyXHUwYjE5XHUwMTc3XDNcMlwyXDJcdTBiMWFcdTBiMWIiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlw3XHUwMGUwXDJcMlx1MGIxYlx1MGIxY1w3XDMwXDJcMlx1 MGIxY1x1MGIxZFw1XHUwMTI2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwOTRcMlx1MGIx ZFx1MGIxZVw3XDMxXDJcMlx1MGIxZVx1MDE3OVwzXDJcMlwyXHUwYjFmIikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTBiMjRcN1x1MDBlMVwyXDJcdTBiMjBcdTBiMjFcN1wyMVwyXDJcdTBiMjFc dTBiMjJcNyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXGJcMlwyXHUwYjIyXHUwYjIzXDdcdTAw ZmFcMlwyXHUwYjIzXHUwYjI1XDchXDJcMlx1MGIyNCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwYjIwXDNcMlwyXDJcdTBiMjRcdTBiMjVcM1wyXDJcMlx1MGIyNVx1MGIyNlwzXDJcMlwyIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiMjZcdTBiMjdcN1wzMFwyXDJcdTBiMjdcdTBiMjhc NVx1MDEyNlx1MDA5NFwyXHUwYjI4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiMjlcN1wz MVwyXDJcdTBiMjlcdTAxN2JcM1wyXDJcMlx1MGIyYVx1MGIyYlw3XHUwMGUyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcMlwyXHUwYjJiXHUwYjJjXDdcMzBcMlwyXHUwYjJjXHUwYjJkXDVcdTAx MjZcdTAwOTRcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjJkXHUwYjJlXDdcMzFcMlwy XHUwYjJlXHUwMTdkXDNcMlwyXDJcdTBiMmZcdTBiMzAiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilw3XHUwMGUzXDJcMlx1MGIzMFx1MGIzMVw3XDMwXDJcMlx1MGIzMVx1MGIzMlw1XHUwMTI2IikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwOTRcMlx1MGIzMlx1MGIzM1w3XDMxXDJcMlx1MGIz M1x1MDE3ZlwzXDJcMlwyXHUwYjM0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiMzVcN1x1 MDBlNFwyXDJcdTBiMzVcdTBiMzZcN1wzMFwyXDJcdTBiMzZcdTBiMzdcNSIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwMTI2XHUwMDk0XDJcdTBiMzdcdTBiMzhcN1wzMVwyXDJcdTBiMzhcdTAx ODFcM1wyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwyXHUwYjM5XHUwYjNhXDdcdTAwZGVc MlwyXHUwYjNhXHUwYjNiXDdcMzBcMlwyXHUwYjNiIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0 ZSgiXHUwYjQwXDVYLQ0KPiBcMlx1MGIzY1x1MGIzZFw3KFwyXDJcdTBiM2RcdTBiM2VcN0BcMlwy XHUwYjNlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiM2ZcN1xiXDJcMlx1MGIzZlx1MGI0 MVw1XHUwMTY4XHUwMGI1XDJcdTBiNDBcdTBiM2MiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwz XDJcMlwyXHUwYjQwXHUwYjQxXDNcMlwyXDJcdTBiNDFcdTBiNDJcM1wyXDJcMlx1MGI0MiIpDQo+ IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjQzXDchXDJcMlx1MGI0M1x1MGI0NFw1XHUwMTI2XHUw MDk0XDJcdTBiNDRcdTBiNDUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlw3XDMxXDJcMlx1MGI0 NVx1MDE4M1wzXDJcMlwyXHUwYjQ2XHUwYjRjXDVcdTAxODZcdTAwYzQiKQ0KPiANCj4gKw0KPiBi dWYud3JpdGUoIlwyXHUwYjQ3XHUwYjRjXDVcdTAxODhcdTAwYzVcMlx1MGI0OFx1MGI0Y1w1XHUw MThjXHUwMGM3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlx1MGI0OVx1MGI0Y1w1XHUwMThl XHUwMGM4XDJcdTBiNGFcdTBiNGNcNVx1MDE5MFx1MDBjOSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXDJcdTBiNGJcdTBiNDZcM1wyXDJcMlx1MGI0Ylx1MGI0N1wzXDJcMlwyXHUwYjRiXHUwYjQ4 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcM1wyXDJcMlx1MGI0Ylx1MGI0OVwzXDJcMlwyXHUw YjRiXHUwYjRhXDNcMlwyXDJcdTBiNGMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDE4NVwz XDJcMlwyXHUwYjRkXHUwYjRlXDdcdTAwYzJcMlwyXHUwYjRlXHUwYjRmXDdcMzAiKQ0KPiANCj4g Kw0KPiBidWYud3JpdGUoIlwyXDJcdTBiNGZcdTBiNTBcNVx1MDEyNlx1MDA5NFwyXHUwYjUwXHUw YjUxXDdcMjJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiNTFcdTBiNTJcNVx1MDEy Nlx1MDA5NFwyXHUwYjUyXHUwYjUzXDdcMzZcMlwyXHUwYjUzIikNCj4gDQo+ICsNCj4gYnVmLndy aXRlKCJcdTBiNTRcNVx1MDEyNlx1MDA5NFwyXHUwYjU0XHUwYjU1XDdcMzFcMlwyXHUwYjU1XHUw MTg3IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXDNcMlwyXDJcdTBiNTZcdTBiNTdcN1x1 MDBjM1wyXDJcdTBiNTdcdTBiNThcN1wzMFwyXDIiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1 MGI1OFx1MGI1ZFw1XHUwMThhXHUwMGM2XDJcdTBiNTlcdTBiNWFcNyhcMlwyXHUwYjVhIikNCj4g DQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiNWNcNVx1MDE4YVx1MDBjNlwyXHUwYjViXHUwYjU5XDNc MlwyXDJcdTBiNWNcdTBiNWYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlwzXDJcMlwyXHUwYjVk XHUwYjViXDNcMlwyXDJcdTBiNWRcdTBiNWVcM1wyXDJcMlx1MGI1ZSIpDQo+IA0KPiArICAgICAg ICBidWYud3JpdGUoIlx1MGI2MFwzXDJcMlwyXHUwYjVmXHUwYjVkXDNcMlwyXDJcdTBiNjBcdTBi NjFcNyFcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiNjFcdTBiNjJcNVx1MDEyNlx1 MDA5NFwyXHUwYjYyXHUwYjYzXDchXDJcMlx1MGI2MyIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwYjY0XDVcdTAxMjZcdTAwOTRcMlx1MGI2NFx1MGI2NVw3IVwyXDJcdTBiNjVcdTBiNjYiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlw1XHUwMTI2XHUwMDk0XDJcdTBiNjZcdTBiNjdcN1wzMVwy XDJcdTBiNjdcdTAxODlcM1wyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcMlwyXHUwYjY4XHUw YjY5XHRcMTZcMlwyXHUwYjY5XHUwMThiXDNcMlwyXDJcdTBiNmFcdTBiNmIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlw3XHUwMGM0XDJcMlx1MGI2Ylx1MGI2Y1w3XDMwXDJcMlx1MGI2Y1x1MGI2 ZFw1XHUwMTI2IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAwOTRcMlx1MGI2ZFx1MGI2ZVw3 IVwyXDJcdTBiNmVcdTBiNmZcNVx1MDEyNlx1MDA5NCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XDJcdTBiNmZcdTBiNzBcNyFcMlwyXHUwYjcwXHUwYjcxXDVcdTAxMjZcdTAwOTRcMlx1MGI3MSIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYjcyXDdcMzFcMlwyXHUwYjcyXHUwMThkXDNcMlwy XDJcdTBiNzNcdTBiNzRcN1x1MDBjNSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MGI3 NFx1MGI3NVw3XDMwXDJcMlx1MGI3NVx1MGI3Nlw1XHUwMTI2XHUwMDk0XDIiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MGI3Nlx1MGI3N1w3IVwyXDJcdTBiNzdcdTBiNzhcNVx1MDEyNlx1MDA5 NFwyXHUwYjc4IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiNzlcNyFcMlwyXHUwYjc5XHUw YjdhXDVcdTAxMjZcdTAwOTRcMlx1MGI3YVx1MGI3YiIpDQo+IA0KPiArICAgICAgICBidWYud3Jp dGUoIlw3XDMxXDJcMlx1MGI3Ylx1MDE4ZlwzXDJcMlwyXHUwYjdjXHUwYjdkXDdcdTAwYzZcMlwy IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBiN2RcdTBiN2VcN1wzMFwyXDJcdTBiN2VcdTBi N2ZcN0BcMlwyXHUwYjdmXHUwYjgwXDciKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlxiXDJcMlx1 MGI4MFx1MGI4NVw1XHUwMTkyXHUwMGNhXDJcdTBiODFcdTBiODJcNyhcMlwyIikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTBiODJcdTBiODRcNVx1MDE5Mlx1MDBjYVwyXHUwYjgzXHUwYjgxXDNc MlwyXDJcdTBiODQiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MGI4N1wzXDJcMlwyXHUwYjg1 XHUwYjgzXDNcMlwyXDJcdTBiODVcdTBiODZcM1wyXDJcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwYjg2XHUwYjg4XDNcMlwyXDJcdTBiODdcdTBiODVcM1wyXDJcMlx1MGI4OFx1MGI4OVw3 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCIhXDJcMlx1MGI4OVx1MGI4YVw1XHUwMTI2XHUwMDk0 XDJcdTBiOGFcdTBiOGJcNyFcMlwyXHUwYjhiDQo+ICIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwYjhjXDVcdTAxMjZcdTAwOTRcMlx1MGI4Y1x1MGI4ZFw3IVwyXDJcdTBiOGRcdTBiOGUiKQ0K PiANCj4gKyAgICAgICAgYnVmLndyaXRlKCJcNVx1MDEyNlx1MDA5NFwyXHUwYjhlXHUwYjhmXDdc MzFcMlwyXHUwYjhmXHUwMTkxXDNcMiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXDJcMlx1MGI5 MFx1MGI5MVx0XDE3XDJcMlx1MGI5MVx1MDE5M1wzXDJcMlwyXHUwYjkyXHUwYjkzIikNCj4gDQo+ ICsNCj4gYnVmLndyaXRlKCJcN1x1MDBlYVwyXDJcdTBiOTNcdTBiOTRcN1wzMFwyXDJcdTBiOTRc dTBiOTVcNVx1MDEyNiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMDk0XDJcdTBiOTVcdTBi OWRcN1wzNlwyXDJcdTBiOTZcdTBiOTdcNVx1MDEyNFx1MDA5MyIpDQo+IA0KPiArDQo+IGJ1Zi53 cml0ZSgiXDJcdTBiOTdcdTBiOThcNyFcMlwyXHUwYjk4XHUwYjk5XDVcdTAxMjRcdTAwOTNcMlx1 MGI5OSIpDQo+IA0KPiArICAgICAgICBidWYud3JpdGUoIlx1MGI5YVw3IFwyXDJcdTBiOWFcdTBi OWNcM1wyXDJcMlx1MGI5Ylx1MGI5NlwzXDJcMlwyIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJc dTBiOWNcdTBiOWZcM1wyXDJcMlx1MGI5ZFx1MGI5YlwzXDJcMlwyXHUwYjlkXHUwYjllXDMiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlwyXDJcMlx1MGI5ZVx1MGJhMFwzXDJcMlwyXHUwYjlmXHUw YjlkXDNcMlwyXDJcdTBiYTBcdTBiYTENCj4gIikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgi XDdcMzFcMlwyXHUwYmExXHUwMTk1XDNcMlwyXDJcdTAwZjBcdTAxOTlcdTAxOWJcdTAxYTUiKQ0K PiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDFhOVx1MDFhY1x1MDFiNFx1MDFiOVx1MDFiZFx1MDFj MFx1MDFjNlx1MDFjYlx1MDFjZiIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwMWQyXHUwMWQ4 XHUwMWVhXHUwMWVjXHUwMWY0XHUwMWZkXHUwMjA2XHUwMjBmXHUwMjE4IikNCj4gDQo+ICsNCj4g YnVmLndyaXRlKCJcdTAyMjFcdTAyMmFcdTAyMzNcdTAyM2NcdTAyNDVcdTAyNGJcdTAyNTNcdTAy NWJcdTAyNjMiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDI4MVx1MDI4OFx1MDI4Zlx1MDI5 OFx1MDI5Y1x1MDJhMFx1MDJhN1x1MDJiMVx1MDJiZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgi XHUwMmNkXHUwMmUyXHUwMmU4XHUwMzA0XHUwMzBhXHUwMzEzXHUwMzI2XHUwMzM2XHUwMzQxIikN Cj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTAzNzJcdTAzODJcdTAzODlcdTAzOGZcdTAzYTdcdTAz YjJcdTAzYjVcdTAzYjhcdTAzZGYiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDNlM1x1MDNm MFx1MDNmN1x1MDQwOVx1MDQxZVx1MDQzM1x1MDQzOVx1MDQ0Zlx1MDQ1YyIpDQo+IA0KPiArDQo+ IGJ1Zi53cml0ZSgiXHUwNDYwXHUwNDY1XHUwNDZiXHUwNDZlXHUwNDcyXHUwNDc2XHUwNDdkXHUw NDk3XHUwNGExIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA0YTlcdTA0YWRcdTA0YjNcdTA0 YjdcdTA0ZTVcdTA0ZTlcdTA0ZjBcdTA0ZjZcdTA0ZmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUo Ilx1MDUwM1x1MDUwOFx1MDUxNFx1MDUxZlx1MDUyY1x1MDUzZFx1MDU0Mlx1MDU0N1x1MDU1OCIp DQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNTVkXHUwNTYyXHUwNTZhXHUwNThhXHUwNThmXHUw NTk0XHUwNTllXHUwNWE4XHUwNWI0IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA1YjlcdTA1 YmVcdTA1Y2FcdTA1Y2ZcdTA1ZDRcdTA1ZGVcdTA1ZTRcdTA1ZmZcdTA2MDUiKQ0KPiANCj4gKw0K PiBidWYud3JpdGUoIlx1MDYwZlx1MDYxZFx1MDYyYVx1MDYyZlx1MDYzM1x1MDYzZVx1MDY0NFx1 MDY0Zlx1MDY1OCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNjYyXHUwNjc0XHUwNjc5XHUw NjdkXHUwNjg4XHUwNjhlXHUwNjk4XHUwNjlmXHUwNmE3IikNCj4gDQo+ICsNCj4gYnVmLndyaXRl KCJcdTA2YWVcdTA2YmFcdTA2YzVcdTA2YzhcdTA2ZDNcdTA2ZDhcdTA2ZTJcdTA2ZThcdTA2ZmIi KQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDcwMVx1MDcwYlx1MDcxMVx1MDcxZlx1MDcyYVx1 MDcyZlx1MDczOFx1MDczZlx1MDc0YSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwNzUxXHUw NzViXHUwN2E2XHUwN2FiXHUwN2FlXHUwN2JmXHUwN2M1XHUwN2NjXHUwN2Q5IikNCj4gDQo+ICsN Cj4gYnVmLndyaXRlKCJcdTA4MjRcdTA4MjlcdTA4MmNcdTA4M2RcdTA4NDNcdTA4NGFcdTA4NTNc dTA4NjRcdTA4NmEiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDg3Mlx1MDg4MFx1MDg4NVx1 MDg5Mlx1MDg5N1x1MDhhNFx1MDhhOVx1MDhiMFx1MDhiZSIpDQo+IA0KPiArDQo+IGJ1Zi53cml0 ZSgiXHUwOGMzXHUwOGNhXHUwOGRmXHUwOGU0XHUwOGVkXHUwOTBlXHUwOTJlXHUwOTMxXHUwOTM3 IikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTA5NDFcdTA5NTRcdTA5NjFcdTA5NjdcdTA5NmRc dTA5NzNcdTA5NzlcdTA5N2ZcdTA5ODUiKQ0KPiANCj4gKw0KPiBidWYud3JpdGUoIlx1MDk4Ylx1 MDk5MVx1MDk5N1x1MDk5OVx1MDk5ZVx1MDlhMVx1MDlhN1x1MDlhYlx1MDliNCIpDQo+IA0KPiAr DQo+IGJ1Zi53cml0ZSgiXHUwOWJhXHUwOWNhXHUwOWQyXHUwOWRhXHUwOWUyXHUwOWVhXHUwOWYx XHUwOWY4XHUwOWZlIikNCj4gDQo+ICsNCj4gYnVmLndyaXRlKCJcdTBhMDlcdTBhMGZcdTBhMTZc dTBhMWNcdTBhMjNcdTBhMjlcdTBhMzJcdTBhMzlcdTBhNGEiKQ0KPiANCj4gKw0KPiBidWYud3Jp dGUoIlx1MGE3Mlx1MGE4NVx1MGE5M1x1MGFhMVx1MGFhOVx1MGFiNFx1MGFiN1x1MGFiZFx1MGFk MCIpDQo+IA0KPiArDQo+IGJ1Zi53cml0ZSgiXHUwYWU0XHUwYWY0XHUwYjA5XHUwYjEwXHUwYjI0 XHUwYjQwXHUwYjRiXHUwYjVkXHUwYjg1IikNCj4gDQo+ICsgICAgICAgIGJ1Zi53cml0ZSgiXHUw YjlkIikNCj4gDQo+ICsgICAgICAgIHJldHVybiBidWYuZ2V0dmFsdWUoKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gK2NsYXNzIFZmclN5bnRheFBhcnNlciAoIFBhcnNlciApOg0KPiANCj4gKw0K PiANCj4gKyAgICBncmFtbWFyRmlsZU5hbWUgPSAiVmZyU3ludGF4Lmc0Ig0KPiANCj4gKw0KPiAN Cj4gKyAgICBhdG4gPSBBVE5EZXNlcmlhbGl6ZXIoKS5kZXNlcmlhbGl6ZShzZXJpYWxpemVkQVRO KCkpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlY2lzaW9uc1RvREZBID0gWyBERkEoZHMsIGkpIGZv ciBpLCBkcyBpbiBlbnVtZXJhdGUoYXRuLmRlY2lzaW9uVG9TdGF0ZSkgXQ0KPiANCj4gKw0KPiAN Cj4gKyAgICBzaGFyZWRDb250ZXh0Q2FjaGUgPSBQcmVkaWN0aW9uQ29udGV4dENhY2hlKCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgbGl0ZXJhbE5hbWVzID0gWyAiPElOVkFMSUQ+IiwgIidzaG93JyIs ICIncHVzaCciLCAiJ3BvcCciLCAiJyNwcmFnbWEnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAiJ3BhY2snIiwgIic9JyIsICInSU1BR0VfVE9LRU4nIiwgIidIT1JJWk9OVEFMJyIsDQo+ ICInTVVMVElfTElORSciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInPDwnIiwgIic+ PiciLCAiJysnIiwgIicqJyIsICInJSciLCAiJ2Zvcm1hdCciLCAiJz8nIiwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAiJyNkZWZpbmUnIiwgIicjaW5jbHVkZSciLCAiJ2Zvcm1wa2d0eXBl JyIsICIneyciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInfSciLCAiJygnIiwgIicp JyIsICInWyciLCAiJ10nIiwgIicuJyIsICInLSciLCAiJzonIiwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAiJy8nIiwgIic7JyIsICInLCciLCAiJz09JyIsICInIT0nIiwgIic8PSciLCAi JzwnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAiJz49JyIsICInPiciLCAiJ3wnIiwg IicmJyIsICInZGV2aWNlcGF0aCciLCAiJ2Zvcm1zZXQnIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAiJ2Zvcm1zZXRpZCciLCAiJ2VuZGZvcm1zZXQnIiwgIid0aXRsZSciLCAiJ2Zvcm1p ZCciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInb25lb2YnIiwgIidlbmRvbmVvZici LCAiJ3Byb21wdCciLCAiJ29yZGVyZWRsaXN0JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgIidtYXhjb250YWluZXJzJyIsICInZW5kbGlzdCciLCAiJ2VuZGZvcm0nIiwgIidmb3JtJyIs DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidmb3JtbWFwJyIsICInbWFwdGl0bGUnIiwg IidtYXBndWlkJyIsICInc3VidGl0bGUnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAi J2VuZHN1YnRpdGxlJyIsICInaGVscCciLCAiJ3RleHQnIiwgIidvcHRpb24nIiwgIidmbGFncyci LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInZGF0ZSciLCAiJ2VuZGRhdGUnIiwgIid5 ZWFyJyIsICInbW9udGgnIiwgIidkYXknIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAi J3RpbWUnIiwgIidlbmR0aW1lJyIsICInaG91ciciLCAiJ21pbnV0ZSciLCAiJ3NlY29uZCciLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInZ3JheW91dGlmJyIsICInbGFiZWwnIiwgIid0 aW1lb3V0JyIsICInaW52ZW50b3J5JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidf Tk9OX05WX0RBVEFfTUFQJyIsICInc3RydWN0JyIsICIndW5pb24nIiwgIidCT09MRUFOJyIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidVSU5UNjQnIiwgIidVSU5UMzInIiwgIidVSU5U MTYnIiwgIidVSU5UOCciLCAiJ0VGSV9TVFJJTkdfSUQnIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAiJ0VGSV9ISUlfREFURSciLCAiJ0VGSV9ISUlfVElNRSciLCAiJ0VGSV9ISUlfUkVG JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidndWlkJyIsICInY2hlY2tib3gnIiwg IidlbmRjaGVja2JveCciLCAiJ251bWVyaWMnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAiJ2VuZG51bWVyaWMnIiwgIidtaW5pbXVtJyIsICInbWF4aW11bSciLCAiJ3N0ZXAnIiwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAiJ2RlZmF1bHQnIiwgIidwYXNzd29yZCciLCAiJ2Vu ZHBhc3N3b3JkJyIsICInc3RyaW5nJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidl bmRzdHJpbmcnIiwgIidtaW5zaXplJyIsICInbWF4c2l6ZSciLCAiJ2VuY29kaW5nJyIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgIidzdXBwcmVzc2lmJyIsICInZGlzYWJsZWlmJyIsICIn aGlkZGVuJyIsICInZ290byciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInZm9ybXNl dGd1aWQnIiwgIidpbmNvbnNpc3RlbnRpZiciLCAiJ3dhcm5pbmdpZiciLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICInbm9zdWJtaXRpZiciLCAiJ2VuZGlmJyIsICIna2V5JyIsICInREVG QVVMVCciLA0KPiAiJ01BTlVGQUNUVVJJTkcnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAiJ0NIRUNLQk9YX0RFRkFVTFQnIiwgIidDSEVDS0JPWF9ERUZBVUxUX01GRyciLA0KPiAiJ0lO VEVSQUNUSVZFJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidOVl9BQ0NFU1MnIiwg IidSRVNFVF9SRVFVSVJFRCciLCAiJ1JFQ09OTkVDVF9SRVFVSVJFRCciLA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICInTEFURV9DSEVDSyciLCAiJ1JFQURfT05MWSciLCAiJ09QVElPTlNf T05MWSciLA0KPiAiJ1JFU1RfU1RZTEUnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAi J2NsYXNzJyIsICInc3ViY2xhc3MnIiwgIidjbGFzc2d1aWQnIiwgIid0eXBlZGVmJyIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgIidyZXN0b3JlJyIsICInc2F2ZSciLCAiJ2RlZmF1bHRz JyIsICInYmFubmVyJyIsICInYWxpZ24nIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAi J2xlZnQnIiwgIidyaWdodCciLCAiJ2NlbnRlciciLCAiJ2xpbmUnIiwgIiduYW1lJyIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgIid2YXJpZCciLCAiJ3F1ZXN0aW9uJyIsICIncXVlc3Rp b25pZCciLCAiJ2ltYWdlJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidsb2NrZWQn IiwgIidydWxlJyIsICInZW5kcnVsZSciLCAiJ3ZhbHVlJyIsICIncmVhZCciLA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICInd3JpdGUnIiwgIidyZXNldGJ1dHRvbiciLCAiJ2VuZHJlc2V0 YnV0dG9uJyIsICInZGVmYXVsdHN0b3JlJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg IidhdHRyaWJ1dGUnIiwgIid2YXJzdG9yZSciLCAiJ2VmaXZhcnN0b3JlJyIsICIndmFyc2l6ZSci LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInbmFtZXZhbHVldmFyc3RvcmUnIiwgIidh Y3Rpb24nIiwgIidjb25maWcnIiwgIidlbmRhY3Rpb24nIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAiJ3JlZnJlc2gnIiwgIidpbnRlcnZhbCciLCAiJ3ZhcnN0b3JlZGV2aWNlJyIsICIn Z3VpZG9wJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidlbmRndWlkb3AnIiwgIidk YXRhdHlwZSciLCAiJ2RhdGEnIiwgIidtb2RhbCciLCAiJ05PTl9ERVZJQ0UnIiwNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAiJ0RJU0tfREVWSUNFJyIsICInVklERU9fREVWSUNFJyIsICIn TkVUV09SS19ERVZJQ0UnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAiJ0lOUFVUX0RF VklDRSciLCAiJ09OQk9BUkRfREVWSUNFJyIsICInT1RIRVJfREVWSUNFJyIsDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgIidTRVRVUF9BUFBMSUNBVElPTiciLCAiJ0dFTkVSQUxfQVBQTElD QVRJT04nIiwNCj4gIidGUk9OVF9QQUdFJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg IidTSU5HTEVfVVNFJyIsICInWUVBUl9TVVBQUkVTUyciLCAiJ01PTlRIX1NVUFBSRVNTJyIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidEQVlfU1VQUFJFU1MnIiwgIidIT1VSX1NVUFBS RVNTJyIsICInTUlOVVRFX1NVUFBSRVNTJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg IidTRUNPTkRfU1VQUFJFU1MnIiwgIidTVE9SQUdFX05PUk1BTCciLA0KPiAiJ1NUT1JBR0VfVElN RSciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICInU1RPUkFHRV9XQUtFVVAnIiwgIidV TklRVUUnIiwgIidOT0VNUFRZJyIsICInY29uZCciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICInZmluZCciLCAiJ21pZCciLCAiJ3Rva2VuJyIsICInc3BhbiciLCAiJ2R1cCciLCAiJ3Zh cmVxdmFsJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIid2YXInIiwgIidpZGVxdmFs JyIsICInaWRlcWlkJyIsICInaWRlcXZhbGxpc3QnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAiJ3F1ZXN0aW9ucmVmJyIsICIncnVsZXJlZiciLCAiJ3N0cmluZ3JlZiciLCAiJ3B1c2h0 aGlzJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidzZWN1cml0eSciLCAiJ2dldCci LCAiJ1RSVUUnIiwgIidGQUxTRSciLCAiJ09ORSciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICInT05FUyciLCAiJ1pFUk8nIiwgIidVTkRFRklORUQnIiwgIidWRVJTSU9OJyIsICInbGVu Z3RoJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidBTkQnIiwgIidPUiciLCAiJ05P VCciLCAiJ3NldCciLCAiJ34nIiwgIidib29sdmFsJyIsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgIidzdHJpbmd2YWwnIiwgIid1bmludHZhbCciLCAiJ3RvdXBwZXInIiwgIid0b2xvd2Vy JyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidtYXRjaCciLCAiJ21hdGNoMiciLCAi J2NhdGVuYXRlJyIsICIncXVlc3Rpb25yZWZ2YWwnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAiJ3N0cmluZ3JlZnZhbCciLCAiJ21hcCciLCAiJ3JlZnJlc2hndWlkJyIsICInU1RSSU5H X1RPS0VOJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidPUFRJT05fREVGQVVMVCci LCAiJ09QVElPTl9ERUZBVUxUX01GRyciLA0KPiAiJ05VTUVSSUNfU0laRV8xJyIsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgIidOVU1FUklDX1NJWkVfMiciLCAiJ05VTUVSSUNfU0laRV80 JyIsICInTlVNRVJJQ19TSVpFXzgnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAiJ0RJ U1BMQVlfSU5UX0RFQyciLCAiJ0RJU1BMQVlfVUlOVF9ERUMnIiwNCj4gIidESVNQTEFZX1VJTlRf SEVYJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgIidJTlNFTlNJVElWRSciLCAiJ1NF TlNJVElWRSciLCAiJ0xBU1RfTk9OX01BVENIJyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgIidGSVJTVF9OT05fTUFUQ0gnIiBdDQo+IA0KPiArDQo+IA0KPiArICAgIHN5bWJvbGljTmFt ZXMgPSBbICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwgIjxJTlZBTElEPiIsDQo+ICI8SU5WQUxJ RD4iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiPElOVkFMSUQ+IiwgIjxJTlZBTElE PiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIjxJTlZBTElEPiIsICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwgIjxJTlZBTElEPiIsDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICI8SU5WQUxJRD4iLCAiPElOVkFMSUQ+IiwgIjxJ TlZBTElEPiIsICI8SU5WQUxJRD4iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiPElO VkFMSUQ+IiwgIkRlZmluZSIsICJJbmNsdWRlIiwgIkZvcm1Qa2dUeXBlIiwgIk9wZW5CcmFjZSIs DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJDbG9zZUJyYWNlIiwgIk9wZW5QYXJlbiIs ICJDbG9zZVBhcmVuIiwgIk9wZW5CcmFja2V0IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIkNsb3NlQnJhY2tldCIsICJEb3QiLCAiTmVnYXRpdmUiLCAiQ29sb24iLCAiU2xhc2giLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiU2VtaWNvbG9uIiwgIkNvbW1hIiwgIkVxdWFs IiwgIk5vdEVxdWFsIiwgIkxlc3NFcXVhbCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICJMZXNzIiwgIkdyZWF0ZXJFcXVhbCIsICJHcmVhdGVyIiwgIkJpdFdpc2VPciIsICJCaXRXaXNl QW5kIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIkRldmljZVBhdGgiLCAiRm9ybVNl dCIsICJGb3JtU2V0SWQiLCAiRW5kRm9ybVNldCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICJUaXRsZSIsICJGb3JtSWQiLCAiT25lT2YiLCAiRW5kT25lT2YiLCAiUHJvbXB0IiwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIk9yZGVyZWRMaXN0IiwgIk1heENvbnRhaW5lcnMi LCAiRW5kTGlzdCIsICJFbmRGb3JtIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIkZv cm0iLCAiRm9ybU1hcCIsICJNYXBUaXRsZSIsICJNYXBHdWlkIiwgIlN1YnRpdGxlIiwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIkVuZFN1YnRpdGxlIiwgIkhlbHAiLCAiVGV4dCIsICJP cHRpb24iLCAiRkxBR1MiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiRGF0ZSIsICJF bmREYXRlIiwgIlllYXIiLCAiTW9udGgiLCAiRGF5IiwgIlRpbWUiLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAiRW5kVGltZSIsICJIb3VyIiwgIk1pbnV0ZSIsICJTZWNvbmQiLCAiR3Jh eU91dElmIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIkxhYmVsIiwgIlRpbWVvdXQi LCAiSW52ZW50b3J5IiwgIk5vbk52RGF0YU1hcCIsICJTdHJ1Y3QiLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAiVW5pb24iLCAiQm9vbGVhbiIsICJVaW50NjQiLCAiVWludDMyIiwgIlVp bnQxNiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJVaW50OCIsICJFRklfU1RSSU5H X0lEIiwgIkVGSV9ISUlfREFURSIsICJFRklfSElJX1RJTUUiLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAiRUZJX0hJSV9SRUYiLCAiVXVpZCIsICJDaGVja0JveCIsICJFbmRDaGVja0Jv eCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJOdW1lcmljIiwgIkVuZE51bWVyaWMi LCAiTWluaW11bSIsICJNYXhpbXVtIiwgIlN0ZXAiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAiRGVmYXVsdCIsICJQYXNzd29yZCIsICJFbmRQYXNzd29yZCIsICJTdHJpbmciLCAiRW5k U3RyaW5nIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIk1pblNpemUiLCAiTWF4U2l6 ZSIsICJFbmNvZGluZyIsICJTdXBwcmVzc0lmIiwgIkRpc2FibGVJZiIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICJIaWRkZW4iLCAiR290byIsICJGb3JtU2V0R3VpZCIsICJJbmNvbnNp c3RlbnRJZiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nSWYiLCAiTm9T dWJtaXRJZiIsICJFbmRJZiIsICJLZXkiLCAiRGVmYXVsdEZsYWciLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAiTWFudWZhY3R1cmluZ0ZsYWciLCAiQ2hlY2tCb3hEZWZhdWx0RmxhZyIs DQo+ICJDaGVja0JveERlZmF1bHRNZmdGbGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIkludGVyYWN0aXZlRmxhZyIsICJOVkFjY2Vzc0ZsYWciLCAiUmVzZXRSZXF1aXJlZEZsYWci LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiUmVjb25uZWN0UmVxdWlyZWRGbGFnIiwg IkxhdGVDaGVja0ZsYWciLCAiUmVhZE9ubHlGbGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIk9wdGlvbk9ubHlGbGFnIiwgIlJlc3RTdHlsZUZsYWciLCAiQ2xhc3MiLCAiU3ViY2xh c3MiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiQ2xhc3NHdWlkIiwgIlR5cGVEZWYi LCAiUmVzdG9yZSIsICJTYXZlIiwgIkRlZmF1bHRzIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIkJhbm5lciIsICJBbGlnbiIsICJMZWZ0IiwgIlJpZ2h0IiwgIkNlbnRlciIsICJMaW5l IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIk5hbWUiLCAiVmFySWQiLCAiUXVlc3Rp b24iLCAiUXVlc3Rpb25JZCIsICJJbWFnZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICJMb2NrZWQiLCAiUnVsZSIsICJFbmRSdWxlIiwgIlZhbHVlIiwgIlJlYWQiLCAiV3JpdGUiLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiUmVzZXRCdXR0b24iLCAiRW5kUmVzZXRCdXR0 b24iLCAiRGVmYXVsdFN0b3JlIiwgIkF0dHJpYnV0ZSIsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICJWYXJzdG9yZSIsICJFZml2YXJzdG9yZSIsICJWYXJTaXplIiwgIk5hbWVWYWx1ZVZh clN0b3JlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIkFjdGlvbiIsICJDb25maWci LCAiRW5kQWN0aW9uIiwgIlJlZnJlc2giLCAiSW50ZXJ2YWwiLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAiVmFyc3RvcmVEZXZpY2UiLCAiR3VpZE9wIiwgIkVuZEd1aWRPcCIsICJEYXRh VHlwZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJEYXRhIiwgIk1vZGFsIiwgIkNs YXNzTm9uRGV2aWNlIiwgIkNsYXNzRGlza0RldmljZSIsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICJDbGFzc1ZpZGVvRGV2aWNlIiwgIkNsYXNzTmV0d29ya0RldmljZSIsICJDbGFzc0lu cHV0RGV2aWNlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIkNsYXNzT25Cb2FyZERl dmljZSIsICJDbGFzc090aGVyRGV2aWNlIiwNCj4gIlN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbiIs DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJTdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlv biIsICJTdWJjbGFzc0Zyb250UGFnZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJT dWJjbGFzc1NpbmdsZVVzZSIsICJZZWFyU3VwcHByZXNzRmxhZyIsDQo+ICJNb250aFN1cHByZXNz RmxhZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJEYXlTdXBwcmVzc0ZsYWciLCAi SG91clN1cHBwcmVzc0ZsYWciLCAiTWludXRlU3VwcHJlc3NGbGFnIiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIlNlY29uZFN1cHByZXNzRmxhZyIsICJTdG9yYWdlTm9ybWFsRmxhZyIs ICJTdG9yYWdlVGltZUZsYWciLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiU3RvcmFn ZVdha2VVcEZsYWciLCAiVW5pUXVlRmxhZyIsICJOb0VtcHR5RmxhZyIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICJDb25kIiwgIkZpbmQiLCAiTWlkIiwgIlRvayIsICJTcGFuIiwgIkR1 cCIsICJWYXJFcVZhbCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJWYXIiLCAiSWRF cVZhbCIsICJJZEVxSWQiLCAiSWRFcVZhbExpc3QiLCAiUXVlc3Rpb25SZWYiLA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAiUnVsZVJlZiIsICJTdHJpbmdSZWYiLCAiUHVzaFRoaXMiLCAi U2VjdXJpdHkiLCAiR2V0IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIlRydWVTeW1i b2wiLCAiRmFsc2VTeW1ib2wiLCAiT25lIiwgIk9uZXMiLCAiWmVybyIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICJVbmRlZmluZWQiLCAiVmVyc2lvbiIsICJMZW5ndGgiLCAiQU5EIiwg Ik9SIiwgIk5PVCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICJTZXQiLCAiQml0V2lz ZU5vdCIsICJCb29sVmFsIiwgIlN0cmluZ1ZhbCIsICJVbkludFZhbCIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICJUb1VwcGVyIiwgIlRvTG93ZXIiLCAiTWF0Y2giLCAiTWF0Y2gyIiwg IkNhdGVuYXRlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIlF1ZXN0aW9uUmVmVmFs IiwgIlN0cmluZ1JlZlZhbCIsICJNYXAiLCAiUmVmcmVzaEd1aWQiLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAiU3RyaW5nVG9rZW4iLCAiT3B0aW9uRGVmYXVsdCIsICJPcHRpb25EZWZh dWx0TWZnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIk51bWVyaWNTaXplT25lIiwg Ik51bWVyaWNTaXplVHdvIiwgIk51bWVyaWNTaXplRm91ciIsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICJOdW1lcmljU2l6ZUVpZ2h0IiwgIkRpc1BsYXlJbnREZWMiLCAiRGlzUGxheVVJ bnREZWMiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAiRGlzUGxheVVJbnRIZXgiLCAi SW5zZW5zaXRpdmUiLCAiU2Vuc2l0aXZlIiwgIkxhc3ROb25NYXRjaCIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICJGaXJzdE5vbk1hdGNoIiwgIk51bWJlciIsICJTdHJpbmdJZGVudGlm aWVyIiwNCj4gIkNvbXBsZXhEZWZpbmUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAi TGluZURlZmluaXRpb24iLCAiSW5jbHVkZURlZmluaXRpb24iLCAiV2hpdGVzcGFjZSIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICJOZXdsaW5lIiwgIkxpbmVDb21tZW50IiwgIkV4dGVy biIgXQ0KPiANCj4gKw0KPiANCj4gKyAgICBSVUxFX3ZmclByb2dyYW0gPSAwDQo+IA0KPiArICAg IFJVTEVfcHJhZ21hUGFja1Nob3dEZWYgPSAxDQo+IA0KPiArICAgIFJVTEVfcHJhZ21hUGFja1N0 YWNrRGVmID0gMg0KPiANCj4gKyAgICBSVUxFX3ByYWdtYVBhY2tOdW1iZXIgPSAzDQo+IA0KPiAr ICAgIFJVTEVfdmZyUHJhZ21hUGFja0RlZmluaXRpb24gPSA0DQo+IA0KPiArICAgIFJVTEVfdmZy RGF0YVN0cnVjdERlZmluaXRpb24gPSA1DQo+IA0KPiArICAgIFJVTEVfdmZyRGF0YVVuaW9uRGVm aW5pdGlvbiA9IDYNCj4gDQo+ICsgICAgUlVMRV92ZnJEYXRhU3RydWN0RmllbGRzID0gNw0KPiAN Cj4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZDY0ID0gOA0KPiANCj4gKyAgICBSVUxFX2RhdGFT dHJ1Y3RGaWVsZDMyID0gOQ0KPiANCj4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZDE2ID0gMTAN Cj4gDQo+ICsgICAgUlVMRV9kYXRhU3RydWN0RmllbGQ4ID0gMTENCj4gDQo+ICsgICAgUlVMRV9k YXRhU3RydWN0RmllbGRCb29sID0gMTINCj4gDQo+ICsgICAgUlVMRV9kYXRhU3RydWN0RmllbGRT dHJpbmcgPSAxMw0KPiANCj4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZERhdGUgPSAxNA0KPiAN Cj4gKyAgICBSVUxFX2RhdGFTdHJ1Y3RGaWVsZFRpbWUgPSAxNQ0KPiANCj4gKyAgICBSVUxFX2Rh dGFTdHJ1Y3RGaWVsZFJlZiA9IDE2DQo+IA0KPiArICAgIFJVTEVfZGF0YVN0cnVjdEZpZWxkVXNl ciA9IDE3DQo+IA0KPiArICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkNjQgPSAxOA0KPiANCj4g KyAgICBSVUxFX2RhdGFTdHJ1Y3RCaXRGaWVsZDMyID0gMTkNCj4gDQo+ICsgICAgUlVMRV9kYXRh U3RydWN0Qml0RmllbGQxNiA9IDIwDQo+IA0KPiArICAgIFJVTEVfZGF0YVN0cnVjdEJpdEZpZWxk OCA9IDIxDQo+IA0KPiArICAgIFJVTEVfdmZyRm9ybVNldERlZmluaXRpb24gPSAyMg0KPiANCj4g KyAgICBSVUxFX2NsYXNzZ3VpZERlZmluaXRpb24gPSAyMw0KPiANCj4gKyAgICBSVUxFX2NsYXNz RGVmaW5pdGlvbiA9IDI0DQo+IA0KPiArICAgIFJVTEVfdmFsaWRDbGFzc05hbWVzID0gMjUNCj4g DQo+ICsgICAgUlVMRV9zdWJjbGFzc0RlZmluaXRpb24gPSAyNg0KPiANCj4gKyAgICBSVUxFX3Zm ckZvcm1TZXRMaXN0ID0gMjcNCj4gDQo+ICsgICAgUlVMRV92ZnJGb3JtU2V0ID0gMjgNCj4gDQo+ ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUgPSAyOQ0KPiANCj4gKyAgICBSVUxF X3ZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyID0gMzANCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0 ZW1lbnRWYXJTdG9yZUVmaSA9IDMxDQo+IA0KPiArICAgIFJVTEVfdmZyVmFyU3RvcmVFZmlBdHRy ID0gMzINCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSA9IDMz DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCA9IDM0DQo+IA0K PiArICAgIFJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQgPSAzNQ0KPiANCj4gKyAg ICBSVUxFX2d1aWRTdWJEZWZpbml0aW9uID0gMzYNCj4gDQo+ICsgICAgUlVMRV9ndWlkRGVmaW5p dGlvbiA9IDM3DQo+IA0KPiArICAgIFJVTEVfZ2V0U3RyaW5nSWQgPSAzOA0KPiANCj4gKyAgICBS VUxFX3ZmclF1ZXN0aW9uSGVhZGVyID0gMzkNCj4gDQo+ICsgICAgUlVMRV92ZnJRdWVzdGlvbkJh c2VJbmZvID0gNDANCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRIZWFkZXIgPSA0MQ0KPiAN Cj4gKyAgICBSVUxFX3F1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCA9IDQyDQo+IA0KPiArICAgIFJV TEVfdmZyU3RvcmFnZVZhcklkID0gNDMNCj4gDQo+ICsgICAgUlVMRV92ZnJDb25zdGFudFZhbHVl RmllbGQgPSA0NA0KPiANCj4gKyAgICBSVUxFX3ZmckltYWdlVGFnID0gNDUNCj4gDQo+ICsgICAg UlVMRV92ZnJMb2NrZWRUYWcgPSA0Ng0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0YXRU YWcgPSA0Nw0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0ID0gNDgNCj4g DQo+ICsgICAgUlVMRV92ZnJGb3JtRGVmaW5pdGlvbiA9IDQ5DQo+IA0KPiArICAgIFJVTEVfdmZy Rm9ybSA9IDUwDQo+IA0KPiArICAgIFJVTEVfdmZyRm9ybU1hcERlZmluaXRpb24gPSA1MQ0KPiAN Cj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEltYWdlID0gNTINCj4gDQo+ICsgICAgUlVMRV92ZnJT dGF0ZW1lbnRMb2NrZWQgPSA1Mw0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFJ1bGVzID0g NTQNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdGF0ID0gNTUNCj4gDQo+ICsgICAgUlVM RV92ZnJTdGF0ZW1lbnRTdWJUaXRsZSA9IDU2DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50 U3ViVGl0bGVDb21wb25lbnQgPSA1Nw0KPiANCj4gKyAgICBSVUxFX3ZmclN1YnRpdGxlRmxhZ3Mg PSA1OA0KPiANCj4gKyAgICBSVUxFX3N1YnRpdGxlRmxhZ3NGaWVsZCA9IDU5DQo+IA0KPiArICAg IFJVTEVfdmZyU3RhdGVtZW50U3RhdGljVGV4dCA9IDYwDQo+IA0KPiArICAgIFJVTEVfc3RhdGlj VGV4dEZsYWdzRmllbGQgPSA2MQ0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudENyb3NzUmVm ZXJlbmNlID0gNjINCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRHb3RvID0gNjMNCj4gDQo+ ICsgICAgUlVMRV92ZnJHb3RvRmxhZ3MgPSA2NA0KPiANCj4gKyAgICBSVUxFX2dvdG9GbGFnc0Zp ZWxkID0gNjUNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbiA9IDY2DQo+ IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25zID0gNjcNCj4gDQo+ICsgICAgUlVM RV92ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZyA9IDY4DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVt ZW50SW5jb25zaXN0ZW50SWYgPSA2OQ0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudE5vU3Vi bWl0SWYgPSA3MA0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0ID0g NzENCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRSZWZyZXNoID0gNzINCj4gDQo+ICsgICAg UlVMRV92ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZSA9IDczDQo+IA0KPiArICAgIFJVTEVfdmZy U3RhdGVtZW50UmVmcmVzaEV2ZW50ID0gNzQNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRX YXJuaW5nSWYgPSA3NQ0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uVGFnTGlz dCA9IDc2DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcgPSA3 Nw0KPiANCj4gKyAgICBSVUxFX2ZsYWdzRmllbGQgPSA3OA0KPiANCj4gKyAgICBSVUxFX3ZmclN0 YXRlbWVudFN1cHByZXNzSWZRdWVzdCA9IDc5DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50 R3JheU91dElmUXVlc3QgPSA4MA0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudERlZmF1bHQg PSA4MQ0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFZhbHVlID0gODINCj4gDQo+ICsgICAg UlVMRV92ZnJTdGF0ZW1lbnRPcHRpb25zID0gODMNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1l bnRPbmVPZk9wdGlvbiA9IDg0DQo+IA0KPiArICAgIFJVTEVfdmZyT25lT2ZPcHRpb25GbGFncyA9 IDg1DQo+IA0KPiArICAgIFJVTEVfb25lb2ZvcHRpb25GbGFnc0ZpZWxkID0gODYNCj4gDQo+ICsg ICAgUlVMRV92ZnJTdGF0ZW1lbnRSZWFkID0gODcNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1l bnRXcml0ZSA9IDg4DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25M aXN0ID0gODkNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbiA9IDkw DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50Qm9vbGVhblR5cGUgPSA5MQ0KPiANCj4gKyAg ICBSVUxFX3ZmclN0YXRlbWVudENoZWNrQm94ID0gOTINCj4gDQo+ICsgICAgUlVMRV92ZnJDaGVj a0JveEZsYWdzID0gOTMNCj4gDQo+ICsgICAgUlVMRV9jaGVja2JveEZsYWdzRmllbGQgPSA5NA0K PiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEFjdGlvbiA9IDk1DQo+IA0KPiArICAgIFJVTEVf dmZyQWN0aW9uRmxhZ3MgPSA5Ng0KPiANCj4gKyAgICBSVUxFX2FjdGlvbkZsYWdzRmllbGQgPSA5 Nw0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudE51bWVyaWNUeXBlID0gOTgNCj4gDQo+ICsg ICAgUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljID0gOTkNCj4gDQo+ICsgICAgUlVMRV92ZnJTZXRN aW5NYXhTdGVwID0gMTAwDQo+IA0KPiArICAgIFJVTEVfdmZyTnVtZXJpY0ZsYWdzID0gMTAxDQo+ IA0KPiArICAgIFJVTEVfbnVtZXJpY0ZsYWdzRmllbGQgPSAxMDINCj4gDQo+ICsgICAgUlVMRV92 ZnJTdGF0ZW1lbnRPbmVPZiA9IDEwMw0KPiANCj4gKyAgICBSVUxFX3Zmck9uZW9mRmxhZ3NGaWVs ZCA9IDEwNA0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN0cmluZ1R5cGUgPSAxMDUNCj4g DQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdHJpbmcgPSAxMDYNCj4gDQo+ICsgICAgUlVMRV92 ZnJTdHJpbmdGbGFnc0ZpZWxkID0gMTA3DQo+IA0KPiArICAgIFJVTEVfc3RyaW5nRmxhZ3NGaWVs ZCA9IDEwOA0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFBhc3N3b3JkID0gMTA5DQo+IA0K PiArICAgIFJVTEVfdmZyUGFzc3dvcmRGbGFnc0ZpZWxkID0gMTEwDQo+IA0KPiArICAgIFJVTEVf cGFzc3dvcmRGbGFnc0ZpZWxkID0gMTExDQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50T3Jk ZXJlZExpc3QgPSAxMTINCj4gDQo+ICsgICAgUlVMRV92ZnJPcmRlcmVkTGlzdEZsYWdzID0gMTEz DQo+IA0KPiArICAgIFJVTEVfb3JkZXJlZGxpc3RGbGFnc0ZpZWxkID0gMTE0DQo+IA0KPiArICAg IFJVTEVfdmZyU3RhdGVtZW50RGF0ZSA9IDExNQ0KPiANCj4gKyAgICBSVUxFX21pbk1heERhdGVT dGVwRGVmYXVsdCA9IDExNg0KPiANCj4gKyAgICBSVUxFX3ZmckRhdGVGbGFncyA9IDExNw0KPiAN Cj4gKyAgICBSVUxFX2RhdGVGbGFnc0ZpZWxkID0gMTE4DQo+IA0KPiArICAgIFJVTEVfdmZyU3Rh dGVtZW50VGltZSA9IDExOQ0KPiANCj4gKyAgICBSVUxFX21pbk1heFRpbWVTdGVwRGVmYXVsdCA9 IDEyMA0KPiANCj4gKyAgICBSVUxFX3ZmclRpbWVGbGFncyA9IDEyMQ0KPiANCj4gKyAgICBSVUxF X3RpbWVGbGFnc0ZpZWxkID0gMTIyDQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50Q29uZGl0 aW9uYWwgPSAxMjMNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldyA9 IDEyNA0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0ID0gMTI1DQo+ IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmU3RhdCA9IDEyNg0KPiANCj4gKyAg ICBSVUxFX3ZmclN0YXRlbWVudFN0YXRMaXN0ID0gMTI3DQo+IA0KPiArICAgIFJVTEVfdmZyU3Rh dGVtZW50U3RhdExpc3RPbGQgPSAxMjgNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnREaXNh YmxlSWZTdGF0ID0gMTI5DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50Z3JheW91dElmU3Vw cHJlc3NJZiA9IDEzMA0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudHN1cHByZXNzSWZHcmF5 T3V0SWYgPSAxMzENCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5l dyA9IDEzMg0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcgPSAx MzMNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQgPSAxMzQN Cj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRJbnZhbGlkID0gMTM1DQo+IA0KPiArICAgIFJV TEVfdmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbiA9IDEzNg0KPiANCj4gKyAgICBSVUxFX3ZmclN0 YXRlbWVudEludmFsaWRJbnZlbnRvcnkgPSAxMzcNCj4gDQo+ICsgICAgUlVMRV92ZnJTdGF0ZW1l bnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cyA9IDEzOA0KPiANCj4gKyAgICBSVUxFX3ZmclN0 YXRlbWVudExhYmVsID0gMTM5DQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50QmFubmVyID0g MTQwDQo+IA0KPiArICAgIFJVTEVfdmZyU3RhdGVtZW50RXh0ZW5zaW9uID0gMTQxDQo+IA0KPiAr ICAgIFJVTEVfdmZyRXh0ZW5zaW9uRGF0YSA9IDE0Mg0KPiANCj4gKyAgICBSVUxFX3ZmclN0YXRl bWVudE1vZGFsID0gMTQzDQo+IA0KPiArICAgIFJVTEVfdmZyTW9kYWxUYWcgPSAxNDQNCj4gDQo+ ICsgICAgUlVMRV92ZnJTdGF0ZW1lbnRFeHByZXNzaW9uID0gMTQ1DQo+IA0KPiArICAgIFJVTEVf dmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YiA9IDE0Ng0KPiANCj4gKyAgICBSVUxFX2FuZFRlcm0g PSAxNDcNCj4gDQo+ICsgICAgUlVMRV9iaXR3aXNlb3JUZXJtID0gMTQ4DQo+IA0KPiArICAgIFJV TEVfYml0d2lzZWFuZFRlcm0gPSAxNDkNCj4gDQo+ICsgICAgUlVMRV9lcXVhbFRlcm0gPSAxNTAN Cj4gDQo+ICsgICAgUlVMRV9lcXVhbFRlcm1TdXBwbGVtZW50YXJ5ID0gMTUxDQo+IA0KPiArICAg IFJVTEVfY29tcGFyZVRlcm0gPSAxNTINCj4gDQo+ICsgICAgUlVMRV9jb21wYXJlVGVybVN1cHBs ZW1lbnRhcnkgPSAxNTMNCj4gDQo+ICsgICAgUlVMRV9zaGlmdFRlcm0gPSAxNTQNCj4gDQo+ICsg ICAgUlVMRV9zaGlmdFRlcm1TdXBwbGVtZW50YXJ5ID0gMTU1DQo+IA0KPiArICAgIFJVTEVfYWRk TWludXNUZXJtID0gMTU2DQo+IA0KPiArICAgIFJVTEVfYWRkTWludXNUZXJtU3VwcGxlbWVudGFy eSA9IDE1Nw0KPiANCj4gKyAgICBSVUxFX211bHRkaXZtb2RUZXJtID0gMTU4DQo+IA0KPiArICAg IFJVTEVfbXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5ID0gMTU5DQo+IA0KPiArICAgIFJVTEVf Y2FzdFRlcm0gPSAxNjANCj4gDQo+ICsgICAgUlVMRV9hdG9tVGVybSA9IDE2MQ0KPiANCj4gKyAg ICBSVUxFX3ZmckV4cHJlc3Npb25DYXRlbmF0ZSA9IDE2Mg0KPiANCj4gKyAgICBSVUxFX3ZmckV4 cHJlc3Npb25NYXRjaCA9IDE2Mw0KPiANCj4gKyAgICBSVUxFX3ZmckV4cHJlc3Npb25NYXRjaDIg PSAxNjQNCj4gDQo+ICsgICAgUlVMRV92ZnJFeHByZXNzaW9uUGFyZW4gPSAxNjUNCj4gDQo+ICsg ICAgUlVMRV92ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uID0gMTY2DQo+IA0KPiArICAgIFJV TEVfZHVwRXhwID0gMTY3DQo+IA0KPiArICAgIFJVTEVfdmFyZXF2YWxFeHAgPSAxNjgNCj4gDQo+ ICsgICAgUlVMRV9pZGVxdmFsRXhwID0gMTY5DQo+IA0KPiArICAgIFJVTEVfaWRlcWlkRXhwID0g MTcwDQo+IA0KPiArICAgIFJVTEVfaWRlcXZhbGxpc3RFeHAgPSAxNzENCj4gDQo+ICsgICAgUlVM RV92ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUgPSAxNzINCj4gDQo+ICsgICAgUlVMRV9hcnJheU5h bWUgPSAxNzMNCj4gDQo+ICsgICAgUlVMRV9xdWVzdGlvbnJlZjFFeHAgPSAxNzQNCj4gDQo+ICsg ICAgUlVMRV9ydWxlcmVmRXhwID0gMTc1DQo+IA0KPiArICAgIFJVTEVfc3RyaW5ncmVmMUV4cCA9 IDE3Ng0KPiANCj4gKyAgICBSVUxFX3B1c2h0aGlzRXhwID0gMTc3DQo+IA0KPiArICAgIFJVTEVf c2VjdXJpdHlFeHAgPSAxNzgNCj4gDQo+ICsgICAgUlVMRV9udW1lcmljVmFyU3RvcmVUeXBlID0g MTc5DQo+IA0KPiArICAgIFJVTEVfZ2V0RXhwID0gMTgwDQo+IA0KPiArICAgIFJVTEVfdmZyRXhw cmVzc2lvbkNvbnN0YW50ID0gMTgxDQo+IA0KPiArICAgIFJVTEVfdmZyRXhwcmVzc2lvblVuYXJ5 T3AgPSAxODINCj4gDQo+ICsgICAgUlVMRV9sZW5ndGhFeHAgPSAxODMNCj4gDQo+ICsgICAgUlVM RV9iaXR3aXNlbm90RXhwID0gMTg0DQo+IA0KPiArICAgIFJVTEVfcXVlc3Rpb24yM3JlZkV4cCA9 IDE4NQ0KPiANCj4gKyAgICBSVUxFX3N0cmluZ3JlZjJFeHAgPSAxODYNCj4gDQo+ICsgICAgUlVM RV90b2Jvb2xFeHAgPSAxODcNCj4gDQo+ICsgICAgUlVMRV90b3N0cmluZ0V4cCA9IDE4OA0KPiAN Cj4gKyAgICBSVUxFX3VuaW50RXhwID0gMTg5DQo+IA0KPiArICAgIFJVTEVfdG91cHBlckV4cCA9 IDE5MA0KPiANCj4gKyAgICBSVUxFX3RvbHdlckV4cCA9IDE5MQ0KPiANCj4gKyAgICBSVUxFX3Nl dEV4cCA9IDE5Mg0KPiANCj4gKyAgICBSVUxFX3ZmckV4cHJlc3Npb25UZXJuYXJ5T3AgPSAxOTMN Cj4gDQo+ICsgICAgUlVMRV9jb25kaXRpb25hbEV4cCA9IDE5NA0KPiANCj4gKyAgICBSVUxFX2Zp bmRFeHAgPSAxOTUNCj4gDQo+ICsgICAgUlVMRV9maW5kRm9ybWF0ID0gMTk2DQo+IA0KPiArICAg IFJVTEVfbWlkRXhwID0gMTk3DQo+IA0KPiArICAgIFJVTEVfdG9rZW5FeHAgPSAxOTgNCj4gDQo+ ICsgICAgUlVMRV9zcGFuRXhwID0gMTk5DQo+IA0KPiArICAgIFJVTEVfc3BhbkZsYWdzID0gMjAw DQo+IA0KPiArICAgIFJVTEVfdmZyRXhwcmVzc2lvbk1hcCA9IDIwMQ0KPiANCj4gKw0KPiANCj4g KyAgICBydWxlTmFtZXMgPSAgWyAidmZyUHJvZ3JhbSIsICJwcmFnbWFQYWNrU2hvd0RlZiIsDQo+ ICJwcmFnbWFQYWNrU3RhY2tEZWYiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAicHJhZ21h UGFja051bWJlciIsICJ2ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiIsDQo+ICJ2ZnJEYXRhU3RydWN0 RGVmaW5pdGlvbiIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJEYXRhVW5pb25EZWZp bml0aW9uIiwgInZmckRhdGFTdHJ1Y3RGaWVsZHMiLA0KPiAiZGF0YVN0cnVjdEZpZWxkNjQiLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAiZGF0YVN0cnVjdEZpZWxkMzIiLCAiZGF0YVN0cnVj dEZpZWxkMTYiLCAiZGF0YVN0cnVjdEZpZWxkOCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICJkYXRhU3RydWN0RmllbGRCb29sIiwgImRhdGFTdHJ1Y3RGaWVsZFN0cmluZyIsDQo+ICJkYXRh U3RydWN0RmllbGREYXRlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgImRhdGFTdHJ1Y3RG aWVsZFRpbWUiLCAiZGF0YVN0cnVjdEZpZWxkUmVmIiwNCj4gImRhdGFTdHJ1Y3RGaWVsZFVzZXIi LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAiZGF0YVN0cnVjdEJpdEZpZWxkNjQiLCAiZGF0 YVN0cnVjdEJpdEZpZWxkMzIiLA0KPiAiZGF0YVN0cnVjdEJpdEZpZWxkMTYiLA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAiZGF0YVN0cnVjdEJpdEZpZWxkOCIsICJ2ZnJGb3JtU2V0RGVmaW5p dGlvbiIsDQo+ICJjbGFzc2d1aWREZWZpbml0aW9uIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgImNsYXNzRGVmaW5pdGlvbiIsICJ2YWxpZENsYXNzTmFtZXMiLCAic3ViY2xhc3NEZWZpbml0 aW9uIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmckZvcm1TZXRMaXN0IiwgInZmckZv cm1TZXQiLCAidmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgInZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyIiwgInZmclN0YXRlbWVudFZhclN0b3Jl RWZpIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmclZhclN0b3JlRWZpQXR0ciIsICJ2 ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICJ2ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0IiwNCj4gInZmclN0YXRlbWVudFN1cHByZXNz SWZGb3JtU2V0IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgImd1aWRTdWJEZWZpbml0aW9u IiwgImd1aWREZWZpbml0aW9uIiwgImdldFN0cmluZ0lkIiwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgInZmclF1ZXN0aW9uSGVhZGVyIiwgInZmclF1ZXN0aW9uQmFzZUluZm8iLA0KPiAidmZy U3RhdGVtZW50SGVhZGVyIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInF1ZXN0aW9uaGVh ZGVyRmxhZ3NGaWVsZCIsICJ2ZnJTdG9yYWdlVmFySWQiLA0KPiAidmZyQ29uc3RhbnRWYWx1ZUZp ZWxkIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmckltYWdlVGFnIiwgInZmckxvY2tl ZFRhZyIsICJ2ZnJTdGF0ZW1lbnRTdGF0VGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg InZmclN0YXRlbWVudFN0YXRUYWdMaXN0IiwgInZmckZvcm1EZWZpbml0aW9uIiwgInZmckZvcm0i LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyRm9ybU1hcERlZmluaXRpb24iLCAidmZy U3RhdGVtZW50SW1hZ2UiLA0KPiAidmZyU3RhdGVtZW50TG9ja2VkIiwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgInZmclN0YXRlbWVudFJ1bGVzIiwgInZmclN0YXRlbWVudFN0YXQiLCAidmZy U3RhdGVtZW50U3ViVGl0bGUiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVt ZW50U3ViVGl0bGVDb21wb25lbnQiLCAidmZyU3VidGl0bGVGbGFncyIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICJzdWJ0aXRsZUZsYWdzRmllbGQiLCAidmZyU3RhdGVtZW50U3RhdGljVGV4 dCIsDQo+ICJzdGF0aWNUZXh0RmxhZ3NGaWVsZCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICJ2ZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZSIsICJ2ZnJTdGF0ZW1lbnRHb3RvIiwNCj4gInZm ckdvdG9GbGFncyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJnb3RvRmxhZ3NGaWVsZCIs ICJ2ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbiIsDQo+ICJ2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMiLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rpb25UYWciLCAidmZy U3RhdGVtZW50SW5jb25zaXN0ZW50SWYiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZy U3RhdGVtZW50Tm9TdWJtaXRJZiIsICJ2ZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdCIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRSZWZyZXNoIiwgInZmclN0YXRlbWVu dFZhcnN0b3JlRGV2aWNlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVu dFJlZnJlc2hFdmVudCIsICJ2ZnJTdGF0ZW1lbnRXYXJuaW5nSWYiLA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAidmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0IiwNCj4gInZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uVGFnIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgImZsYWdzRmll bGQiLCAidmZyU3RhdGVtZW50U3VwcHJlc3NJZlF1ZXN0IiwNCj4gInZmclN0YXRlbWVudEdyYXlP dXRJZlF1ZXN0IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmclN0YXRlbWVudERlZmF1 bHQiLCAidmZyU3RhdGVtZW50VmFsdWUiLA0KPiAidmZyU3RhdGVtZW50T3B0aW9ucyIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbiIsICJ2ZnJPbmVP Zk9wdGlvbkZsYWdzIiwNCj4gIm9uZW9mb3B0aW9uRmxhZ3NGaWVsZCIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRSZWFkIiwgInZmclN0YXRlbWVudFdyaXRlIiwNCj4g InZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdCIsDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICJ2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbiIsICJ2ZnJTdGF0ZW1lbnRCb29sZWFuVHlw ZSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRDaGVja0JveCIsICJ2 ZnJDaGVja0JveEZsYWdzIiwNCj4gImNoZWNrYm94RmxhZ3NGaWVsZCIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRBY3Rpb24iLCAidmZyQWN0aW9uRmxhZ3MiLCAiYWN0 aW9uRmxhZ3NGaWVsZCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRO dW1lcmljVHlwZSIsICJ2ZnJTdGF0ZW1lbnROdW1lcmljIiwNCj4gInZmclNldE1pbk1heFN0ZXAi LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyTnVtZXJpY0ZsYWdzIiwgIm51bWVyaWNG bGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudE9uZU9mIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgInZmck9uZW9mRmxhZ3NGaWVsZCIsICJ2ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlIiwNCj4gInZm clN0YXRlbWVudFN0cmluZyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdHJpbmdG bGFnc0ZpZWxkIiwgInN0cmluZ0ZsYWdzRmllbGQiLCAidmZyU3RhdGVtZW50UGFzc3dvcmQiLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyUGFzc3dvcmRGbGFnc0ZpZWxkIiwgInBhc3N3 b3JkRmxhZ3NGaWVsZCIsDQo+ICJ2ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCIsDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICJ2ZnJPcmRlcmVkTGlzdEZsYWdzIiwgIm9yZGVyZWRsaXN0RmxhZ3NG aWVsZCIsDQo+ICJ2ZnJTdGF0ZW1lbnREYXRlIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg Im1pbk1heERhdGVTdGVwRGVmYXVsdCIsICJ2ZnJEYXRlRmxhZ3MiLCAiZGF0ZUZsYWdzRmllbGQi LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50VGltZSIsICJtaW5NYXhU aW1lU3RlcERlZmF1bHQiLCAidmZyVGltZUZsYWdzIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgInRpbWVGbGFnc0ZpZWxkIiwgInZmclN0YXRlbWVudENvbmRpdGlvbmFsIiwNCj4gInZmclN0 YXRlbWVudENvbmRpdGlvbmFsTmV3IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmclN0 YXRlbWVudFN1cHByZXNzSWZTdGF0IiwgInZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQiLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50U3RhdExpc3QiLCAidmZyU3RhdGVt ZW50U3RhdExpc3RPbGQiLA0KPiAidmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCIsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmIiwNCj4g InZmclN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWYiLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAidmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXciLA0KPiAidmZyU3RhdGVtZW50R3Jh eU91dElmU3RhdE5ldyIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRJ bmNvbnNpc3RlbnRJZlN0YXQiLCAidmZyU3RhdGVtZW50SW52YWxpZCIsDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICJ2ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuIiwgInZmclN0YXRlbWVudElu dmFsaWRJbnZlbnRvcnkiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50 SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHMiLCAidmZyU3RhdGVtZW50TGFiZWwiLA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50QmFubmVyIiwgInZmclN0YXRlbWVudEV4 dGVuc2lvbiIsDQo+ICJ2ZnJFeHRlbnNpb25EYXRhIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgInZmclN0YXRlbWVudE1vZGFsIiwgInZmck1vZGFsVGFnIiwgInZmclN0YXRlbWVudEV4cHJl c3Npb24iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAidmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YiIsICJhbmRUZXJtIiwgImJpdHdpc2VvclRlcm0iLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAiYml0d2lzZWFuZFRlcm0iLCAiZXF1YWxUZXJtIiwgImVxdWFsVGVybVN1cHBsZW1lbnRh cnkiLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAiY29tcGFyZVRlcm0iLCAiY29tcGFyZVRl cm1TdXBwbGVtZW50YXJ5IiwgInNoaWZ0VGVybSIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICJzaGlmdFRlcm1TdXBwbGVtZW50YXJ5IiwgImFkZE1pbnVzVGVybSIsDQo+ICJhZGRNaW51c1Rl cm1TdXBwbGVtZW50YXJ5IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIm11bHRkaXZtb2RU ZXJtIiwgIm11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeSIsDQo+ICJjYXN0VGVybSIsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICJhdG9tVGVybSIsICJ2ZnJFeHByZXNzaW9uQ2F0ZW5hdGUi LCAidmZyRXhwcmVzc2lvbk1hdGNoIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmckV4 cHJlc3Npb25NYXRjaDIiLCAidmZyRXhwcmVzc2lvblBhcmVuIiwNCj4gInZmckV4cHJlc3Npb25C dWlsZEluRnVuY3Rpb24iLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAiZHVwRXhwIiwgInZh cmVxdmFsRXhwIiwgImlkZXF2YWxFeHAiLCAiaWRlcWlkRXhwIiwNCj4gImlkZXF2YWxsaXN0RXhw IiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgInZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSIs ICJhcnJheU5hbWUiLCAicXVlc3Rpb25yZWYxRXhwIiwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgInJ1bGVyZWZFeHAiLCAic3RyaW5ncmVmMUV4cCIsICJwdXNodGhpc0V4cCIsICJzZWN1cml0 eUV4cCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJudW1lcmljVmFyU3RvcmVUeXBlIiwg ImdldEV4cCIsICJ2ZnJFeHByZXNzaW9uQ29uc3RhbnQiLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAidmZyRXhwcmVzc2lvblVuYXJ5T3AiLCAibGVuZ3RoRXhwIiwgImJpdHdpc2Vub3RFeHAi LA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAicXVlc3Rpb24yM3JlZkV4cCIsICJzdHJpbmdy ZWYyRXhwIiwgInRvYm9vbEV4cCIsICJ0b3N0cmluZ0V4cCIsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICJ1bmludEV4cCIsICJ0b3VwcGVyRXhwIiwgInRvbHdlckV4cCIsICJzZXRFeHAiLA0K PiAidmZyRXhwcmVzc2lvblRlcm5hcnlPcCIsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICJj b25kaXRpb25hbEV4cCIsICJmaW5kRXhwIiwgImZpbmRGb3JtYXQiLCAibWlkRXhwIiwNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgInRva2VuRXhwIiwgInNwYW5FeHAiLCAic3BhbkZsYWdzIiwg InZmckV4cHJlc3Npb25NYXAiIF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgRU9GID0gVG9rZW4uRU9G DQo+IA0KPiArICAgIFRfXzA9MQ0KPiANCj4gKyAgICBUX18xPTINCj4gDQo+ICsgICAgVF9fMj0z DQo+IA0KPiArICAgIFRfXzM9NA0KPiANCj4gKyAgICBUX180PTUNCj4gDQo+ICsgICAgVF9fNT02 DQo+IA0KPiArICAgIFRfXzY9Nw0KPiANCj4gKyAgICBUX183PTgNCj4gDQo+ICsgICAgVF9fOD05 DQo+IA0KPiArICAgIFRfXzk9MTANCj4gDQo+ICsgICAgVF9fMTA9MTENCj4gDQo+ICsgICAgVF9f MTE9MTINCj4gDQo+ICsgICAgVF9fMTI9MTMNCj4gDQo+ICsgICAgVF9fMTM9MTQNCj4gDQo+ICsg ICAgVF9fMTQ9MTUNCj4gDQo+ICsgICAgVF9fMTU9MTYNCj4gDQo+ICsgICAgRGVmaW5lPTE3DQo+ IA0KPiArICAgIEluY2x1ZGU9MTgNCj4gDQo+ICsgICAgRm9ybVBrZ1R5cGU9MTkNCj4gDQo+ICsg ICAgT3BlbkJyYWNlPTIwDQo+IA0KPiArICAgIENsb3NlQnJhY2U9MjENCj4gDQo+ICsgICAgT3Bl blBhcmVuPTIyDQo+IA0KPiArICAgIENsb3NlUGFyZW49MjMNCj4gDQo+ICsgICAgT3BlbkJyYWNr ZXQ9MjQNCj4gDQo+ICsgICAgQ2xvc2VCcmFja2V0PTI1DQo+IA0KPiArICAgIERvdD0yNg0KPiAN Cj4gKyAgICBOZWdhdGl2ZT0yNw0KPiANCj4gKyAgICBDb2xvbj0yOA0KPiANCj4gKyAgICBTbGFz aD0yOQ0KPiANCj4gKyAgICBTZW1pY29sb249MzANCj4gDQo+ICsgICAgQ29tbWE9MzENCj4gDQo+ ICsgICAgRXF1YWw9MzINCj4gDQo+ICsgICAgTm90RXF1YWw9MzMNCj4gDQo+ICsgICAgTGVzc0Vx dWFsPTM0DQo+IA0KPiArICAgIExlc3M9MzUNCj4gDQo+ICsgICAgR3JlYXRlckVxdWFsPTM2DQo+ IA0KPiArICAgIEdyZWF0ZXI9MzcNCj4gDQo+ICsgICAgQml0V2lzZU9yPTM4DQo+IA0KPiArICAg IEJpdFdpc2VBbmQ9MzkNCj4gDQo+ICsgICAgRGV2aWNlUGF0aD00MA0KPiANCj4gKyAgICBGb3Jt U2V0PTQxDQo+IA0KPiArICAgIEZvcm1TZXRJZD00Mg0KPiANCj4gKyAgICBFbmRGb3JtU2V0PTQz DQo+IA0KPiArICAgIFRpdGxlPTQ0DQo+IA0KPiArICAgIEZvcm1JZD00NQ0KPiANCj4gKyAgICBP bmVPZj00Ng0KPiANCj4gKyAgICBFbmRPbmVPZj00Nw0KPiANCj4gKyAgICBQcm9tcHQ9NDgNCj4g DQo+ICsgICAgT3JkZXJlZExpc3Q9NDkNCj4gDQo+ICsgICAgTWF4Q29udGFpbmVycz01MA0KPiAN Cj4gKyAgICBFbmRMaXN0PTUxDQo+IA0KPiArICAgIEVuZEZvcm09NTINCj4gDQo+ICsgICAgRm9y bT01Mw0KPiANCj4gKyAgICBGb3JtTWFwPTU0DQo+IA0KPiArICAgIE1hcFRpdGxlPTU1DQo+IA0K PiArICAgIE1hcEd1aWQ9NTYNCj4gDQo+ICsgICAgU3VidGl0bGU9NTcNCj4gDQo+ICsgICAgRW5k U3VidGl0bGU9NTgNCj4gDQo+ICsgICAgSGVscD01OQ0KPiANCj4gKyAgICBUZXh0PTYwDQo+IA0K PiArICAgIE9wdGlvbj02MQ0KPiANCj4gKyAgICBGTEFHUz02Mg0KPiANCj4gKyAgICBEYXRlPTYz DQo+IA0KPiArICAgIEVuZERhdGU9NjQNCj4gDQo+ICsgICAgWWVhcj02NQ0KPiANCj4gKyAgICBN b250aD02Ng0KPiANCj4gKyAgICBEYXk9NjcNCj4gDQo+ICsgICAgVGltZT02OA0KPiANCj4gKyAg ICBFbmRUaW1lPTY5DQo+IA0KPiArICAgIEhvdXI9NzANCj4gDQo+ICsgICAgTWludXRlPTcxDQo+ IA0KPiArICAgIFNlY29uZD03Mg0KPiANCj4gKyAgICBHcmF5T3V0SWY9NzMNCj4gDQo+ICsgICAg TGFiZWw9NzQNCj4gDQo+ICsgICAgVGltZW91dD03NQ0KPiANCj4gKyAgICBJbnZlbnRvcnk9NzYN Cj4gDQo+ICsgICAgTm9uTnZEYXRhTWFwPTc3DQo+IA0KPiArICAgIFN0cnVjdD03OA0KPiANCj4g KyAgICBVbmlvbj03OQ0KPiANCj4gKyAgICBCb29sZWFuPTgwDQo+IA0KPiArICAgIFVpbnQ2ND04 MQ0KPiANCj4gKyAgICBVaW50MzI9ODINCj4gDQo+ICsgICAgVWludDE2PTgzDQo+IA0KPiArICAg IFVpbnQ4PTg0DQo+IA0KPiArICAgIEVGSV9TVFJJTkdfSUQ9ODUNCj4gDQo+ICsgICAgRUZJX0hJ SV9EQVRFPTg2DQo+IA0KPiArICAgIEVGSV9ISUlfVElNRT04Nw0KPiANCj4gKyAgICBFRklfSElJ X1JFRj04OA0KPiANCj4gKyAgICBVdWlkPTg5DQo+IA0KPiArICAgIENoZWNrQm94PTkwDQo+IA0K PiArICAgIEVuZENoZWNrQm94PTkxDQo+IA0KPiArICAgIE51bWVyaWM9OTINCj4gDQo+ICsgICAg RW5kTnVtZXJpYz05Mw0KPiANCj4gKyAgICBNaW5pbXVtPTk0DQo+IA0KPiArICAgIE1heGltdW09 OTUNCj4gDQo+ICsgICAgU3RlcD05Ng0KPiANCj4gKyAgICBEZWZhdWx0PTk3DQo+IA0KPiArICAg IFBhc3N3b3JkPTk4DQo+IA0KPiArICAgIEVuZFBhc3N3b3JkPTk5DQo+IA0KPiArICAgIFN0cmlu Zz0xMDANCj4gDQo+ICsgICAgRW5kU3RyaW5nPTEwMQ0KPiANCj4gKyAgICBNaW5TaXplPTEwMg0K PiANCj4gKyAgICBNYXhTaXplPTEwMw0KPiANCj4gKyAgICBFbmNvZGluZz0xMDQNCj4gDQo+ICsg ICAgU3VwcHJlc3NJZj0xMDUNCj4gDQo+ICsgICAgRGlzYWJsZUlmPTEwNg0KPiANCj4gKyAgICBI aWRkZW49MTA3DQo+IA0KPiArICAgIEdvdG89MTA4DQo+IA0KPiArICAgIEZvcm1TZXRHdWlkPTEw OQ0KPiANCj4gKyAgICBJbmNvbnNpc3RlbnRJZj0xMTANCj4gDQo+ICsgICAgV2FybmluZ0lmPTEx MQ0KPiANCj4gKyAgICBOb1N1Ym1pdElmPTExMg0KPiANCj4gKyAgICBFbmRJZj0xMTMNCj4gDQo+ ICsgICAgS2V5PTExNA0KPiANCj4gKyAgICBEZWZhdWx0RmxhZz0xMTUNCj4gDQo+ICsgICAgTWFu dWZhY3R1cmluZ0ZsYWc9MTE2DQo+IA0KPiArICAgIENoZWNrQm94RGVmYXVsdEZsYWc9MTE3DQo+ IA0KPiArICAgIENoZWNrQm94RGVmYXVsdE1mZ0ZsYWc9MTE4DQo+IA0KPiArICAgIEludGVyYWN0 aXZlRmxhZz0xMTkNCj4gDQo+ICsgICAgTlZBY2Nlc3NGbGFnPTEyMA0KPiANCj4gKyAgICBSZXNl dFJlcXVpcmVkRmxhZz0xMjENCj4gDQo+ICsgICAgUmVjb25uZWN0UmVxdWlyZWRGbGFnPTEyMg0K PiANCj4gKyAgICBMYXRlQ2hlY2tGbGFnPTEyMw0KPiANCj4gKyAgICBSZWFkT25seUZsYWc9MTI0 DQo+IA0KPiArICAgIE9wdGlvbk9ubHlGbGFnPTEyNQ0KPiANCj4gKyAgICBSZXN0U3R5bGVGbGFn PTEyNg0KPiANCj4gKyAgICBDbGFzcz0xMjcNCj4gDQo+ICsgICAgU3ViY2xhc3M9MTI4DQo+IA0K PiArICAgIENsYXNzR3VpZD0xMjkNCj4gDQo+ICsgICAgVHlwZURlZj0xMzANCj4gDQo+ICsgICAg UmVzdG9yZT0xMzENCj4gDQo+ICsgICAgU2F2ZT0xMzINCj4gDQo+ICsgICAgRGVmYXVsdHM9MTMz DQo+IA0KPiArICAgIEJhbm5lcj0xMzQNCj4gDQo+ICsgICAgQWxpZ249MTM1DQo+IA0KPiArICAg IExlZnQ9MTM2DQo+IA0KPiArICAgIFJpZ2h0PTEzNw0KPiANCj4gKyAgICBDZW50ZXI9MTM4DQo+ IA0KPiArICAgIExpbmU9MTM5DQo+IA0KPiArICAgIE5hbWU9MTQwDQo+IA0KPiArICAgIFZhcklk PTE0MQ0KPiANCj4gKyAgICBRdWVzdGlvbj0xNDINCj4gDQo+ICsgICAgUXVlc3Rpb25JZD0xNDMN Cj4gDQo+ICsgICAgSW1hZ2U9MTQ0DQo+IA0KPiArICAgIExvY2tlZD0xNDUNCj4gDQo+ICsgICAg UnVsZT0xNDYNCj4gDQo+ICsgICAgRW5kUnVsZT0xNDcNCj4gDQo+ICsgICAgVmFsdWU9MTQ4DQo+ IA0KPiArICAgIFJlYWQ9MTQ5DQo+IA0KPiArICAgIFdyaXRlPTE1MA0KPiANCj4gKyAgICBSZXNl dEJ1dHRvbj0xNTENCj4gDQo+ICsgICAgRW5kUmVzZXRCdXR0b249MTUyDQo+IA0KPiArICAgIERl ZmF1bHRTdG9yZT0xNTMNCj4gDQo+ICsgICAgQXR0cmlidXRlPTE1NA0KPiANCj4gKyAgICBWYXJz dG9yZT0xNTUNCj4gDQo+ICsgICAgRWZpdmFyc3RvcmU9MTU2DQo+IA0KPiArICAgIFZhclNpemU9 MTU3DQo+IA0KPiArICAgIE5hbWVWYWx1ZVZhclN0b3JlPTE1OA0KPiANCj4gKyAgICBBY3Rpb249 MTU5DQo+IA0KPiArICAgIENvbmZpZz0xNjANCj4gDQo+ICsgICAgRW5kQWN0aW9uPTE2MQ0KPiAN Cj4gKyAgICBSZWZyZXNoPTE2Mg0KPiANCj4gKyAgICBJbnRlcnZhbD0xNjMNCj4gDQo+ICsgICAg VmFyc3RvcmVEZXZpY2U9MTY0DQo+IA0KPiArICAgIEd1aWRPcD0xNjUNCj4gDQo+ICsgICAgRW5k R3VpZE9wPTE2Ng0KPiANCj4gKyAgICBEYXRhVHlwZT0xNjcNCj4gDQo+ICsgICAgRGF0YT0xNjgN Cj4gDQo+ICsgICAgTW9kYWw9MTY5DQo+IA0KPiArICAgIENsYXNzTm9uRGV2aWNlPTE3MA0KPiAN Cj4gKyAgICBDbGFzc0Rpc2tEZXZpY2U9MTcxDQo+IA0KPiArICAgIENsYXNzVmlkZW9EZXZpY2U9 MTcyDQo+IA0KPiArICAgIENsYXNzTmV0d29ya0RldmljZT0xNzMNCj4gDQo+ICsgICAgQ2xhc3NJ bnB1dERldmljZT0xNzQNCj4gDQo+ICsgICAgQ2xhc3NPbkJvYXJkRGV2aWNlPTE3NQ0KPiANCj4g KyAgICBDbGFzc090aGVyRGV2aWNlPTE3Ng0KPiANCj4gKyAgICBTdWJjbGFzc1NldHVwQXBwbGlj YXRpb249MTc3DQo+IA0KPiArICAgIFN1YmNsYXNzR2VuZXJhbEFwcGxpY2F0aW9uPTE3OA0KPiAN Cj4gKyAgICBTdWJjbGFzc0Zyb250UGFnZT0xNzkNCj4gDQo+ICsgICAgU3ViY2xhc3NTaW5nbGVV c2U9MTgwDQo+IA0KPiArICAgIFllYXJTdXBwcHJlc3NGbGFnPTE4MQ0KPiANCj4gKyAgICBNb250 aFN1cHByZXNzRmxhZz0xODINCj4gDQo+ICsgICAgRGF5U3VwcHJlc3NGbGFnPTE4Mw0KPiANCj4g KyAgICBIb3VyU3VwcHByZXNzRmxhZz0xODQNCj4gDQo+ICsgICAgTWludXRlU3VwcHJlc3NGbGFn PTE4NQ0KPiANCj4gKyAgICBTZWNvbmRTdXBwcmVzc0ZsYWc9MTg2DQo+IA0KPiArICAgIFN0b3Jh Z2VOb3JtYWxGbGFnPTE4Nw0KPiANCj4gKyAgICBTdG9yYWdlVGltZUZsYWc9MTg4DQo+IA0KPiAr ICAgIFN0b3JhZ2VXYWtlVXBGbGFnPTE4OQ0KPiANCj4gKyAgICBVbmlRdWVGbGFnPTE5MA0KPiAN Cj4gKyAgICBOb0VtcHR5RmxhZz0xOTENCj4gDQo+ICsgICAgQ29uZD0xOTINCj4gDQo+ICsgICAg RmluZD0xOTMNCj4gDQo+ICsgICAgTWlkPTE5NA0KPiANCj4gKyAgICBUb2s9MTk1DQo+IA0KPiAr ICAgIFNwYW49MTk2DQo+IA0KPiArICAgIER1cD0xOTcNCj4gDQo+ICsgICAgVmFyRXFWYWw9MTk4 DQo+IA0KPiArICAgIFZhcj0xOTkNCj4gDQo+ICsgICAgSWRFcVZhbD0yMDANCj4gDQo+ICsgICAg SWRFcUlkPTIwMQ0KPiANCj4gKyAgICBJZEVxVmFsTGlzdD0yMDINCj4gDQo+ICsgICAgUXVlc3Rp b25SZWY9MjAzDQo+IA0KPiArICAgIFJ1bGVSZWY9MjA0DQo+IA0KPiArICAgIFN0cmluZ1JlZj0y MDUNCj4gDQo+ICsgICAgUHVzaFRoaXM9MjA2DQo+IA0KPiArICAgIFNlY3VyaXR5PTIwNw0KPiAN Cj4gKyAgICBHZXQ9MjA4DQo+IA0KPiArICAgIFRydWVTeW1ib2w9MjA5DQo+IA0KPiArICAgIEZh bHNlU3ltYm9sPTIxMA0KPiANCj4gKyAgICBPbmU9MjExDQo+IA0KPiArICAgIE9uZXM9MjEyDQo+ IA0KPiArICAgIFplcm89MjEzDQo+IA0KPiArICAgIFVuZGVmaW5lZD0yMTQNCj4gDQo+ICsgICAg VmVyc2lvbj0yMTUNCj4gDQo+ICsgICAgTGVuZ3RoPTIxNg0KPiANCj4gKyAgICBBTkQ9MjE3DQo+ IA0KPiArICAgIE9SPTIxOA0KPiANCj4gKyAgICBOT1Q9MjE5DQo+IA0KPiArICAgIFNldD0yMjAN Cj4gDQo+ICsgICAgQml0V2lzZU5vdD0yMjENCj4gDQo+ICsgICAgQm9vbFZhbD0yMjINCj4gDQo+ ICsgICAgU3RyaW5nVmFsPTIyMw0KPiANCj4gKyAgICBVbkludFZhbD0yMjQNCj4gDQo+ICsgICAg VG9VcHBlcj0yMjUNCj4gDQo+ICsgICAgVG9Mb3dlcj0yMjYNCj4gDQo+ICsgICAgTWF0Y2g9MjI3 DQo+IA0KPiArICAgIE1hdGNoMj0yMjgNCj4gDQo+ICsgICAgQ2F0ZW5hdGU9MjI5DQo+IA0KPiAr ICAgIFF1ZXN0aW9uUmVmVmFsPTIzMA0KPiANCj4gKyAgICBTdHJpbmdSZWZWYWw9MjMxDQo+IA0K PiArICAgIE1hcD0yMzINCj4gDQo+ICsgICAgUmVmcmVzaEd1aWQ9MjMzDQo+IA0KPiArICAgIFN0 cmluZ1Rva2VuPTIzNA0KPiANCj4gKyAgICBPcHRpb25EZWZhdWx0PTIzNQ0KPiANCj4gKyAgICBP cHRpb25EZWZhdWx0TWZnPTIzNg0KPiANCj4gKyAgICBOdW1lcmljU2l6ZU9uZT0yMzcNCj4gDQo+ ICsgICAgTnVtZXJpY1NpemVUd289MjM4DQo+IA0KPiArICAgIE51bWVyaWNTaXplRm91cj0yMzkN Cj4gDQo+ICsgICAgTnVtZXJpY1NpemVFaWdodD0yNDANCj4gDQo+ICsgICAgRGlzUGxheUludERl Yz0yNDENCj4gDQo+ICsgICAgRGlzUGxheVVJbnREZWM9MjQyDQo+IA0KPiArICAgIERpc1BsYXlV SW50SGV4PTI0Mw0KPiANCj4gKyAgICBJbnNlbnNpdGl2ZT0yNDQNCj4gDQo+ICsgICAgU2Vuc2l0 aXZlPTI0NQ0KPiANCj4gKyAgICBMYXN0Tm9uTWF0Y2g9MjQ2DQo+IA0KPiArICAgIEZpcnN0Tm9u TWF0Y2g9MjQ3DQo+IA0KPiArICAgIE51bWJlcj0yNDgNCj4gDQo+ICsgICAgU3RyaW5nSWRlbnRp Zmllcj0yNDkNCj4gDQo+ICsgICAgQ29tcGxleERlZmluZT0yNTANCj4gDQo+ICsgICAgTGluZURl ZmluaXRpb249MjUxDQo+IA0KPiArICAgIEluY2x1ZGVEZWZpbml0aW9uPTI1Mg0KPiANCj4gKyAg ICBXaGl0ZXNwYWNlPTI1Mw0KPiANCj4gKyAgICBOZXdsaW5lPTI1NA0KPiANCj4gKyAgICBMaW5l Q29tbWVudD0yNTUNCj4gDQo+ICsgICAgRXh0ZXJuPTI1Ng0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgX19pbml0X18oc2VsZiwgaW5wdXQ6VG9rZW5TdHJlYW0sIG91dHB1dDpUZXh0SU8gPSBzeXMu c3Rkb3V0KToNCj4gDQo+ICsgICAgICAgIHN1cGVyKCkuX19pbml0X18oaW5wdXQsIG91dHB1dCkN Cj4gDQo+ICsgICAgICAgIHNlbGYuY2hlY2tWZXJzaW9uKCI0LjcuMiIpDQo+IA0KPiArICAgICAg ICBzZWxmLl9pbnRlcnAgPSBQYXJzZXJBVE5TaW11bGF0b3Ioc2VsZiwgc2VsZi5hdG4sIHNlbGYu ZGVjaXNpb25zVG9ERkEsDQo+IHNlbGYuc2hhcmVkQ29udGV4dENhY2hlKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fcHJlZGljYXRlcyA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyUHJvZ3JhbUNvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToN Cj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIHZmckZvcm1TZXREZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlZmckZvcm1TZXREZWZpbml0aW9uQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHZmclByYWdtYVBhY2tEZWZpbml0aW9uKHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclBy YWdtYVBhY2tEZWZpbml0aW9uQ29udGUNCj4geHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyUHJhZ21hUGFja0RlZmluaXRpb25Db250ZXh0DQo+ICxpKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckRhdGFTdHJ1Y3REZWZpbml0 aW9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dHMoVmZyU3ludGF4UGFyc2VyLlZmckRhdGFTdHJ1Y3REZWZpbml0aW9uQ29udGV4dCkNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RGVmaW5p dGlvbkNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJE YXRhVW5pb25EZWZpbml0aW9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmckRhdGFVbmlvbkRlZmluaXRpb25D b250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckRh dGFVbmlvbkRlZmluaXRpb25Db250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJQcm9ncmFtDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyUHJvZ3JhbSIgKToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJQcm9ncmFtKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgdmZyUHJvZ3JhbShzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclByb2dyYW1Db250ZXh0KHNlbGYsIHNl bGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAwLCBzZWxmLlJVTEVfdmZyUHJvZ3JhbSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0g MCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDQwOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fMyBvciAoKCgoX2xhIC0gNzgp KSAmIH4weDNmKSA9PSAwIGFuZCAoKDENCj4gPDwgKF9sYSAtIDc4KSkgJiAoKDEgPDwgKFZmclN5 bnRheFBhcnNlci5TdHJ1Y3QgLSA3OCkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5Vbmlv biAtIDc4KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlR5cGVEZWYgLSA3OCkpKSkgIT0gMCk6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MDcNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMCxzZWxm Ll9jdHgpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQwNA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi52ZnJQcmFnbWFQYWNrRGVmaW5pdGlvbigpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDI6 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDA1DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLnZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAg ZWxpZiBsYV8gPT0gMzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0 MDYNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyRGF0YVVuaW9uRGVmaW5pdGlv bigpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTENCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDQxMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyRm9ybVNldERlZmluaXRp b24oKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNz IFByYWdtYVBhY2tTaG93RGVmQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV9wcmFnbWFQYWNrU2hvd0RlZg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFByYWdtYVBhY2tTaG93RGVm IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFByYWdtYVBh Y2tTaG93RGVmKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgcHJhZ21hUGFja1Nob3dEZWYo c2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5QcmFnbWFQYWNrU2hvd0RlZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIsIHNlbGYuUlVMRV9w cmFnbWFQYWNrU2hvd0RlZikNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDQxNA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRfXzApDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0K PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg Y2xhc3MgUHJhZ21hUGFja1N0YWNrRGVmQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFy c2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwg aSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf cHJhZ21hUGFja1N0YWNrRGVmDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0UHJhZ21hUGFja1N0YWNrRGVmIiApOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFByYWdtYVBhY2tTdGFja0RlZihzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIHByYWdtYVBhY2tTdGFja0RlZihzZWxmKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tTdGFj a0RlZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDQsIHNlbGYuUlVMRV9wcmFnbWFQYWNrU3RhY2tE ZWYpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAg ICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MTYNCj4gDQo+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIG5vdChf bGE9PVZmclN5bnRheFBhcnNlci5UX18xIG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLlRfXzIpOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuY29uc3VtZSgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQxOQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMixzZWxm Ll9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA0MTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA0MTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNDIzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g DQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQyMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDQyMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgUHJhZ21hUGFja051bWJlckNvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5n U3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcHJhZ21hUGFja051bWJlcg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFByYWdtYVBhY2tOdW1iZXIiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0UHJhZ21hUGFja051bWJlcihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHBy YWdtYVBhY2tOdW1iZXIoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrTnVtYmVyQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs DQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg Niwgc2VsZi5SVUxFX3ByYWdtYVBhY2tOdW1iZXIpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA0MjYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk51bWJlcjoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDQyNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyUHJhZ21hUGFja0Rl ZmluaXRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4o c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBh cmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHBy YWdtYVBhY2tTaG93RGVmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tTaG93RGVmQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHByYWdtYVBhY2tT dGFja0RlZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrU3RhY2tEZWZDb250ZXh0LDAp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgcHJhZ21hUGFja051bWJlcihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5QcmFnbWFQYWNrTnVtYmVyQ29udGV4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyUHJhZ21hUGFja0RlZmlu aXRpb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJQcmFnbWFQYWNrRGVmaW5pdGlvbiIgKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJQcmFnbWFQYWNrRGVmaW5pdGlvbihzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIHZmclByYWdtYVBhY2tEZWZpbml0aW9uKHNlbGYpOg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyUHJhZ21hUGFj a0RlZmluaXRpb25Db250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA4LCBzZWxmLlJVTEVfdmZyUHJhZ21h UGFja0RlZmluaXRpb24pDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA0MjgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX18zKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MjkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX180KQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0MzANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQz NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5w dXQsNSxzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MzENCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5wcmFnbWFQYWNrU2hvd0RlZigpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgZWxp ZiBsYV8gPT0gMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQzMg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnByYWdtYVBhY2tTdGFja0RlZigpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMzoNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDQzMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnByYWdtYVBhY2tO dW1iZXIoKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0MzYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzIFZmckRhdGFTdHJ1Y3REZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5OMSA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTjIgPSBOb25l ICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJ1Y3Qoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cnVj dCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuQnJhY2Uoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5C cmFjZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJEYXRhU3RydWN0RmllbGRz KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckRhdGFTdHJ1Y3RGaWVsZHNDb250ZXh0LDApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VCcmFjZShzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VC cmFjZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBUeXBlRGVmKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5U eXBlRGVmLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE5vbk52RGF0YU1hcChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTm9uTnZEYXRhTWFwLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lk ZW50aWZpZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJEYXRhU3RydWN0RGVmaW5pdGlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckRhdGFTdHJ1Y3REZWZpbml0aW9uIiAp Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckRhdGFTdHJ1 Y3REZWZpbml0aW9uKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyRGF0YVN0cnVjdERl ZmluaXRpb24oc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJEYXRhU3RydWN0RGVmaW5pdGlvbkNvbnRleHQoc2VsZiwNCj4gc2VsZi5f Y3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDEwLCBzZWxmLlJVTEVfdmZyRGF0YVN0cnVjdERlZmluaXRpb24pDQo+IA0KPiArICAgICAgICBz ZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA0MzkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlR5cGVEZWY6DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0MzgNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVHlwZURlZikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDQxDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RydWN0KQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA0NDMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4g KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk5vbk52RGF0YU1hcDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ0Mg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ob25OdkRhdGFNYXApDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ0Ng0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQ YXJzZXIuU3RyaW5nSWRlbnRpZmllcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDQ0NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OMSA9IHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ0OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gNDQ5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJEYXRhU3RydWN0RmllbGRz KEZhbHNlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NTANCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NTINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXI6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NTENCj4gDQo+ ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTjIgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA0NTQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgVmZyRGF0YVVuaW9uRGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuTjEgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lk4yID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVW5pb24oc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlVuaW9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5CcmFjZShzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuT3BlbkJyYWNlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckRhdGFTdHJ1 Y3RGaWVsZHMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVN0cnVjdEZpZWxkc0NvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNlKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5DbG9zZUJyYWNlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFR5cGVEZWYo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlR5cGVEZWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTm9uTnZEYXRh TWFwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5Ob25OdkRhdGFNYXAsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg U3RyaW5nSWRlbnRpZmllcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmckRhdGFVbmlvbkRlZmluaXRpb24NCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJEYXRhVW5pb25EZWZpbml0 aW9uIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckRh dGFVbmlvbkRlZmluaXRpb24oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJEYXRhVW5p b25EZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyRGF0YVVuaW9uRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwNCj4gc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDEyLCBzZWxmLlJVTEVfdmZyRGF0YVVuaW9uRGVmaW5pdGlvbikNCj4gDQo+ICsgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDQ1Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuVHlwZURlZjoNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ1Ng0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UeXBlRGVmKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NTkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VbmlvbikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDYxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5j KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5Ob25OdkRhdGFNYXA6DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjANCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTm9uTnZEYXRhTWFwKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjQNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXI6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA0NjMNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTjEgPSBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjYNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2UpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDQ2Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyRGF0YVN0cnVjdEZpZWxk cyhUcnVlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjgNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NzANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXI6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NjkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTjIgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA0NzINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgVmZyRGF0YVN0cnVjdEZpZWxkc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBG aWVsZEluVW5pb249Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDY0KHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFT dHJ1Y3RGaWVsZDY0Q29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5EYXRhU3RydWN0RmllbGQ2NENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBkYXRhU3RydWN0RmllbGQzMihzZWxmLCBpOmludD1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5EYXRhU3Ry dWN0RmllbGQzMkNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuRGF0YVN0cnVjdEZpZWxkMzJDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxkMTYoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEZpZWxkMTZDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLkRhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDgoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZp ZWxkOENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu RGF0YVN0cnVjdEZpZWxkOENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBkYXRhU3RydWN0RmllbGRCb29sKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVs ZEJvb2xDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LkRhdGFTdHJ1Y3RGaWVsZEJvb2xDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxkU3RyaW5nKHNlbGYsIGk6aW50PU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1 Y3RGaWVsZFN0cmluZ0NvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkU3RyaW5nQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZERhdGUoc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIu RGF0YVN0cnVjdEZpZWxkRGF0ZUNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkRGF0ZUNvbnRleHQsaSkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBkYXRhU3RydWN0RmllbGRUaW1lKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFy c2VyLkRhdGFTdHJ1Y3RGaWVsZFRpbWVDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFRpbWVDb250ZXh0LGkpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZGF0YVN0cnVjdEZpZWxkUmVmKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4 UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFJlZkNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkUmVmQ29udGV4dCxpKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFVzZXIoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50 YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVXNlckNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVXNlckNvbnRleHQsaSkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBkYXRhU3RydWN0Qml0RmllbGQ2NChz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZm clN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ2NENvbnRleHQpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkNjRDb250ZXh0 LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZGF0YVN0cnVjdEJpdEZp ZWxkMzIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkMzJDb250ZXh0KQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDMy Q29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGRhdGFTdHJ1 Y3RCaXRGaWVsZDE2KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDE2Q29udGV4dCkN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0 RmllbGQxNkNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBk YXRhU3RydWN0Qml0RmllbGQ4KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDhDb250 ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1 Y3RCaXRGaWVsZDhDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV92ZnJEYXRhU3RydWN0RmllbGRzDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRGF0YVN0cnVjdEZpZWxkcyIg KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJEYXRhU3Ry dWN0RmllbGRzKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyRGF0YVN0cnVjdEZpZWxk cyhzZWxmLCBGaWVsZEluVW5pb24pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyRGF0YVN0cnVjdEZpZWxkc0NvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LA0KPiBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMTQsIHNlbGYuUlVMRV92ZnJEYXRhU3RydWN0RmllbGRzKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDkwDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gODApKSAmIH4w eDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDgwKSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBh cnNlci5Cb29sZWFuIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVWludDY0IC0gODAp KSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuVWludDMyIC0gODApKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuVWludDE2IC0gODApKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuVWlu dDggLSA4MCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5FRklfU1RSSU5HX0lEIC0gODApKSB8 DQo+ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFIC0gODApKSB8ICgxIDw8DQo+ IChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuRUZJX0hJSV9SRUYgLQ0KPiA4MCkpKSkgIT0gMCkgb3IgX2xhPT1WZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDQ4OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGlj dChzZWxmLl9pbnB1dCwxNCxzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIGxh XyA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3NA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0RmllbGQ2NChGaWVsZEluVW5p b24pDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgICAgIGVsaWYgbGFfID09IDI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDc1DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1 Y3RGaWVsZDMyKEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gMzoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0NzYNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuZGF0YVN0cnVjdEZpZWxkMTYoRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlm IGxhXyA9PSA0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ3Nw0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhU3RydWN0RmllbGQ4KEZpZWxkSW5V bmlvbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICAgICAgZWxpZiBsYV8gPT0gNToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA0NzgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0 cnVjdEZpZWxkQm9vbChGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBw YXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsaWYgbGFfID09IDY6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDc5DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RGaWVsZFN0cmluZyhGaWVsZEluVW5pb24pDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg ICAgIGVsaWYgbGFfID09IDc6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNDgwDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1Y3RGaWVsZERh dGUoRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSA4Og0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ4MQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5kYXRhU3RydWN0RmllbGRUaW1lKEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxpZiBsYV8g PT0gOToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0ODINCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEZpZWxkUmVmKEZpZWxkSW5Vbmlv bikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgICAgICAgICAgZWxpZiBsYV8gPT0gMTA6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNDgzDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmRhdGFTdHJ1 Y3RGaWVsZFVzZXIoRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSAxMToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0ODQNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEJpdEZpZWxkNjQoRmllbGRJblVuaW9uKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAg ICBlbGlmIGxhXyA9PSAxMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA0ODUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEJpdEZpZWxk MzIoRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlmIGxhXyA9PSAxMzoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0ODYNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuZGF0YVN0cnVjdEJpdEZpZWxkMTYoRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlmIGxh XyA9PSAxNDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0ODcNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YVN0cnVjdEJpdEZpZWxkOChGaWVsZElu VW5pb24pDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0OTINCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRGF0YVN0cnVjdEZpZWxkNjRDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5p b24gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBVaW50NjQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlm aWVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P cGVuQnJhY2tldCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX2RhdGFTdHJ1Y3RGaWVsZDY0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkNjQiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEZpZWxkNjQoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBkYXRhU3RydWN0RmllbGQ2NChzZWxmLCBGaWVsZEluVW5p b24pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu RGF0YVN0cnVjdEZpZWxkNjRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwg RmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE2 LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkNjQpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA0OTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5VaW50NjQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ5NA0KPiANCj4gKyAg ICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA0OTgNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNDk1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5CcmFja2V0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNDk2 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDQ5Nw0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwMA0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBEYXRhU3RydWN0 RmllbGQzMkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+IA0KPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25l ICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5V bmlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFVpbnQzMihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDMyLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9u LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlbkJy YWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENs b3NlQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkMzINCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0RmllbGQzMiIg KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0 RmllbGQzMihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZDMyKHNl bGYsIEZpZWxkSW5Vbmlvbik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQzMkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMTgsIHNlbGYuUlVMRV9kYXRhU3RydWN0RmllbGQzMikNCj4gDQo+ICsgICAg ICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDUwMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlVpbnQzMikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NTAzDQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDUwNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA1MDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA1MDUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTA2 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl QnJhY2tldCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTA5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzIERhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1O b25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVu aW9uID0gRmllbGRJblVuaW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDE2KHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5VaW50MTYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRl bnRpZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0RmllbGQxNg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFT dHJ1Y3RGaWVsZDE2IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdERhdGFTdHJ1Y3RGaWVsZDE2KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgZGF0YVN0 cnVjdEZpZWxkMTYoc2VsZiwgRmllbGRJblVuaW9uKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dChzZWxm LCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZDE2 KQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAg ICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTExDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDE2KQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA1MTINCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNTE2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g DQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUxMw0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUxNA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA1MTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA1MTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25F eGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0g cmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYs IHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0 UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgY2xhc3MgRGF0YVN0cnVjdEZpZWxkOENvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBG aWVsZEluVW5pb249Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIFVpbnQ4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5VaW50OCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBT ZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVs ZDgNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXREYXRhU3RydWN0RmllbGQ4IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVsZDgoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBkYXRhU3RydWN0RmllbGQ4KHNlbGYsIEZpZWxkSW5Vbmlvbik6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQ4Q29udGV4 dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gDQo+ICsg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMiwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RG aWVsZDgpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiAr ICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MjANCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50OCkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNTIxDQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDUyNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MjINCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MjMNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNTI0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNTI3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZEJvb2xDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmlu dD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25l DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBCb29sZWFuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Cb29sZWFuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFj a2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xv c2VCcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0 YVN0cnVjdEZpZWxkQm9vbA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVsZEJvb2wiICk6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEZpZWxkQm9vbChzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZEJvb2woc2VsZiwgRmllbGRJblVu aW9uKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LkRhdGFTdHJ1Y3RGaWVsZEJvb2xDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0 ZSwgRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDI0LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEZpZWxkQm9vbCkNCj4gDQo+ICsgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDUyOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkJvb2xlYW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzMA0KPiAN Cj4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1MzQNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9s YT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNTMxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTMyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzMw0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUzNg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikN Cj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmlu YWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAg IHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBEYXRh U3RydWN0RmllbGRTdHJpbmdDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUp Og0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24g PSBGaWVsZEluVW5pb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFRklfU1RSSU5HX0lE KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5FRklfU1RSSU5HX0lELCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNl bWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxk U3RyaW5nDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkU3RyaW5nIiApOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFTdHJ1Y3RGaWVsZFN0cmluZyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIGRhdGFTdHJ1Y3RGaWVsZFN0cmluZyhzZWxmLCBGaWVsZEluVW5pb24p Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0 YVN0cnVjdEZpZWxkU3RyaW5nQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUs IEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAy Niwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZFN0cmluZykNCj4gDQo+ICsgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDUzOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkVGSV9TVFJJTkdfSUQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDUz OQ0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1 NDMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAg IGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNTQwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNTQxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU0Mg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJy YWNrZXQpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDU0NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFz cyBEYXRhU3RydWN0RmllbGREYXRlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1O b25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRmllbGRJblVu aW9uID0gRmllbGRJblVuaW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRUZJX0hJSV9E QVRFKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5FRklfSElJX0RBVEUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg U2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0Rmll bGREYXRlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0RGF0YVN0cnVjdEZpZWxkRGF0ZSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0RmllbGREYXRlKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgZGF0YVN0cnVjdEZpZWxkRGF0ZShzZWxmLCBGaWVsZEluVW5pb24pOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEZpZWxkRGF0ZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBGaWVsZElu VW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjgsIHNlbGYu UlVMRV9kYXRhU3RydWN0RmllbGREYXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMg VG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNTQ3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJ X0hJSV9EQVRFKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NDgNCj4gDQo+ICsg ICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5n SWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTUyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDU0OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1 MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTENCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTQNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0K PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRGF0YVN0cnVj dEZpZWxkVGltZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBO b25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxk SW5Vbmlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVGSV9ISUlfVElNRShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu RUZJX0hJSV9USU1FLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lk ZW50aWZpZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgT3BlbkJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIENsb3NlQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZGF0YVN0cnVjdEZpZWxkVGltZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERh dGFTdHJ1Y3RGaWVsZFRpbWUiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0RGF0YVN0cnVjdEZpZWxkVGltZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IGRhdGFTdHJ1Y3RGaWVsZFRpbWUoc2VsZiwgRmllbGRJblVuaW9uKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFRpbWVD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwgRmllbGRJblVuaW9uKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMwLCBzZWxmLlJVTEVfZGF0YVN0 cnVjdEZpZWxkVGltZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUN Cj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU1Ng0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElNRSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTU3DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU2MQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJz ZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTgN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJy YWNrZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NTkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTYwDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTYzDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZFJlZkNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5pb249Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxk SW5VbmlvbiA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4N Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxkSW5Vbmlvbg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVGSV9ISUlfUkVGKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRiwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv biwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5C cmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBD bG9zZUJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVsZFJlZg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGFTdHJ1Y3RGaWVsZFJl ZiIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3Ry dWN0RmllbGRSZWYoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBkYXRhU3RydWN0RmllbGRS ZWYoc2VsZiwgRmllbGRJblVuaW9uKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFJlZkNvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LA0KPiBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMzIsIHNlbGYuUlVMRV9kYXRhU3RydWN0RmllbGRSZWYpDQo+IA0K PiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gNTY2DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDU3MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0K PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjcNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NjgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gNTY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNTcyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RGaWVsZFVzZXJDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwg RmllbGRJblVuaW9uPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5UID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5p b24gPSBGaWVsZEluVW5pb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24o c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJ ZGVudGlmaWVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdJZGVudGlmaWVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5C cmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBD bG9zZUJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RGaWVsZFVzZXINCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0RmllbGRV c2VyIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERhdGFT dHJ1Y3RGaWVsZFVzZXIoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBkYXRhU3RydWN0Rmll bGRVc2VyKHNlbGYsIEZpZWxkSW5Vbmlvbik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGRVc2VyQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEZpZWxkSW5VbmlvbikNCj4gDQo+ICsgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNCwgc2VsZi5SVUxFX2RhdGFTdHJ1Y3RGaWVsZFVzZXIp DQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAg ICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NzQNCj4gDQo+ICsgICAgICAgICAg ICBsb2NhbGN0eC5UID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll cikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTc1DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZp ZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU3OQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQ YXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1 NzYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl bkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1NzcNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTc4DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTgxDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RCaXRGaWVs ZDY0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEZpZWxkSW5Vbmlvbj1Ob25lKToNCj4gDQo+ICsgICAg ICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu RmllbGRJblVuaW9uID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRCA9IE5vbmUgIyBU b2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuRmllbGRJblVuaW9uID0gRmllbGRJblVuaW9uDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgQ29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIFVpbnQ2NChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDY0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQ2NA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dERhdGFTdHJ1Y3RCaXRGaWVsZDY0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdERhdGFTdHJ1Y3RCaXRGaWVsZDY0KHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgZGF0YVN0cnVjdEJpdEZpZWxkNjQoc2VsZiwgRmllbGRJblVuaW9uKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RCaXRG aWVsZDY0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEZpZWxkSW5Vbmlv bikNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNiwgc2VsZi5SVUxF X2RhdGFTdHJ1Y3RCaXRGaWVsZDY0KQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9r ZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NTgzDQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlVpbnQ2NCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNTg1DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNTg0DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODcNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db2xvbikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNTg4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1ODkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+ IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiAr ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFs bHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRGF0YVN0 cnVjdEJpdEZpZWxkMzJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRmllbGRJblVuaW9uPU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5E ID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2Vu DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBGaWVsZEluVW5pb24NCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29sb24sIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgVWludDMyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50MzIsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll ciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2RhdGFTdHJ1Y3RC aXRGaWVsZDMyDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMzIiICk6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMzIoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBkYXRhU3RydWN0Qml0RmllbGQzMihzZWxmLCBGaWVsZEluVW5pb24p Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRGF0 YVN0cnVjdEJpdEZpZWxkMzJDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwg RmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM4 LCBzZWxmLlJVTEVfZGF0YVN0cnVjdEJpdEZpZWxkMzIpDQo+IA0KPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA1OTENCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5EID0gc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVWludDMyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA1OTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAg ICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXI6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1OTINCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9j YWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDU5NQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbG9uKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA1OTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDU5Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyBy ZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAg ICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBj bGFzcyBEYXRhU3RydWN0Qml0RmllbGQxNkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBGaWVsZEluVW5p b249Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IE5vbmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkQgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBO b25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZpZWxkSW5VbmlvbiA9IEZpZWxk SW5Vbmlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbG9uKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db2xvbiwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVaW50MTYoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQxNiwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf ZGF0YVN0cnVjdEJpdEZpZWxkMTYNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXREYXRhU3RydWN0Qml0RmllbGQxNiIgKToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0Qml0RmllbGQxNihz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGRhdGFTdHJ1Y3RCaXRGaWVsZDE2KHNlbGYsIEZp ZWxkSW5Vbmlvbik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQxNkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBz ZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgNDAsIHNlbGYuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQxNikNCj4gDQo+ICsgICAg ICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDU5OQ0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LkQg PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MTYpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDYwMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0K PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcjoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYwMA0KPiANCj4gKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNjAzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29s b24pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYwNA0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjA1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGNsYXNzIERhdGFTdHJ1Y3RCaXRGaWVsZDhDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwg RmllbGRJblVuaW9uPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5pb24gPSBOb25lDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5EID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GaWVsZEluVW5p b24gPSBGaWVsZEluVW5pb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb2xvbihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDgoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVp bnQ4LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQ4DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkOCIgKToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXREYXRhU3RydWN0Qml0Rmll bGQ4KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgZGF0YVN0cnVjdEJpdEZpZWxkOChzZWxm LCBGaWVsZEluVW5pb24pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZpZWxkOENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiBzZWxmLnN0YXRlLCBGaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgNDIsIHNlbGYuUlVMRV9kYXRhU3RydWN0Qml0RmllbGQ4KQ0KPiANCj4gKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjA3DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHgu RCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ4KQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA2MDkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiAN Cj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXI6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MDgNCj4gDQo+ICsgICAgICAg ICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lk ZW50aWZpZXIpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDYxMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bG9uKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MTINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDYxMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBjbGFzcyBWZnJGb3JtU2V0RGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfRk9STV9TRVRfT1ApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRm9ybVNldChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybVNldCwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VdWlkLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1 aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVGl0bGUoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRpdGxlLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgSGVscChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuSGVscCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2 ZnJGb3JtU2V0TGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJGb3JtU2V0TGlzdENvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRGb3JtU2V0KHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5FbmRGb3JtU2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsYXNzR3Vp ZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ2xhc3NHdWlkLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGNsYXNz Z3VpZERlZmluaXRpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQ2xhc3NndWlkRGVmaW5pdGlvbkNv bnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbGFzcyhzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ2xhc3MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgY2xhc3NEZWZpbml0aW9u KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLkNsYXNzRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdWJjbGFzcyhzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3MsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgc3ViY2xhc3NEZWZpbml0aW9uKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlN1YmNsYXNzRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckZvcm1TZXREZWZpbml0aW9uDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 VmZyRm9ybVNldERlZmluaXRpb24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyRm9ybVNldERlZmluaXRpb24oc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiB2ZnJGb3JtU2V0RGVmaW5pdGlvbihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXREZWZpbml0aW9uQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgNDQsIHNlbGYuUlVMRV92ZnJGb3JtU2V0RGVmaW5pdGlvbikNCj4gDQo+ ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1TZXQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDYxNg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlV1aWQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYxNw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDYxOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRp b24oKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MTkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjIwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVGl0bGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYyMQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYyMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA2MjMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYyNA0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjI1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNjI2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYyNw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkhlbHApDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDYyOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDYyOQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2MzANCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDYzMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjMyDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjMzDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDYzOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ2xhc3NHdWlkOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjM0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsYXNzR3VpZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDYzNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjM2 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NndWlkRGVmaW5pdGlvbihsb2NhbGN0 eC5Ob2RlKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjM3DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NDYNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLkNsYXNzOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NjQxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNs YXNzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjQyDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NDMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5jbGFzc0RlZmluaXRpb24oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NjQ0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2 NTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAg IGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNjQ4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN1YmNsYXNzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNjQ5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NTANCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdWJjbGFzc0RlZmluaXRpb24oKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNjUxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2NTUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmckZvcm1T ZXRMaXN0KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1 Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZEZvcm1T ZXQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY1Nw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBDbGFzc2d1aWREZWZpbml0aW9u Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g aW52b2tpbmdTdGF0ZTppbnQ9LTEsIE5vZGU9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25l DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5HdWlkTGlzdCA9IFtdDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5Ob2RlID0gTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGd1aWREZWZp bml0aW9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dHMoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCkNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsaSkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP cikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfY2xhc3NndWlkRGVmaW5pdGlvbg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdENsYXNz Z3VpZERlZmluaXRpb24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2xhc3NndWlkRGVmaW5pdGlvbihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGNs YXNzZ3VpZERlZmluaXRpb24oc2VsZiwgTm9kZSk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5DbGFzc2d1aWREZWZpbml0aW9uQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIE5vZGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgNDYsIHNlbGYuUlVMRV9jbGFzc2d1aWREZWZpbml0aW9uKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjU5DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5ndWlkRGVmaW5pdGlvbigpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY2Mg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQs MzMsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjYwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDY2MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmd1aWREZWZp bml0aW9uKCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNjY2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxm Ll9pbnB1dCwzNCxzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NjQNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNjY1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu Z3VpZERlZmluaXRpb24oKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA2NzANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4g KyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY2OA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA2NjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVm aW5pdGlvbigpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgQ2xhc3NEZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9HVUlEX09QKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZhbGlkQ2xhc3NOYW1lcyhzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5W YWxpZENsYXNzTmFtZXNDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZhbGlkQ2xhc3NOYW1lc0NvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfY2xhc3NEZWZpbml0aW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0Q2xhc3NEZWZpbml0aW9uIiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENsYXNzRGVmaW5pdGlvbihzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIGNsYXNzRGVmaW5pdGlvbihzZWxmKToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNsYXNzRGVmaW5pdGlvbkNv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDQ4LCBzZWxmLlJVTEVfY2xhc3NEZWZpbml0aW9uKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjcyDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi52YWxpZENsYXNzTmFtZXMoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2NzcN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdo aWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDY3Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA2NzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52YWxpZENsYXNzTmFtZXMoKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjc5DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZhbGlkQ2xhc3NOYW1lc0NvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3Rh dGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuQ2xhc3NOYW1lID0gMA0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIENsYXNzTm9uRGV2aWNlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbGFzc05vbkRldmljZSwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbGFzc0Rpc2tEZXZpY2Uoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsYXNzRGlza0Rl dmljZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbGFzc1ZpZGVvRGV2aWNlKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5DbGFzc1ZpZGVvRGV2aWNlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENs YXNzTmV0d29ya0RldmljZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3NOZXR3b3JrRGV2aWNlLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIENsYXNzSW5wdXREZXZpY2Uoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsYXNzSW5wdXREZXZp Y2UsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xhc3NPbkJvYXJkRGV2aWNlKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5DbGFzc09uQm9hcmREZXZpY2UsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Q2xhc3NPdGhlckRldmljZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xhc3NPdGhlckRldmljZSwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZhbGlkQ2xhc3NOYW1lcw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZhbGlkQ2xhc3NOYW1l cyIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWYWxpZENs YXNzTmFtZXMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2YWxpZENsYXNzTmFtZXMoc2Vs Zik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W YWxpZENsYXNzTmFtZXNDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4g DQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA1MCwgc2VsZi5SVUxFX3ZhbGlk Q2xhc3NOYW1lcykNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4g DQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY4MA0KPiANCj4g KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAg aWYgbm90KCgoKChfbGEgLSAxNzApKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE3 MCkpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuQ2xhc3NOb25EZXZpY2UgLSAxNzApKSB8 ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuQ2xhc3NEaXNrRGV2aWNlIC0gMTcwKSkgfCAoMSA8 PA0KPiAoVmZyU3ludGF4UGFyc2VyLkNsYXNzVmlkZW9EZXZpY2UgLSAxNzApKSB8ICgxIDw8DQo+ IChWZnJTeW50YXhQYXJzZXIuQ2xhc3NOZXR3b3JrRGV2aWNlIC0gMTcwKSkgfCAoMSA8PA0KPiAo VmZyU3ludGF4UGFyc2VyLkNsYXNzSW5wdXREZXZpY2UgLSAxNzApKSB8ICgxIDw8DQo+IChWZnJT eW50YXhQYXJzZXIuQ2xhc3NPbkJvYXJkRGV2aWNlIC0gMTcwKSkgfCAoMSA8PA0KPiAoVmZyU3lu dGF4UGFyc2VyLkNsYXNzT3RoZXJEZXZpY2UgLSAxNzApKSkpICE9IDApIG9yDQo+IF9sYT09VmZy U3ludGF4UGFyc2VyLk51bWJlcik6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcklubGluZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBTdWJjbGFzc0RlZmluaXRpb25Db250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0dV SURfT1ApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3ViY2xhc3NTZXR1cEFwcGxpY2F0 aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TdWJjbGFzc1NldHVwQXBwbGljYXRpb24sIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgU3ViY2xhc3NHZW5lcmFsQXBwbGljYXRpb24oc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN1YmNsYXNzR2Vu ZXJhbEFwcGxpY2F0aW9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN1YmNsYXNz RnJvbnRQYWdlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdWJjbGFzc0Zyb250UGFnZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBTdWJjbGFzc1NpbmdsZVVzZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NTaW5nbGVVc2UsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zdWJjbGFzc0RlZmluaXRpb24N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRTdWJjbGFzc0RlZmluaXRpb24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0U3ViY2xhc3NEZWZpbml0aW9uKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgc3ViY2xhc3NEZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NEZWZpbml0aW9uQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgNTIsIHNlbGYuUlVMRV9zdWJjbGFzc0RlZmluaXRpb24pDQo+IA0KPiArICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2ODINCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gMTc3KSkgJiB+ MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSAxNzcpKSAmICgoMSA8PA0KPiAoVmZyU3ludGF4 UGFyc2VyLlN1YmNsYXNzU2V0dXBBcHBsaWNhdGlvbiAtIDE3NykpIHwgKDEgPDwNCj4gKFZmclN5 bnRheFBhcnNlci5TdWJjbGFzc0dlbmVyYWxBcHBsaWNhdGlvbiAtIDE3NykpIHwgKDEgPDwNCj4g KFZmclN5bnRheFBhcnNlci5TdWJjbGFzc0Zyb250UGFnZSAtIDE3NykpIHwgKDEgPDwNCj4gKFZm clN5bnRheFBhcnNlci5TdWJjbGFzc1NpbmdsZVVzZSAtIDE3NykpKSkgIT0gMCkgb3INCj4gX2xh PT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiANCj4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmckZvcm1TZXRMaXN0Q29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEsIE5vZGU9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIHZmckZvcm1TZXQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldENvbnRleHQpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRm9ybVNldENvbnRleHQsaSkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckZvcm1T ZXRMaXN0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6 UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRv ciwgInZpc2l0VmZyRm9ybVNldExpc3QiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyRm9ybVNldExpc3Qoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiB2ZnJGb3JtU2V0TGlzdChzZWxmLCBOb2RlKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxv Y2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRMaXN0Q29udGV4dChzZWxmLCBzZWxm Ll9jdHgsDQo+IHNlbGYuc3RhdGUsIE5vZGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgNTQsIHNlbGYuUlVMRV92ZnJGb3JtU2V0TGlzdCkNCj4gDQo+ICsgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDY4Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuRm9ybSBvciBf bGE9PVZmclN5bnRheFBhcnNlci5Gb3JtTWFwDQo+IG9yICgoKChfbGEgLSAxMDUpKSAmIH4weDNm KSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDEwNSkpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQYXJz ZXIuU3VwcHJlc3NJZiAtIDEwNSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYg LSAxMDUpKQ0KPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW1hZ2UgLSAxMDUpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdFN0b3JlDQo+IC0gMTA1KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLlZhcnN0b3JlIC0gMTA1KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkVm aXZhcnN0b3JlIC0gMTA1KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLk5hbWVWYWx1ZVZh clN0b3JlIC0gMTA1KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkd1aWRPcCAtIDEwNSkp KSkgIT0gMCk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2ODQNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJGb3JtU2V0KCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDY4OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBjbGFzcyBWZnJGb3JtU2V0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5O b2RlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckZvcm1EZWZpbml0aW9u KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1EZWZpbml0aW9uQ29udGV4dCwwKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckZvcm1NYXBEZWZpbml0aW9uKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmckZvcm1NYXBEZWZpbml0aW9uQ29udGV4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEltYWdlKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEltYWdlQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyQ29uDQo+IHRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaShz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaUNvbnRleHQNCj4gLDAp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50VmFyU3Rv cmVOYW1lVmFsdWUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVOYW1l VmFsdQ0KPiBlQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudERlZmF1bHRTdG9yZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnREZWZhdWx0U3RvcmVDb250ZQ0KPiB4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldEMNCj4gb250ZXh0LDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQNCj4gQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEV4dGVuc2lvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25Db250 ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyRm9ybVNldA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmckZvcm1TZXQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyRm9ybVNldChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IHZmckZvcm1TZXQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5WZnJGb3JtU2V0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNTYsIHNlbGYuUlVM RV92ZnJGb3JtU2V0KQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gNzAwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRm9ybV06DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi52ZnJGb3JtRGVmaW5pdGlvbigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRm9ybU1hcF06DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTENCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi52ZnJGb3JtTWFwRGVmaW5pdGlvbigpDQo+IA0KPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu SW1hZ2VdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjkyDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50SW1hZ2UoKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlZhcnN0b3JlXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY5 Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFZhclN0b3JlTGluZWFy KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FZml2YXJzdG9yZV06DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA2OTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRWYXJTdG9yZUVmaSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTmFtZVZhbHVlVmFy U3RvcmVdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNjk1DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUoKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9yZV06DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA2OTYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnREZWZhdWx0U3RvcmUoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZl06DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA2OTcNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0KCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5TdXBwcmVzc0lmXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDY5 OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN1cHByZXNzSWZGb3Jt U2V0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVs aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5HdWlkT3BdOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNjk5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50RXh0ZW5zaW9uKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0 RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlQ29udGV4dChQYXJz ZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0 ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBp bnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9ERUZBVUxU U1RPUkVfT1ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5TID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5BID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGVmYXVs dFN0b3JlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5EZWZhdWx0U3RvcmUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBQcm9tcHQoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlByb21wdCwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4s IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xv c2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlm aWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIs IGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQXR0cmlidXRlKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5BdHRyaWJ1 dGUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1l bnREZWZhdWx0U3RvcmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGVmYXVsdFN0b3Jl KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlKHNl bGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlQ29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYu c3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNTgsIHNlbGYu UlVMRV92ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA3MDINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5EZWZhdWx0U3RvcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDcwMw0KPiAN Cj4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MDQNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzA1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA3MDYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MDcNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzA4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA3MDkNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5TID0gc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MTANCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MTUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy LkNvbW1hOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzExDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzEyDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkF0dHJpYnV0ZSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDcxMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzE0DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkEgPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDcxNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhckNvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6 aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfVkFSU1RPUkVf T1ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5UTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuSUQgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxm LlNOID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVmFyc3RvcmUo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlZhcnN0b3JlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE5hbWUoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk5hbWUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBVdWlkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5VdWlkLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lk ZW50aWZpZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVWludDgo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlVpbnQ4LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFVpbnQxNihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuVWludDE2LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFVpbnQzMihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu VWludDMyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFVpbnQ2NChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWlu dDY0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVGSV9ISUlfREFURShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu RUZJX0hJSV9EQVRFLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVGSV9ISUlfVElN RShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRUZJX0hJSV9USU1FLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVG SV9ISUlfUkVGKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBWYXJJZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVmFySWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg TnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhcg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFZhclN0b3Jl TGluZWFyIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudFZhclN0b3JlTGluZWFyKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZy U3RhdGVtZW50VmFyU3RvcmVMaW5lYXIoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYXJTdG9yZUxpbmVhckNvbnRl eHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDYwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5l YXIpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAg ICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MTkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJzdG9yZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gNzM2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5n SWRlbnRpZmllcl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3MjANCj4g DQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguVE4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gNzIxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQ4XToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDcyMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5VaW50OCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDcyMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MTZdOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzI0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQxNikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDcyNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MzJdOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gNzI2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQzMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDcyNw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50NjRdOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzI4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDcyOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEVdOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzMwDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfREFURSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDczMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5F RklfSElJX1RJTUVdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzMyDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlf VElNRSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDczMw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5FRklfSElJX1JFRl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA3MzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRUZJX0hJSV9SRUYpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3 MzUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxm KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDINCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLlZhcklkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g NzM4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlZh cklkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzM5DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDANCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9j YWxjdHguSUQgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk5hbWUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDc0NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0Ng0KPiANCj4gKyAgICAgICAgICAg IGxvY2FsY3R4LlNOID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll cikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzQ3DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDc0OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlV1aWQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc0OQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZ3VpZERl ZmluaXRpb24oKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTENCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50 VmFyU3RvcmVFZmlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJU cmVlTm9kZShFRklfSUZSX1ZBUlNUT1JFX0VGSV9PUCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LlROID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JRCA9IE5vbmUgIyBU b2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuU04gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLlZOID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRWZpdmFyc3Rv cmUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVmaXZhcnN0b3JlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEF0 dHJpYnV0ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQXR0cmlidXRlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclZhclN0b3JlRWZpQXR0cihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJWYXJTdG9yZUVmaUF0dHJDb250 ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclZhclN0 b3JlRWZpQXR0ckNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFV1aWQoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu R3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgVWludDgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQ4LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIFVpbnQxNihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuVWludDE2LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IFVpbnQzMihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuVWludDMyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFVp bnQ2NChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuVWludDY0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVGSV9I SUlfREFURShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEVGSV9ISUlfVElNRShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIEVGSV9ISUlfUkVGKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBOYW1lKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OYW1lLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFZhclNpemUoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhclNpemUsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmLCBpOmludD1O b25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRp ZmllcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgaSkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBWYXJJZChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFySWQsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVy LCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50 VmFyU3RvcmVFZmkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaSIgKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaShzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlRWZpKHNlbGYpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50VmFyU3RvcmVFZmlDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkN Cj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA2Miwgc2VsZi5SVUxFX3Zm clN0YXRlbWVudFZhclN0b3JlRWZpKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9r ZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g NzUzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRWZpdmFy c3RvcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc3MA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRv a2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXJdOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gNzU0DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlROID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50 OF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTYNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDgpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVWlu dDE2XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc1OA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MTYpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NTkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu VWludDMyXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2MA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MzIpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjENCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuVWludDY0XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc2Mg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50NjQpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjMNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuRUZJX0hJSV9EQVRFXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDc2NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5F RklfSElJX0RBVEUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NjUNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FXToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDc2Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5FRklfSElJX1RJTUUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA3NjcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9SRUZdOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzY4DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfUkVGKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gNzY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9W aWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gNzc2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5WYXJJZDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDc3Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDc3Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzc0DQo+IA0K PiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LklEID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzc1DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3NzgNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5BdHRyaWJ1dGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc3OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDc4MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyVmFyU3RvcmVFZmlBdHRyKCkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzg1DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3I6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3ODENCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzgyDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYudmZyVmFyU3RvcmVFZmlBdHRyKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDc4Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzg4DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgwNA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVy cC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsNDUsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g Nzg5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5h bWUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTANCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc5MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2Nh bGN0eC5TTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTINCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSAyOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gNzkzDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5hbWUpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA3OTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDc5NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc5Ng0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTcNCj4gDQo+ICsgICAg ICAgICAgICAgICAgbG9jYWxjdHguVk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA3OTgNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDc5OQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDgwMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5WYXJTaXplKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODAxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDINCj4gDQo+ICsg ICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgwMw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA4MDYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5VdWlkKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDcNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MDgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmd1aWRE ZWZpbml0aW9uKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODA5DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclZhclN0b3Jl RWZpQXR0ckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQXR0ciA9IDANCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclZhclN0b3JlRWZpQXR0cg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclZh clN0b3JlRWZpQXR0ciIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJWYXJTdG9yZUVmaUF0dHIoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJW YXJTdG9yZUVmaUF0dHIoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJWYXJTdG9yZUVmaUF0dHJDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCA2NCwgc2VsZi5SVUxFX3ZmclZhclN0b3JlRWZpQXR0cikNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZUNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9J RlJfVkFSU1RPUkVfTkFNRV9WQUxVRV9PUCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNOID0g Tm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE5hbWVWYWx1ZVZhclN0b3JlKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OYW1l VmFsdWVWYXJTdG9yZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFV1aWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlV1aWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ3VpZERlZmluaXRpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRp b25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNv bG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3Ry aW5nSWRlbnRpZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBWYXJJZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVmFySWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgTmFtZShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuTmFtZSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTmFtZSwg aSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmludD1O b25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4p DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBpKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg TnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgaSkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUp Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCBpKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRW ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZShzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlKHNlbGYp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPQ0KPiBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4g c2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA2Niwg c2VsZi5SVUxFX3ZmclN0YXRlbWVudFZhclN0b3JlTmFtZVZhbHVlKQ0KPiANCj4gKyAgICAgICAg c2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODEzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTmFtZVZhbHVlVmFyU3RvcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDgxNA0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LlNOID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gODE1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyMA0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJT eW50YXhQYXJzZXIuVmFySWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4 MTYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFy SWQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MTcNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxOA0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2Nh bGN0eC5JRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgxOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gODI5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBUcnVlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODIyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk5hbWUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4MjMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyNA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgyNQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MjYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gODI3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4 MjgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MzENCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlm IG5vdCAoX2xhPT1WZnJTeW50YXhQYXJzZXIuTmFtZSk6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBicmVhaw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MzMN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VdWlkKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4MzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSA4MzUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODM2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXRD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBp bnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklf SUZSX0RJU0FCTEVfSUZfT1ApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGlzYWJsZUlm KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5EaXNhYmxlSWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3Rh dGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNz aW9uQ29udGV4dA0KPiAsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBT ZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckZvcm1TZXRMaXN0KHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRMaXN0Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0KHNlbGYp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxm LnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDY4LCBzZWxm LlJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCkNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDgzOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gODM5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNz aW9uKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODQwDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA4NDENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmckZvcm1T ZXRMaXN0KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0 Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NDMNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3VwcHJlc3NJZkZv cm1TZXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9k ZShFRklfSUZSX1NVUFBSRVNTX0lGX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN1 cHByZXNzSWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRFeHByZXNzaW9uQ29udGV4dA0KPiAsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckZvcm1TZXRM aXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRMaXN0Q29udGV4dCwwKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNz SWZGb3JtU2V0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZkZvcm1TZXQiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZkZv cm1TZXQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lm Rm9ybVNldChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0NCj4gVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZGb3JtU2V0Q29udGV4dChzZWxmLCBz ZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgNzAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldCkNCj4g DQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0NQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg0Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDg0Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWlj b2xvbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODQ4DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi52ZnJGb3JtU2V0TGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA4NDkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5FbmRJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODUwDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K PiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5h bGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIEd1aWRT dWJEZWZpbml0aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEd1aWQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lkd1aWQgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5HdWlkID0gR3VpZA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2d1aWRTdWJEZWZpbml0aW9uDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0R3VpZFN1 YkRlZmluaXRpb24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0R3VpZFN1YkRlZmluaXRpb24oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBndWlkU3Vi RGVmaW5pdGlvbihzZWxmLCBHdWlkKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLkd1aWRTdWJEZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsDQo+IHNlbGYuc3RhdGUsIEd1aWQpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgNzIsIHNlbGYuUlVMRV9ndWlkU3ViRGVmaW5pdGlvbikNCj4gDQo+ICsgICAgICAg IHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1Mg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gODUzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg1NA0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gODU1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDg1Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODU3DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDg1OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODU5DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gODYxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2Mg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gODYzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2NA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODY1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDg2Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToN Cj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsg ICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFz cyBHdWlkRGVmaW5pdGlvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9 IFZmclRyZWVOb2RlKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkd1aWQgPSBFRklfR1VJRCgp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlbkJyYWNlKHNlbGYsIGk6aW50PU5vbmUp Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2UpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgQ2xvc2VCcmFjZShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFjZSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ2xvc2VCcmFjZSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBndWlkU3Vi RGVmaW5pdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkU3ViRGVmaW5pdGlvbkNvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2d1aWRE ZWZpbml0aW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0 b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlz aXRvciwgInZpc2l0R3VpZERlZmluaXRpb24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0R3VpZERlZmluaXRpb24oc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgNzQsIHNlbGYuUlVMRV9ndWlkRGVmaW5pdGlvbikNCj4gDQo+ICsgICAgICAgIHRyeToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDg2OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gODY5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzANCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODcxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4NzIN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODczDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA4NzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODgwDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg dG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNlXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDg3NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5PcGVuQnJhY2UpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4 NzYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5ndWlkU3ViRGVmaW5pdGlvbihsb2NhbGN0 eC5HdWlkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODc3DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2UpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDg3OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmd1aWRTdWJEZWZpbml0 aW9uKGxvY2FsY3R4Lkd1aWQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFs dEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA4ODINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZUJyYWNlKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzIEdldFN0cmluZ0lkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TdHJpbmdJ ZCA9ICcnDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUlu ZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVM RV9nZXRTdHJpbmdJZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdEdldFN0cmluZ0lkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdEdldFN0cmluZ0lkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgZ2V0U3RyaW5nSWQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5HZXRTdHJpbmdJZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxm LnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDc2LCBzZWxm LlJVTEVfZ2V0U3RyaW5nSWQpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA4ODQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODg1DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA4ODYNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDg4Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgY2xhc3MgVmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgT3BPYmo9 Tm9uZSwgUVR5cGU9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9wT2JqID0gTm9uZQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuUVR5cGUgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcE9iaiA9 IE9wT2JqDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IFFUeXBlDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25CYXNlSW5mbyhzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJRdWVzdGlvbkJhc2VJbmZvQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRIZWFkZXJDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV92ZnJRdWVzdGlvbkhlYWRlcg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclF1ZXN0aW9uSGVhZGVyIiAp Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclF1ZXN0aW9u SGVhZGVyKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2Vs ZiwgT3BPYmosIFFUeXBlKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ IHNlbGYuc3RhdGUsIE9wT2JqLCBRVHlwZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCA3OCwgc2VsZi5SVUxFX3ZmclF1ZXN0aW9uSGVhZGVyKQ0KPiANCj4gKyAgICAg ICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gODg5DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi52ZnJRdWVzdGlvbkJhc2VJbmZvKE9wT2JqLCBRVHlwZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gODkwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRIZWFkZXIoT3BPYmopDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgY2xhc3MgVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBPcE9i aj1Ob25lLCBRVHlwZT1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBOb25lDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5RVHlwZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkJhc2VJ bmZvID0gRUZJX1ZBUlNUT1JFX0lORk8oKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUUlkID0g RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNoZWNrRmxh ZyA9IFRydWUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFOID0gTm9uZSAjIFRva2VuDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5JRCA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuT3BPYmogPSBPcE9iag0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBRVHlw ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE5hbWUoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5hbWUsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBWYXJJZChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuVmFySWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RvcmFnZVZh cklkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZENvbnRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBRdWVzdGlvbklkKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5RdWVzdGlv bklkLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVt YmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJRdWVzdGlvbkJhc2VJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNj ZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAg aWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyUXVlc3Rpb25CYXNlSW5mbyIgKToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJRdWVzdGlvbkJhc2VJbmZv KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyUXVlc3Rpb25CYXNlSW5mbyhzZWxmLCBP cE9iaiwgUVR5cGUpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBz ZWxmLnN0YXRlLCBPcE9iaiwgUVR5cGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgODAsIHNlbGYuUlVMRV92ZnJRdWVzdGlvbkJhc2VJbmZvKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gODk2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5OYW1lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gODkyDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5hbWUpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA4OTMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDg5NA0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5RTiA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA4OTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDkwMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuVmFySWQ6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA4OTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVmFySWQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA4OTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkwMA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0b3JhZ2VWYXJJZChsb2NhbGN0eC5CYXNlSW5m bywgbG9jYWxjdHguQ2hlY2tGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTAxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5MDkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAg ICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWQ6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA5MDUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25JZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDkwNg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTA3DQo+ IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LklEID0gc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTA4DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGNsYXNzIFZmclN0YXRlbWVudEhlYWRlckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBPcE9i aj1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5PcE9iaiA9IE9wT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUHJvbXB0KHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5Qcm9tcHQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlN0 cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgaSkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5O dW1iZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBp OmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgaSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgSGVscChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSGVscCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEhlYWRlcg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEhl YWRlciIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJT dGF0ZW1lbnRIZWFkZXIoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRI ZWFkZXIoc2VsZiwgT3BPYmopOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs DQo+IHNlbGYuc3RhdGUsIE9wT2JqKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDgyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SGVhZGVyKQ0KPiANCj4gKyAgICAgICAg dHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTExDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA5MTINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MTMNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTE0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5MTUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxNg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkxNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5MTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxw KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MTkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSA5MjANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTIxDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MjINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDkyMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgY2xhc3MgUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5RSEZsYWcgPSAwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PID0gTm9u ZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5MID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgUmVhZE9ubHlGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgSW50ZXJhY3RpdmVGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUmVzZXRSZXF1aXJlZEZsYWcoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlJlc2V0UmVxdWlyZWRGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFJlc3RT dHlsZUZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgUmVjb25uZWN0UmVxdWlyZWRGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3B0aW9uT25seUZsYWcoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9w dGlvbk9ubHlGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE5WQWNjZXNzRmxh ZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTlZBY2Nlc3NGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExh dGVDaGVja0ZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0ZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV9xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRRdWVzdGlvbmhl YWRlckZsYWdzRmllbGQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0UXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29u dGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgODQsIHNlbGYuUlVMRV9xdWVzdGlvbmhlYWRlckZsYWdzRmll bGQpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDkzMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAg ICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZ106DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuSW50ZXJhY3RpdmVGbGFnXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gOTI2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkludGVyYWN0aXZlRmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxh Z106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkyNw0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZykN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnXToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTI4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVj b25uZWN0UmVxdWlyZWRGbGFnXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g OTI5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJl Y29ubmVjdFJlcXVpcmVkRmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PcHRpb25Pbmx5Rmxh Z106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg NikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkzMA0KPiANCj4gKyAgICAg ICAgICAgICAgICBsb2NhbGN0eC5PID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3B0aW9u T25seUZsYWcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnXToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA3KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTMxDQo+IA0KPiArICAgICAgICAgICAgICAgIGxv Y2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OVkFjY2Vzc0ZsYWcpDQo+IA0K PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDkzMg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5MID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZykNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RvcmFnZVZhcklk Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g aW52b2tpbmdTdGF0ZTppbnQ9LTEsIEJhc2VJbmZvPU5vbmUsIENoZWNrRmxhZz1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuQmFzZUluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5DaGVja0Zs YWcgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5WYXJJZFN0ciA9ICcnDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5CYXNlSW5mbyA9IEJhc2VJbmZvDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5DaGVja0ZsYWcgPSBDaGVja0ZsYWcNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZm clN5bnRheFBhcnNlci5SVUxFX3ZmclN0b3JhZ2VWYXJJZA0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGNvcHlGcm9tKHNlbGYsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5jb3B5RnJvbShjdHgpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5CYXNlSW5mbyA9IGN0eC5CYXNlSW5mbw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu Q2hlY2tGbGFnID0gY3R4LkNoZWNrRmxhZw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuVmFySWRT dHIgPSBjdHguVmFySWRTdHINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg Y2xhc3MgVmZyU3RvcmFnZVZhcklkUnVsZTFDb250ZXh0KFZmclN0b3JhZ2VWYXJJZENvbnRleHQp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4 OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+IFZmclN5bnRheFBhcnNlci5WZnJT dG9yYWdlVmFySWRDb250ZXh0DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJzZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TTjEgPSBOb25lICMgVG9rZW4NCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkkgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmNvcHlGcm9tKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tl dChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuT3BlbkJyYWNrZXQsIDApDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5DbG9zZUJyYWNrZXQsIDApDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRp ZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1i ZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMSIgKToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMShz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgY2xhc3MgVmZyU3RvcmFnZVZhcklkUnVsZTJDb250ZXh0KFZmclN0b3JhZ2VWYXJJZENv bnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+IFZmclN5bnRheFBhcnNl ci5WZnJTdG9yYWdlVmFySWRDb250ZXh0DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2lu aXRfXyhwYXJzZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TTjIgPSBOb25lICMgVG9rZW4N Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0K PiANCj4gKyAgICAgICAgZGVmIERvdChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5Eb3QsIGkpDQo+IA0KPiArICAgICAgICBkZWYgYXJyYXlOYW1lKHNlbGYsIGk6aW50PU5vbmUp Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkFy cmF5TmFtZUNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuQXJyYXlOYW1lQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0b3JhZ2VWYXJJZFJ1bGUyIiAp Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0b3JhZ2VW YXJJZFJ1bGUyKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RvcmFnZVZhcklkKHNlbGYsIEJhc2VJ bmZvLCBDaGVja0ZsYWcpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNl bGYuc3RhdGUsIEJhc2VJbmZvLCBDaGVja0ZsYWcpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgODYsIHNlbGYuUlVMRV92ZnJTdG9yYWdlVmFySWQpDQo+IA0KPiArICAg ICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk0Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2lu dGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsNTQsc2VsZi5fY3R4KQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRSdWxlMUNvbnRleHQoc2VsZiwNCj4gbG9j YWxjdHgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDkzNQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBsb2NhbGN0eC5TTjEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTM2 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5C cmFja2V0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTM3DQo+IA0KPiAr ICAgICAgICAgICAgICAgIGxvY2FsY3R4LkkgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5O dW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzgNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg ZWxpZiBsYV8gPT0gMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyU3RvcmFnZVZhcklkUnVsZTJDb250ZXh0KHNlbGYsDQo+IGxvY2FsY3R4KQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5MzkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgbG9jYWxjdHguU04yID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRl bnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk0NA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuRG90Og0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDk0MA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDk0MQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcnJheU5hbWUo KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk0Ng0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyQ29uc3RhbnRWYWx1ZUZpZWxk Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5WYWx1ZSA9IEVGSV9JRlJfVFlQRV9W QUxVRSgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5WYWx1ZUxpc3QgPSBbXQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuTGlzdFR5cGUgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIs IGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTmVnYXRpdmUoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZl LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFRydWVTeW1ib2woc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRydWVT eW1ib2wsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRmFsc2VTeW1ib2woc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkZhbHNlU3ltYm9sLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9uZShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu T25lLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9uZXMoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9uZXMsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgWmVybyhzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuWmVybywgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb2xvbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNvbG9uLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNsYXNoKHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5T bGFzaCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2xhc2gsIGkpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBn dWlkRGVmaW5pdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU3RyaW5nVG9rZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVu KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQ YXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBP cGVuQnJhY2Uoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBDbG9zZUJyYWNlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEs IGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJDb25zdGFudFZh bHVlRmllbGQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJDb25zdGFudFZhbHVlRmllbGQiICk6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyQ29uc3RhbnRWYWx1ZUZpZWxkKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgdmZyQ29uc3RhbnRWYWx1ZUZpZWxkKHNlbGYpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyQ29uc3RhbnRWYWx1 ZUZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgODgsIHNlbGYuUlVMRV92ZnJDb25zdGFudFZh bHVlRmllbGQpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0K PiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5Mw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsNTcs c2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NTANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFy c2VyLk5lZ2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk0 OQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TmVnYXRpdmUpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5NTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gOTUzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRydWVTeW1ib2wpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSAzOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSA5NTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuRmFsc2VTeW1ib2wpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSA0Og0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA5NTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT25lKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gNToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gOTU2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk9uZXMpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSA2Og0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSA5NTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuWmVybykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDc6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDk1OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5NTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q29sb24pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NjANCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTYxDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbG9uKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gOTYyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDg6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDk2Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5NjQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2xhc2gpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NjUNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTY2DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNsYXNoKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gOTY3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDk6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDk2OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSA5NjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTcwDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3MQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NzINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5n dWlkRGVmaW5pdGlvbigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5NzMN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNv bG9uKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTc0DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTc1DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDk3Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSA5NzcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDEwOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEwKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gOTc5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gOTgwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4MQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5ODINCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgbGFf ID09IDExOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDExKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTgzDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFjZSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4NA0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA5ODkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFy c2VyLkNvbW1hOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk4NQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTg2DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gOTkxDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5OTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFjZSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgIGNsYXNzIFZmckltYWdlVGFnQ29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0K PiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9JTUFHRV9PUCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBJbWFnZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW1hZ2UsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckltYWdlVGFnDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZySW1hZ2VUYWci ICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZySW1hZ2VU YWcoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJJbWFnZVRhZyhzZWxmKToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckltYWdlVGFn Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOTAsIHNlbGYuUlVMRV92ZnJJbWFnZVRhZykNCj4gDQo+ ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDk5NQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkltYWdlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSA5OTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5OTcN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX182KQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSA5OTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDk5OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAwMA0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0K PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyTG9ja2Vk VGFnQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUo RUZJX0lGUl9MT0NLRURfT1ApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTG9ja2VkKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5Mb2NrZWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJMb2NrZWRUYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJMb2NrZWRUYWciICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyTG9ja2VkVGFnKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgdmZyTG9ja2VkVGFnKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyTG9ja2VkVGFnQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOTIs IHNlbGYuUlVMRV92ZnJMb2NrZWRUYWcpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMDAyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuTG9ja2VkKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRUYWdDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZy SW1hZ2VUYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0LDApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyTG9ja2VkVGFnKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmckxvY2tlZFRhZ0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXRUYWcNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1l bnRTdGF0VGFnIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dFZmclN0YXRlbWVudFN0YXRUYWcoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0 ZW1lbnRTdGF0VGFnKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDk0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RhdFRhZykNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAwNg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkltYWdlXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAw NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckltYWdlVGFnKCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5Mb2NrZWRdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDA1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyTG9ja2VkVGFnKCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiAr ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFs bHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3Rh dGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2RlDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdFRhZyhzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRTdGF0VGFnQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0VGFnQ29udGV4dCxpKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdA0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN0YXRUYWdM aXN0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0 YXRlbWVudFN0YXRUYWdMaXN0KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVt ZW50U3RhdFRhZ0xpc3Qoc2VsZiwgTm9kZSk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdENvbnRleHQoc2Vs ZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBOb2RlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDk2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RhdFRhZ0xpc3Qp DQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDA4DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdGF0VGFnKCkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTAxMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAu YWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDU5LHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAg ICAgICB3aGlsZSBfYWx0IT0yIGFuZCBfYWx0IT1BVE4uSU5WQUxJRF9BTFRfTlVNQkVSOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBpZiBfYWx0PT0xOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEwMDkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEwMTANCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50U3RhdFRhZygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDE1DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBfYWx0ID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxm Ll9pbnB1dCw1OSxzZWxmLl9jdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyRm9ybURlZmluaXRpb25Db250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRl OmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0ZPUk1fT1Ap DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRm9ybShzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybSwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGb3JtSWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1JZCwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5Db21tYSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBUaXRsZShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu VGl0bGUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0cmluZ1Rva2VuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFy ZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2Vt aWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv biwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRGb3JtKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRGb3Jt LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckZvcm0oc2VsZiwgaTppbnQ9Tm9u ZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIu VmZyRm9ybUNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyRm9ybUNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmckZvcm1EZWZpbml0aW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRm9ybURlZmluaXRpb24iICk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRm9ybURlZmluaXRp b24oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJGb3JtRGVmaW5pdGlvbihzZWxmKToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckZv cm1EZWZpbml0aW9uQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0K PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgOTgsIHNlbGYuUlVMRV92ZnJGb3Jt RGVmaW5pdGlvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4g DQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMTYNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDE3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRm9ybUlkKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMDE4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTAxOQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTAyMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDIxDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGl0bGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjINCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMDIzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjQNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwMjYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDI3DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDMxDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4w eDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDQ2KSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBh cnNlci5PbmVPZiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0IC0g NDYpKSB8DQo+ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5UZXh0IC0gNDYpKSB8ICgxDQo+IDw8IChWZnJTeW50YXhQYXJzZXIu RGF0ZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwN Cj4gKFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5MYWJlbCAtIDQ2KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSAt IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94IC0gNDYpKSB8DQo+ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuTnVtZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2Vy LkRlZmF1bHQgLSA0NikpDQo+IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkNCj4gfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLlN1cHByZXNzSWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5E aXNhYmxlSWYgLQ0KPiA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0Nikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Hb3RvIC0NCj4gNDYpKSkpICE9IDApIG9yICgoKChf bGEgLSAxMTApKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8 DQo+IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuUmVzdG9yZSAtDQo+IDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5T YXZlIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkJhbm5lciAtDQo+IDExMCkpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5JbWFnZSAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBh cnNlci5Mb2NrZWQNCj4gLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUnVsZSAtIDEx MCkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbiAtIDExMCkpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5BY3Rpb24gLSAxMTApKQ0KPiB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuR3VpZE9wIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk1vZGFsIC0NCj4g MTEwKSkpKSAhPSAwKSBvciBfbGE9PVZmclN5bnRheFBhcnNlci5SZWZyZXNoR3VpZDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMjgNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi52ZnJGb3JtKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEw MzMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwMzQNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRGb3JtKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDM1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGNsYXNzIFZmckZvcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW1hZ2Uo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW1hZ2VDb250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50TG9ja2VkKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudExvY2tlZENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRSdWxlcyhzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREZWZhdWx0KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudERlZmF1bHRDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRTdGF0Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVz dGlvbnNDb250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudENvbmRpdGlvbmFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dENvbmRpdGlvbmFsQ29udGV4dA0KPiAsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRMYWJlbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRMYWJlbENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2 ZnJTdGF0ZW1lbnRCYW5uZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50QmFubmVy Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudEludmFsaWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZENvbnRl eHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRF eHRlbnNpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXh0ZW5zaW9uQ29udGV4 dCwNCj4gMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRNb2RhbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRNb2RhbENvbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZWZyZXNo RXZlbnQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50Q29udA0K PiBleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24o c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3ZmckZvcm0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlz aXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2 aXNpdG9yLCAidmlzaXRWZnJGb3JtIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmckZvcm0oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJGb3Jt KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyRm9ybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEwMCwgc2VsZi5SVUxFX3ZmckZvcm0pDQo+ IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDUyDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW1hZ2VdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTAzNw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dEltYWdlKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Mb2NrZWRdOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTAzOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudExvY2tlZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUnVsZV06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDM5DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50UnVsZXMoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRd Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0MA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERlZmF1bHQoKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlN1YnRpdGxlLCBWZnJTeW50YXhQYXJzZXIuVGV4dCwNCj4gVmZyU3ludGF4UGFyc2VyLkdv dG8sIFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbl06DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMDQxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50U3RhdCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuT25lT2YsIFZmclN5bnRheFBhcnNlci5P cmRlcmVkTGlzdCwNCj4gVmZyU3ludGF4UGFyc2VyLkRhdGUsIFZmclN5bnRheFBhcnNlci5UaW1l LCBWZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3gsDQo+IFZmclN5bnRheFBhcnNlci5OdW1lcmljLCBW ZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQsIFZmclN5bnRheFBhcnNlci5TdHJpbmcsDQo+IFZmclN5 bnRheFBhcnNlci5BY3Rpb25dOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTA0Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9ucygp DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JheU91dElmLCBWZnJTeW50YXhQYXJzZXIuU3VwcHJl c3NJZiwNCj4gVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiwgVmZyU3ludGF4UGFyc2VyLkluY29u c2lzdGVudElmXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDMNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgpDQo+IA0K PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuTGFiZWxdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTA0NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudExhYmVs KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5CYW5uZXJdOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTA0NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudEJhbm5lcigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5LCBWZnJTeW50YXhQ YXJzZXIuSGlkZGVuLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSwgVmZyU3ludGF4UGFyc2Vy LlNhdmVdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA0Ng0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEludmFsaWQoKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkd1aWRPcF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDQ3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Nb2RhbF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMDQ4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 TW9kYWwoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlZnJlc2hHdWlkXToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNDkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTA1MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFs dEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgIGNsYXNzIFZmckZvcm1NYXBEZWZpbml0aW9uQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTpp bnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9GT1JNX01BUF9P UCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlMxID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgRm9ybU1hcChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybU1hcCwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBGb3JtSWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1JZCwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgRW5kRm9ybShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kRm9ybSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuU2VtaWNvbG9uLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgTWFwVGl0bGUoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk1hcFRpdGxlKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5NYXBUaXRsZSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJp bmdUb2tlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmlu Z1Rva2VuLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBp OmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBNYXBHdWlkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5NYXBHdWlkKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXBH dWlkLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsaSkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJGb3JtKHNlbGYsIGk6aW50PU5vbmUpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmckZvcm1D b250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckZv cm1Db250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJGb3JtTWFwRGVmaW5pdGlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFj Y2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAg IGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckZvcm1NYXBEZWZpbml0aW9uIiApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckZvcm1NYXBEZWZpbml0 aW9uKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyRm9ybU1hcERlZmluaXRpb24oc2Vs Zik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5W ZnJGb3JtTWFwRGVmaW5pdGlvbkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEwMiwgc2VsZi5SVUxF X3ZmckZvcm1NYXBEZWZpbml0aW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9r ZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTA1NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1N YXApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNTUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtSWQpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEwNTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDU3DQo+ IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguUzEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNTgNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTA3Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuTWFwVGl0 bGU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDU5DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1hcFRpdGxlKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA2MA0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTA2MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEwNjINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA2 Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1i ZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY0DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY1DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuTWFwR3VpZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEwNjcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNjgN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMDY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEwNzUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwNzkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxl ICgoKChfbGEgLSA0NikpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gNDYpKSAmICgo MSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLk9uZU9mIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuT3JkZXJlZExpc3QgLSA0NikpIHwNCj4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5TdWJ0 aXRsZSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlRleHQgLSA0NikpIHwgKDENCj4g PDwgKFZmclN5bnRheFBhcnNlci5EYXRlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu VGltZSAtIDQ2KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiAtIDQ2KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkxhYmVsIC0gNDYpKSB8ICgxIDw8DQo+IChWZnJTeW50 YXhQYXJzZXIuSW52ZW50b3J5IC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQ2hlY2tC b3ggLSA0NikpIHwNCj4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5OdW1lcmljIC0gNDYpKSB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCAtIDQ2KSkNCj4gfCAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLlBhc3N3b3JkIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3RyaW5nIC0g NDYpKQ0KPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3VwcHJlc3NJZiAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLkRpc2FibGVJZiAtDQo+IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLkhpZGRlbiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkdvdG8gLQ0KPiA0 NikpKSkgIT0gMCkgb3IgKCgoKF9sYSAtIDExMCkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAo X2xhIC0gMTEwKSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZiAt IDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5SZXN0b3JlIC0NCj4gMTEwKSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlNhdmUgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu QmFubmVyIC0NCj4gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkltYWdlIC0gMTEwKSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkxvY2tlZA0KPiAtIDExMCkpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5SdWxlIC0gMTEwKSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlJlc2V0 QnV0dG9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkFjdGlvbiAtIDExMCkpDQo+ IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50 YXhQYXJzZXIuTW9kYWwgLQ0KPiAxMTApKSkpICE9IDApIG9yIF9sYT09VmZyU3ludGF4UGFyc2Vy LlJlZnJlc2hHdWlkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA3Ng0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckZvcm0oKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTA4MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA4Mg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZEZvcm0pDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwODMNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50SW1hZ2VDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgdmZySW1hZ2VUYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdD b250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9u KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJTdGF0ZW1lbnRJbWFnZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEltYWdlIiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEltYWdlKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50SW1hZ2Uoc2VsZik6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJ bWFnZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEwNCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudElt YWdlKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA4 NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZySW1hZ2VUYWcoKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMDg2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudExvY2tlZENvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2 ZnJMb2NrZWRUYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyTG9ja2VkVGFnQ29udGV4dCwwKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vt aWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50TG9ja2VkDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50TG9ja2VkIiApOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudExvY2tlZChzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudExvY2tlZChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudExvY2tlZENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDEwNiwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudExvY2tlZCkN Cj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwODgNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnZmckxvY2tlZFRhZygpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEwODkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UnVsZXNDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1JVTEVfT1ApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgUnVsZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUnVsZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0DQo+ICwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuZFJ1bGUoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZFJ1bGUsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRSdWxl cw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudFJ1bGVzIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudFJ1bGVzKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgdmZyU3RhdGVtZW50UnVsZXMoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2Nh bGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSdWxlc0NvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDEwOCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFJ1bGVzKQ0KPiANCj4gKyAgICAgICAg dHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA5MQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJ1bGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEwOTINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MDkzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEwOTQNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMDk1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRW5kUnVsZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTA5Ng0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnRTdGF0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1YlRpdGxlKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFN1YlRpdGxlQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRpY1RleHQoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdGljVGV4dENvbnRleHQsDQo+IDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2Uoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVuY2VDbw0KPiBudGV4dCww KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Rh dGVtZW50U3RhdA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudFN0YXQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3RhdChzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIHZmclN0YXRlbWVudFN0YXQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0Q29udGV4dChzZWxm LCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMTEwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3RhdCkNCj4gDQo+ICsgICAg ICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEwMQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTA5OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN1 YlRpdGxlKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UZXh0XToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTA5OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudFN0YXRpY1RleHQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdvdG8sIFZmclN5bnRh eFBhcnNlci5SZXNldEJ1dHRvbl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDExMDANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRDcm9zc1JlZmVy ZW5jZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihz ZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGNsYXNzIFZmclN0YXRlbWVudFN1YlRpdGxlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9TVUJUSVRMRV9PUCkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLk9wT2JqID0gQ0lmclN1YnRpdGxlKCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBTdWJ0aXRsZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUsIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgVGV4dChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGV4dCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBFbmRTdWJ0aXRsZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kU3VidGl0bGUsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFH UyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3VidGl0 bGVGbGFncyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdWJ0aXRsZUZsYWdzQ29udGV4dCwwKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXRUYWdM aXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdMaXN0Q29udGV4dCwN Cj4gMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRT dWJUaXRsZUNvbXBvbmVudChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBv bmUNCj4gbnRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW4NCj4gdENvbnRleHQsaSkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1YlRp dGxlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGUiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGUoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdWJUaXRsZShzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1YlRpdGxlQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMTEyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGUp DQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAg ICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTAzDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExMDQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTA1DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEwNg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxMTA3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTA4DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTA5DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTExNA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVBy ZWRpY3Qoc2VsZi5faW5wdXQsNjUsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxh XyA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTExMA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTENCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTEyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTEzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3VidGl0bGVGbGFncygpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMzYNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDcw LHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4 UGFyc2VyLkNvbW1hOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEx MTYNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMTcNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RhdFRhZ0xpc3QobG9j YWxjdHguTm9kZSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDExMjANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExMjMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVy cC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsNjcsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMTIxDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTIyDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRU YWdMaXN0KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMTMyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNl ci5Db21tYToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTI1DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTI5DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEg PDwgKF9sYSAtIDQ2KSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5PbmVPZiAtIDQ2KSkg fCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0IC0gNDYpKSB8DQo+ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5U ZXh0IC0gNDYpKSB8ICgxDQo+IDw8IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNl ci5DaGVja0JveCAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWMgLSA0Nikp IHwgKDENCj4gPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtIDQ2KSkgfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfA0KPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkdv dG8gLSA0NikpKSkgIT0gMCkgb3INCj4gX2xhPT1WZnJTeW50YXhQYXJzZXIuUmVzZXRCdXR0b24g b3IgX2xhPT1WZnJTeW50YXhQYXJzZXIuQWN0aW9uOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMTI2DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudCgpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMzENCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTEzNA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRTdWJ0aXRsZSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMzUNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnRD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBp bnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRTdGF0Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9ucyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRRdWVzdGlvbnNDb250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJT dGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudChzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFN1YlRpdGxlQ29tcG9uZW50KHNlbGYpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPQ0KPiBWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50U3ViVGl0bGVDb21wb25lbnRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2Vs Zi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMTQsDQo+ IHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudCkNCj4gDQo+ICsgICAgICAg IHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE0MA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRv a2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlLCBWZnJTeW50YXhQYXJzZXIuVGV4dCwNCj4gVmZyU3lu dGF4UGFyc2VyLkdvdG8sIFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbl06DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExMzgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRTdGF0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVPZiwgVmZyU3lu dGF4UGFyc2VyLk9yZGVyZWRMaXN0LA0KPiBWZnJTeW50YXhQYXJzZXIuRGF0ZSwgVmZyU3ludGF4 UGFyc2VyLlRpbWUsIFZmclN5bnRheFBhcnNlci5DaGVja0JveCwNCj4gVmZyU3ludGF4UGFyc2Vy Lk51bWVyaWMsIFZmclN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4UGFyc2VyLlN0cmlu ZywNCj4gVmZyU3ludGF4UGFyc2VyLkFjdGlvbl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDExMzkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRR dWVzdGlvbnMoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRp b24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBjbGFzcyBWZnJTdWJ0aXRsZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5TdWJGbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBzdWJ0aXRs ZUZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuU3VidGl0bGVGbGFnc0ZpZWxkQ29udGV4dCkNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TdWJ0aXRsZUZsYWdzRmll bGRDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lz ZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwg aSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN1YnRpdGxlRmxh Z3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTdWJ0aXRsZUZsYWdzIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN1YnRpdGxlRmxhZ3Moc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiB2ZnJTdWJ0aXRsZUZsYWdzKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3VidGl0bGVGbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5f Y3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDExNiwgc2VsZi5SVUxFX3ZmclN1YnRpdGxlRmxhZ3MpDQo+IA0KPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMTQyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdWJ0aXRsZUZsYWdz RmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTQ3DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZm clN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMTQzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNDQN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdWJ0aXRsZUZsYWdzRmllbGQoKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE0OQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBTdWJ0aXRsZUZsYWdzRmllbGRDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRl OmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLkZsYWcgPSAwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV9zdWJ0aXRsZUZsYWdzRmllbGQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTdWJ0aXRsZUZsYWdzRmllbGQiICk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3VidGl0bGVGbGFnc0Zp ZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgc3VidGl0bGVGbGFnc0ZpZWxkKHNlbGYp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU3Vi dGl0bGVGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+ IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTE4LCBzZWxmLlJVTEVfc3Vi dGl0bGVGbGFnc0ZpZWxkKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1MA0K PiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAg ICAgICAgaWYgbm90KF9sYT09VmZyU3ludGF4UGFyc2VyLlRfXzcgb3IgX2xhPT1WZnJTeW50YXhQ YXJzZXIuTnVtYmVyKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVySW5saW5lKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRpY1RleHRDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1RFWFRf T1ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TMSA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuUzIgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxm LlMzID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRv a2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TNCA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFRleHQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlRleHQsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgSGVscChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSGVs cCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBpKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBp OmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgc3RhdGljVGV4dEZs YWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0cyhWZnJTeW50YXhQYXJzZXIuU3RhdGljVGV4dEZsYWdzRmllbGRDb250ZXh0KQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN0YXRpY1RleHRGbGFnc0Zp ZWxkQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEtleShz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuS2V5LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0 YXRUYWdMaXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdMaXN0Q29u dGV4dCwNCj4gMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFHUyhz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0YXRpY1Rl eHQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTdGF0ZW1lbnRTdGF0aWNUZXh0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0YXRpY1RleHQoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0aWNUZXh0KHNlbGYpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdGlj VGV4dENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEyMCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0 YXRpY1RleHQpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0K PiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTUyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTE1Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkhlbHApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEx NTQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTU1DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExNTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEx NTcNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5TMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE1OA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNTkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTE2MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRleHQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjENCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMTYyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDExNjMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjQNCj4gDQo+ICsg ICAgICAgICAgICBsb2NhbGN0eC5TMiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE2NQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDExNzMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRh cHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDczLHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAgICAg ICBpZiBsYV8gPT0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExNjYN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTY3DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRleHQpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTY4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMTY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTE3MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTcxDQo+IA0K PiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlMzID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE3Mg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVu KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTkx DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1 dCw3NSxzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTc1DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTE3Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMTc3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MTc4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGljVGV4dEZsYWdzRmllbGQoKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4Mw0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2hpbGUg X2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDExNzkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMTgwDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRp Y1RleHRGbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTg1DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTg2DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE4Nw0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTg4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMTg5DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LlM0ID0gc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTk1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5Db21tYToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDExOTMNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMTk0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50U3RhdFRhZ0xpc3QobG9jYWxjdHguTm9kZSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTE5Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBTdGF0aWNUZXh0RmxhZ3NGaWVsZENvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5n U3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRmxhZyA9IDANCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBxdWVzdGlvbmhl YWRlckZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0Zp ZWxkQ29udGUNCj4geHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3N0YXRpY1RleHRGbGFnc0ZpZWxkDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3RhdGljVGV4dEZsYWdzRmllbGQiICk6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3RhdGljVGV4dEZs YWdzRmllbGQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBzdGF0aWNUZXh0RmxhZ3NGaWVs ZChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlN0YXRpY1RleHRGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYu c3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTIyLCBzZWxm LlJVTEVfc3RhdGljVGV4dEZsYWdzRmllbGQpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMDENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5OdW1iZXJdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMTk5DQo+IA0K PiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnLA0KPiBWZnJT eW50YXhQYXJzZXIuTlZBY2Nlc3NGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZs YWcsDQo+IFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBh cnNlci5MYXRlQ2hlY2tGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlGbGFnLCBWZnJT eW50YXhQYXJzZXIuT3B0aW9uT25seUZsYWcsDQo+IFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVG bGFnXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIwMA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRl bWVudENyb3NzUmVmZXJlbmNlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2Rl ID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEdvdG8oc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R290b0NvbnRleHQsMCkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbkNvbnRlDQo+IHh0LDApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRD cm9zc1JlZmVyZW5jZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlIiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudENyb3NzUmVmZXJl bmNlKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVu Y2Uoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZUNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4 LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEy NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlKQ0KPiANCj4gKyAgICAgICAg dHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjA1DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9r ZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuR290b106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEyMDMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRHb3RvKCkNCj4g DQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbl06DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyMDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRSZXNldEJ1dHRvbigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4 Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEdvdG9Db250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1JFRl9PUCkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLk9wT2JqID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT0hP YmogPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZ UEUuUVVFU1RJT05fUkVGDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5RTiA9IE5vbmUgIyBUb2tl bg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEdvdG8oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdvdG8sIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu RkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyR290b0ZsYWdzKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmckdvdG9GbGFnc0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBLZXkoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLktleSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uTGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9w dGlvbkxpc3QNCj4gQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIERldmljZVBhdGgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRldmljZVBhdGgsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgRm9ybVNldEd1aWQoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZvcm1TZXRHdWlkLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGd1aWREZWZpbml0aW9uKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkd1aWREZWZpbml0aW9uQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIEZvcm1JZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRm9ybUlkLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIFF1ZXN0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5RdWVzdGlvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50R290 bw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudEdvdG8iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50R290byhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IHZmclN0YXRlbWVudEdvdG8oc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHb3RvQ29udGV4dChzZWxmLCBzZWxmLl9j dHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMTI2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50R290bykNCj4gDQo+ICsgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyMDcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Hb3RvKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjU1DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGV2aWNlUGF0aF06DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMjA4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkRldmljZVBhdGgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMjA5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjEwDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rv a2VuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxMQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjEyDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEyMTMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEyMTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjE1 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1T ZXRHdWlkKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxNg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIxNw0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLmd1aWREZWZpbml0aW9uKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEyMTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjE5DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZvcm1JZCkNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjANCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDEyMjENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTIyMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjMNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb24p DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjI0DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjI1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEyMjYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRm9ybVNldEd1aWRdOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIyOA0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtU2V0R3VpZCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEyMzANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlv bigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjMxDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTIzMg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Gb3JtSWQpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMjMzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MjM0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyMzUNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjM2DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTIzNw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTIzOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjM5DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkZvcm1JZF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMjQxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkZvcm1JZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDIN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDMNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEyNDUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuUXVlc3Rpb24pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MjQ2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjUxDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAg IGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcl06DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI0Nw0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgbG9jYWxjdHguUU4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJ ZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNDgN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg ICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjQ5DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI1MA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxMjUzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNTQN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCBWZnJTeW50YXhQYXJzZXIuTmFtZSwNCj4g VmZyU3ludGF4UGFyc2VyLlZhcklkLCBWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25JZF06DQo+IA0K PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy NTcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uSGVhZGVyKGxvY2FsY3R4Lk9w T2JqLCBsb2NhbGN0eC5RVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI2 Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5w dXQsODEsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI1OA0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEyNTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMjYwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjYxDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYudmZyR290b0ZsYWdzKGxvY2FsY3R4Lk9wT2JqKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY4DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw4MixzZWxm Ll9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMjY0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTI2NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5LZXkpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY2DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjY3DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI3Mg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJz ZXIuQ29tbWE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjcwDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI3MQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjc0DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K PiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5h bGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmckdv dG9GbGFnc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBPYmo9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk9iaiA9 IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkdvdG9GbGFncyA9IDANCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLk9iaiA9IE9iag0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdvdG9G bGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkdvdG9GbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQs aSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwg aTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdp c2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyR290b0ZsYWdzDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyR290b0Zs YWdzIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckdv dG9GbGFncyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckdvdG9GbGFncyhzZWxmLCBP YmopOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyR290b0ZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIE9iaikN Cj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMjgsIHNlbGYuUlVMRV92 ZnJHb3RvRmxhZ3MpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+ IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjc2DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5nb3RvRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyODENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiAN Cj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyNzcNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI3OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmdvdG9GbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEy ODMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiAr ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFs bHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgR290b0Zs YWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkZsYWcgPSAwDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0 aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRlDQo+IHh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9nb3RvRmxhZ3NGaWVsZA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdEdvdG9GbGFnc0ZpZWxk IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEdvdG9GbGFn c0ZpZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgZ290b0ZsYWdzRmllbGQoc2VsZik6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Hb3Rv RmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDEzMCwgc2VsZi5SVUxFX2dvdG9GbGFn c0ZpZWxkKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMjg2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtYmVyXToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4NA0KPiANCj4gKyAgICAgICAgICAgICAgICBs b2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNz RmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLA0KPiBWZnJTeW50YXhQYXJz ZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywN Cj4gVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9u bHlGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyODUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5x dWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9W aWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbkNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJf UkVTRVRfQlVUVE9OX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyUmVz ZXRCdXR0b24oKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFJlc2V0QnV0dG9uKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbiwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEZWZhdWx0U3RvcmUoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRlZmF1 bHRTdG9yZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRIZWFkZXJDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgRW5kUmVzZXRCdXR0b24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZFJlc2V0QnV0dG9uLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZp ZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdFRhZ0xp c3Qoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdFRhZ0xpc3RDb250ZXh0LA0K PiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy U3RhdGVtZW50UmVzZXRCdXR0b24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbiIgKToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRSZXNldEJ1 dHRvbihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFJlc2V0QnV0dG9u KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50UmVzZXRCdXR0b25Db250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2Vs Zi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMzIsIHNl bGYuUlVMRV92ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xh ID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEyODgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5SZXNldEJ1dHRvbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI4OQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRTdG9y ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTI5MA0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEyOTENCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTI5Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjkzDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFkZXIobG9jYWxjdHguT3BPYmop DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEyOTQNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTI5OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0K PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuSW1hZ2Ugb3IgX2xhPT1WZnJT eW50YXhQYXJzZXIuTG9ja2VkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTI5NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRUYWdMaXN0 KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMjk2 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzAw DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kUmVzZXRC dXR0b24pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMDENCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVl c3Rpb25zQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEJvb2xlYW5UeXBlKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEJvb2xlYW5UeXBlQ29udGUNCj4geHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREYXRlKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERhdGVDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50TnVtZXJpY1R5cGVDb250DQo+IGV4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0cmluZ1R5cGUoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RyaW5nVHlwZUNvbnRleHQsDQo+IDApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50T3JkZXJlZExpc3Qo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T3JkZXJlZExpc3RDb250ZXgNCj4gdCww KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFRpbWUo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VGltZUNvbnRleHQsMCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0 aW9ucw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9ucyIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbnMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoc2VsZik6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlv bnNDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMzQsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRRdWVz dGlvbnMpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzMDkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5DaGVja0JveCwgVmZyU3ludGF4 UGFyc2VyLkFjdGlvbl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMDMN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZSgpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuRGF0ZV06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu ZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDEzMDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnREYXRl KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVPZiwgVmZyU3ludGF4UGFyc2VyLk51bWVyaWNd Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzA1DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50TnVtZXJpY1R5cGUoKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlBhc3N3b3JkLCBWZnJTeW50YXhQYXJzZXIuU3RyaW5nXToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTMwNg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudFN0cmluZ1R5cGUoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0 XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA1 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMwNw0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudE9yZGVyZWRMaXN0KCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5UaW1lXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCA2KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMwOA0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFRpbWUoKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxs eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRRdWVzdGlvblRhZ0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9 IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdGF0VGFnKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdDb250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElmQ29udA0KPiBleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnROb1N1Ym1p dElmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE5vU3VibWl0SWZDb250ZXgNCj4g dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudERp c2FibGVJZlF1ZXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2FibGVJZlF1 ZXN0Q29uDQo+IHRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2 ZnJTdGF0ZW1lbnRSZWZyZXNoKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlZnJl c2hDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3Rh dGVtZW50VmFyc3RvcmVEZXZpY2Uoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFy c3RvcmVEZXZpY2VDb24NCj4gdGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEV4dGVuc2lvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRFeHRlbnNpb25Db250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudFJlZnJlc2hFdmVudChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRSZWZyZXNoRXZlbnRDb250DQo+IGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFdhcm5pbmdJZihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRXYXJuaW5nSWZDb250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJTdGF0ZW1lbnRRdWVzdGlvblRhZyIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvblRhZyhzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uVGFnKHNlbGYpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rp b25UYWdDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxMzYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRR dWVzdGlvblRhZykNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTMyMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkltYWdlLCBWZnJTeW50 YXhQYXJzZXIuTG9ja2VkXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMx MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRUYWcoKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMxMg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5JbmNvbnNpc3RlbnRJZl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDEzMTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRJbmNvbnNpc3Rl bnRJZigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBl bGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTm9TdWJtaXRJZl06DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiAN Cj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EaXNhYmxlSWZd Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzE2DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QoKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLlJlZnJlc2hdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx MzE3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UmVmcmVzaCgpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuVmFyc3RvcmVEZXZpY2VdOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxMzE4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3Rh dGVtZW50VmFyc3RvcmVEZXZpY2UoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkd1aWRPcF06DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMTkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LlJlZnJlc2hHdWlkXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCA4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMyMA0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFJlZnJlc2hFdmVudCgpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuV2FybmluZ0lmXToNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA5KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTMyMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dFdhcm5pbmdJZigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2Vw dGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhj ZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJl DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCBy ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1 bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEluY29uc2lzdGVudElmQ29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTpp bnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZv a2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9JTkNPTlNJU1RF TlRfSUZfT1ApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgSW5jb25zaXN0ZW50SWYoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkluY29uc2lzdGVudElmLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFByb21w dChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuUHJvbXB0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rv a2VuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TdHJpbmdUb2tlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBP cGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBD bG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dA0KPiAsMCkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NG aWVsZENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu RmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy U3RhdGVtZW50SW5jb25zaXN0ZW50SWYNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZiIgKToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRJ bmNvbnNpc3RlbnRJZihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudElu Y29uc2lzdGVudElmKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZDb250ZXh0KHNlbGYsDQo+ IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxv Y2FsY3R4LCAxMzgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZikNCj4gDQo+ ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjQNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTMyNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlByb21wdCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMyNg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMjcNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTMyOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMyOQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMzMA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzMzENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM0NA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMzMyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMzMw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTMzNA0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTMzOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzMzUNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzM2DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEzNDENCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzNDINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDEzNDYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24o KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzQ3DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kSWYpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDEzNDkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5 bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQ cmVkaWN0KHNlbGYuX2lucHV0LDkxLHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBs YV8gPT0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNDgNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGNsYXNzIFZmclN0YXRlbWVudE5vU3VibWl0SWZDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6 DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3Rh dGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX05PX1NVQk1JVF9JRl9PUCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOb1N1Ym1pdElmKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElm LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFByb21wdChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHJvbXB0LCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdU b2tlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51 bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dA0KPiAsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQs aSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2Vs ZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50Tm9TdWJtaXRJ Zg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudE5vU3VibWl0SWYiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50Tm9TdWJtaXRJZihzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIHZmclN0YXRlbWVudE5vU3VibWl0SWYoc2VsZik6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnROb1N1Ym1p dElmQ29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTQwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50Tm9T dWJtaXRJZikNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNTENCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElmKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzUyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMzUzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1NA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzU1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxMzU2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzU3DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM1OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzcxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAg ICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDEzNTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzYwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzYxDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxMzY2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5C aXRXaXNlT3I6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM2Mg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNjMNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM2OA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTM2OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTM3Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 RXhwcmVzc2lvbigpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzNzQNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM3Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVy cC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsOTQsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTM3NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T ZW1pY29sb24pDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3RDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0RJ U0FCTEVfSUZfT1ApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGlzYWJsZUlmKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5EaXNhYmxlSWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 RXhwcmVzc2lvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29u dGV4dA0KPiAsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29s b24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCBp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QN Cj4gQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuZElm KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5FbmRJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3Qi ICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVt ZW50RGlzYWJsZUlmUXVlc3Qoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1l bnREaXNhYmxlSWZRdWVzdChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4 ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0Q29udGV4dChzZWxm LA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVs ZShsb2NhbGN0eCwgMTQyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmUXVlc3QpDQo+ IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0 KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzc4DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzc5DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTM4MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNl bWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4MQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5v ZGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDEzODINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTM4NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2 ZVByZWRpY3Qoc2VsZi5faW5wdXQsOTUsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIGlm IGxhXyA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4Mw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24p DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNl cHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVs ZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UmVmcmVzaENvbnRleHQoUGFyc2VyUnVsZUNvbnRl eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg cGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToN Cj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfUkVGUkVTSF9PUCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBSZWZyZXNoKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWZyZXNoLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIEludGVydmFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JbnRlcnZhbCwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFJlZnJlc2gNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJT dGF0ZW1lbnRSZWZyZXNoIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclN0YXRlbWVudFJlZnJlc2goc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2 ZnJTdGF0ZW1lbnRSZWZyZXNoKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVmcmVzaENvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDE0NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFJlZnJlc2gpDQo+IA0KPiArICAgICAg ICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAx KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzg2DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVmcmVzaCkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTM4Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkludGVydmFsKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzg4 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM4OQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZUNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9J RlJfVkFSU1RPUkVfREVWSUNFX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFZhcnN0 b3JlRGV2aWNlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmljZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRWYXJzdG9yZURldmljZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm clN0YXRlbWVudFZhcnN0b3JlRGV2aWNlIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2Uoc2VsZik6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRW YXJzdG9yZURldmljZUNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0Niwgc2VsZi5SVUxFX3ZmclN0 YXRlbWVudFZhcnN0b3JlRGV2aWNlKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTM5MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlZhcnN0b3JlRGV2aWNlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzkyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTM5Mw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxMzk0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxMzk1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxMzk2DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTM5Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFJlZnJlc2hFdmVudENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6 aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfUkVGUkVTSF9J RF9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBSZWZyZXNoR3VpZChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmVm cmVzaEd1aWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ3VpZERlZmluaXRpb24o c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29u dGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0LDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0VmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFJlZnJlc2hFdmVudChzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFJlZnJlc2hFdmVudChzZWxmKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJl ZnJlc2hFdmVudENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE0OCwgc2VsZi5SVUxFX3ZmclN0YXRl bWVudFJlZnJlc2hFdmVudCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDEzOTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5SZWZyZXNoR3VpZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQwMA0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MDENCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lmd1aWREZWZpbml0aW9uKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQwMg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiAN Cj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRl bWVudFdhcm5pbmdJZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZm clRyZWVOb2RlKEVGSV9JRlJfV0FSTklOR19JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBXYXJuaW5nSWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLldhcm5pbmdJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBQcm9tcHQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlByb21wdCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dA0KPiAsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgVGltZW91dChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVGltZW91dCwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFdhcm5pbmdJZg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm clN0YXRlbWVudFdhcm5pbmdJZiIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRXYXJuaW5nSWYoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiB2ZnJTdGF0ZW1lbnRXYXJuaW5nSWYoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXYXJuaW5nSWZDb250ZXh0 KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAxNTAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRXYXJuaW5nSWYpDQo+ IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0 cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDA0DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuV2FybmluZ0lmKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNDA1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDA2DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQwNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDA4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDA5DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDEwDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTQxMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDE2DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5UaW1lb3V0Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTQxMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UaW1lb3V0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxMw0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQxNA0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDE1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDE4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQx OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDIxDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgbGFfID0gc2Vs Zi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCw5NyxzZWxmLl9jdHgpDQo+IA0K PiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNDIwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xp c3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiBpbnZva2luZ1N0YXRlOmludD0tMSwgTm9kZT1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5v bmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb2RlDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25UYWcoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UXVlc3Rpb25UYWdDb250DQo+IGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0NvbnRlDQo+IHh0LGkpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1l bnRRdWVzdGlvblRhZ0xpc3QNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3QiICk6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UXVlc3Rp b25UYWdMaXN0KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rp b25UYWdMaXN0KHNlbGYsIE5vZGUpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHgg PSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0Q29udGV4dChzZWxm LA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIE5vZGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMTUyLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdM aXN0KQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAg ICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQyNg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAt IDEwNikpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTA2KSkgJiAoKDEgPDwNCj4g KFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSAxMDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJz ZXIuSW5jb25zaXN0ZW50SWYgLQ0KPiAxMDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuV2Fy bmluZ0lmIC0gMTA2KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLk5vU3VibWl0SWYgLSAx MDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuSW1hZ2UgLSAxMDYpKSB8DQo+ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuTG9ja2VkIC0gMTA2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJl ZnJlc2ggLSAxMDYpKQ0KPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVmFyc3RvcmVEZXZpY2Ug LSAxMDYpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuR3VpZE9wIC0gMTA2KSkpKSAhPSAw KSBvcg0KPiBfbGE9PVZmclN5bnRheFBhcnNlci5SZWZyZXNoR3VpZDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MjMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNDI4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNz IFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudFN1cHByZXNzSWZRdWVzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBw cmVzc0lmUXVlc3RDbw0KPiBudGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0Q28NCj4gbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRWYWx1ZShzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRWYWx1ZUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREZWZhdWx0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudERlZmF1bHRDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgdmZyU3RhdGVtZW50T3B0aW9ucyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRPcHRpb25zQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudFJlYWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVhZENv bnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRXcml0ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRXcml0ZUNvbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uVGFnDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWciICk6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb25UYWcoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1l bnRRdWVzdGlvbk9wdGlvblRhZyhzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2Fs Y3R4ID0NCj4gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnQ29u dGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMTU0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25UYWcpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE0MzYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmXToNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQyOQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdCgpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuR3JheU91dElmXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQz MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0 KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5WYWx1ZV06DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE0MzENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRWYWx1ZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVsdF06DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MzINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnREZWZhdWx0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PcHRpb25dOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDMzDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYudmZyU3RhdGVtZW50T3B0aW9ucygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuUmVh ZF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg NikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MzQNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRSZWFkKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5Xcml0ZV06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgNykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MzUNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRXcml0ZSgpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIEZsYWdzRmllbGRD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBp bnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkwgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBJbnRlcmFjdGl2ZUZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBNYW51ZmFjdHVyaW5nRmxhZyhzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFudWZhY3R1cmlu Z0ZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGVmYXVsdEZsYWcoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkRlZmF1bHRGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFJlc2V0UmVxdWly ZWRGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBSZWNvbm5lY3RSZXF1aXJlZEZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxh ZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOVkFjY2Vzc0ZsYWcoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5W QWNjZXNzRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBMYXRlQ2hlY2tGbGFn KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5MYXRlQ2hlY2tGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdl dFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFy c2VyLlJVTEVfZmxhZ3NGaWVsZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdEZsYWdzRmllbGQiICk6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RmxhZ3NGaWVsZChzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIGZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNl bGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTU2LCBz ZWxmLlJVTEVfZmxhZ3NGaWVsZCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTQ0Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJl cl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0MzgNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZy U3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE0MzkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0 dXJpbmdGbGFnXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0MA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVy aW5nRmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EZWZhdWx0RmxhZ106DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWcpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuUmVzZXRSZXF1aXJlZEZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNDQyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LlJlc2V0UmVxdWlyZWRGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr ICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlJlY29ubmVjdFJlcXVp cmVkRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgNikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDMNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVx dWlyZWRGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZ106DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NDQNCj4gDQo+ICsgICAgICAgICAgICAgICAg bG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZykNCj4g DQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnXToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA4KQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTQ0NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5MID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZykNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50 U3VwcHJlc3NJZlF1ZXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0g VmZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBTdXBwcmVzc0lmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQNCj4gLDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2 ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UXVlc3Rpb25PcHRpb25MaXN0DQo+IENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRl eHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Q29tbWEsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNl T3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVz dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNl VHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2 aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZRdWVzdCIgKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3Qoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3Qoc2VsZik6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3RDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNTgsIHNlbGYu UlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmUXVlc3QpDQo+IA0KPiArICAgICAgICBzZWxmLl9s YSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDQ4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuU3VwcHJlc3NJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ0OQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE0NjMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTQ1MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE0NTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NTMNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE0NTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFy c2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NDU0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ1 NQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDYwDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDYxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNDY1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTQ2Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkVuZElmKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDY4DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwx MDMsc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ2Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiAr ICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFs bHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICBy ZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3Rh dGVtZW50R3JheU91dElmUXVlc3RDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJS dWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5v ZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1NVUFBSRVNTX0lGX09QKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIEdyYXlPdXRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JheU91dElmLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQNCj4gLDApDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0DQo+IENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENv bnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29tbWEsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRX aXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEdyYXlPdXRJZlF1 ZXN0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QiICk6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50R3JheU91dElmUXVlc3Qoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdChzZWxmKToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEdyYXlPdXRJZlF1ZXN0Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3Rh dGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTYwLCBzZWxmLlJV TEVfdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9 IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNDcwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuR3JheU91dElmKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDcxDQo+IA0K PiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTQ3Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQ4NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNDczDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTQ3NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ3NQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTQ4MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0NzYN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDc3DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0ODINCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0ODMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE0ODcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDg4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRW5kSWYpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0OTANCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBsYV8gPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0LDEwNixz ZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgaWYgbGFfID09IDE6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDg5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnREZWZhdWx0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJl ZU5vZGUoRUZJX0lGUl9ERUZBVUxUX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRCA9IE5v bmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuU04gPSBOb25lICMgVG9rZW4NCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEZWZhdWx0KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5EZWZhdWx0LCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFZhbHVlKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudFZhbHVlQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyQ29uc3RhbnRWYWx1 ZUZpZWxkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckNvbnN0YW50VmFsdWVGaWVsZENvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEZWZhdWx0U3RvcmUoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkRlZmF1bHRTdG9yZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJ ZGVudGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g VmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RGVmYXVsdA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERl ZmF1bHQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZy U3RhdGVtZW50RGVmYXVsdChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVu dERlZmF1bHQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+ IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTYy LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50RGVmYXVsdCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xh ID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE0OTINCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5EID0gc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTUwMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g DQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlZhbHVlXToNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE0OTMNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRWYWx1ZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNDk0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRfXzVdOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTQ5Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTQ5Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckNvbnN0YW50 VmFsdWVGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNDk4DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUwNg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50 YXhQYXJzZXIuRGVmYXVsdFN0b3JlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTUwMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5EZWZhdWx0U3RvcmUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTAz DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTA0DQo+IA0KPiArICAgICAg ICAgICAgICAgIGxvY2FsY3R4LlNOID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5n SWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MDUNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRp b24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgp DQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0K PiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1ZBTFVFX09QKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFZhbHVlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYWx1ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0DQo+ICwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50VmFsdWUNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1l bnRWYWx1ZSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRW ZnJTdGF0ZW1lbnRWYWx1ZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVu dFZhbHVlKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFsdWVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2Vs Zi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxNjQsIHNl bGYuUlVMRV92ZnJTdGF0ZW1lbnRWYWx1ZSkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1MDgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5WYWx1ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUw OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MTANCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudE9wdGlvbnNDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRl OmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgdmZyU3RhdGVtZW50T25lT2ZPcHRpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50T25lT2ZPcHRpb25Db250DQo+IGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50T3B0aW9ucw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVu dE9wdGlvbnMiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyU3RhdGVtZW50T3B0aW9ucyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRl bWVudE9wdGlvbnMoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPcHRpb25zQ29udGV4dChzZWxmLCBzZWxmLl9jdHgs DQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MTY2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50T3B0aW9ucykNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MTINCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudE9uZU9mT3B0aW9uKCkNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25p dGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRp b24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Io c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRPbmVPZk9wdGlvbkNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3Rh dGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfT05FX09G X09QVElPTl9PUCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCj4g DQo+ICsgICAgICAgICAgICBzZWxmLktOID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgT3B0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcHRpb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgVGV4dChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuVGV4dCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk51bWJlciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgVmFsdWUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhbHVlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIHZmckNvbnN0YW50VmFsdWVGaWVsZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJD b25zdGFudFZhbHVlRmllbGRDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyT25lT2ZPcHRpb25GbGFncyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJPbmVP Zk9wdGlvbkZsYWdzQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIEZMQUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBLZXkoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLktleSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJJbWFn ZVRhZyhzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5WZnJJbWFnZVRhZ0NvbnRleHQpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZySW1hZ2VUYWdDb250ZXh0LGkpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRPbmVP Zk9wdGlvbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdFZmclN0YXRlbWVudE9uZU9mT3B0aW9uIiApOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudE9uZU9mT3B0aW9uKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50T25lT2ZPcHRpb24oc2VsZik6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRPbmVPZk9wdGlvbkNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE2OCwgc2VsZi5SVUxFX3ZmclN0 YXRlbWVudE9uZU9mT3B0aW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUx NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wdGlvbikN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUxNQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRleHQpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE1MTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTE3DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MTgNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE1MTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MjANCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTIxDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE1MjINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5WYWx1ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyMw0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1MjQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmckNvbnN0 YW50VmFsdWVGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MjUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUyNg0KPiANCj4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LkYgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTUyNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MjgN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmck9uZU9mT3B0aW9uRmxhZ3MoKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTMzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgbGFfID0gc2VsZi5faW50ZXJw LmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwxMDksc2VsZi5fY3R4KQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTUyOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1MzANCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuS2V5KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUzMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTUzMg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5LTiA9IHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUzOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIu Q29tbWE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTM1DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTUzNg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnZmckltYWdlVGFnKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1NDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NDINCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyT25lT2ZPcHRpb25GbGFnc0Nv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuTEZsYWdzID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIG9uZW9m b3B0aW9uRmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5PbmVvZm9wdGlvbkZsYWdzRmllbGRDb250 ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLk9uZW9mb3B0 aW9uRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZy T25lT2ZPcHRpb25GbGFncw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmck9uZU9mT3B0aW9uRmxhZ3MiICk6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyT25lT2ZPcHRpb25GbGFncyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmck9uZU9mT3B0aW9uRmxhZ3Moc2VsZik6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJPbmVPZk9wdGlv bkZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAg ICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTcwLCBzZWxmLlJVTEVfdmZyT25lT2ZPcHRp b25GbGFncykNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NDQNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm9uZW9mb3B0aW9uRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE1NDkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NDUNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU0Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm9uZW9mb3B0aW9uRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNTUxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzIE9uZW9mb3B0aW9uRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuSEZsYWcgPSAwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MRmxhZyA9IDANCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLkEgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkwgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcHRpb25EZWZhdWx0 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5PcHRpb25EZWZhdWx0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9w dGlvbkRlZmF1bHRNZmcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wdGlvbkRlZmF1bHRNZmcsIDApDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgSW50ZXJhY3RpdmVGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUmVzZXRSZXF1aXJlZEZsYWcoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJl c2V0UmVxdWlyZWRGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFJlc3RTdHls ZUZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgUmVjb25uZWN0UmVxdWlyZWRGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTWFudWZhY3R1cmluZ0ZsYWcoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1h bnVmYWN0dXJpbmdGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIERlZmF1bHRG bGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5EZWZhdWx0RmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBO VkFjY2Vzc0ZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBMYXRlQ2hlY2tGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tGbGFnLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfb25lb2ZvcHRpb25GbGFnc0ZpZWxkDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0T25l b2ZvcHRpb25GbGFnc0ZpZWxkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdE9uZW9mb3B0aW9uRmxhZ3NGaWVsZChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRy ZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIG9uZW9mb3B0aW9uRmxhZ3NGaWVsZChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLk9uZW9mb3B0aW9uRmxhZ3NGaWVsZENvbnRleHQo c2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDE3Miwgc2VsZi5SVUxFX29uZW9mb3B0aW9uRmxhZ3NGaWVsZCkNCj4g DQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU2Mw0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE1NTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk9wdGlvbkRlZmF1 bHRdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTUzDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wdGlvbkRlZmF1bHQpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVmYXVsdE1mZ106DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1NTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3B0aW9uRGVmYXVsdE1mZykNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5JbnRlcmFjdGl2ZUZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NTU1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLklu dGVyYWN0aXZlRmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZ106 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTYNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE1NTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5SZWNv bm5lY3RSZXF1aXJlZEZsYWddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NTU4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlJl Y29ubmVjdFJlcXVpcmVkRmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5NYW51ZmFjdHVyaW5n RmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgOCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NTkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWFudWZhY3R1cmluZ0Zs YWcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRGVmYXVsdEZsYWddOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDkpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxNTYwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBw YXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk5W QWNjZXNzRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMTApDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTYxDQo+ IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5OVkFjY2Vzc0ZsYWcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZ106 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTEp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTYyDQo+IA0KPiArICAgICAg ICAgICAgICAgIGxvY2FsY3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MYXRlQ2hl Y2tGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24o c2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRSZWFkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9SRUFEX09QKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIFJlYWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJlYWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRFeHByZXNzaW9uQ29udGV4dA0KPiAsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFJlYWQNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRS ZWFkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0 YXRlbWVudFJlYWQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRSZWFk KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50UmVhZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE3NCwgc2VsZi5SVUxF X3ZmclN0YXRlbWVudFJlYWQpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNTY1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuUmVhZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU2Ng0KPiANCj4g KyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1NjcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50V3JpdGVDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX1dSSVRFX09QKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFdyaXRlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Xcml0ZSwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0DQo+ICwwKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50V3JpdGUN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJTdGF0ZW1lbnRXcml0ZSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRXcml0ZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4o c2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IHZmclN0YXRlbWVudFdyaXRlKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50V3JpdGVDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAxNzYsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRXcml0ZSkNCj4gDQo+ICsgICAgICAgIHRy eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NjkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Xcml0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTU3MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVz c2lvbigpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NzENCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25MaXN0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE5vZGU9Tm9uZSk6DQo+IA0KPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9kZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uQw0KPiBvbnRleHQpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25Dbw0KPiBudGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb25MaXN0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdFZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmLCBOb2RlKToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0NCj4gVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBz ZWxmLnN0YXRlLCBOb2RlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDE3OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdCkNCj4gDQo+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1NzYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlICgoKChfbGEgLSA2MSkpICYgfjB4M2Yp ID09IDAgYW5kICgoMSA8PCAoX2xhIC0gNjEpKSAmICgoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2Vy Lk9wdGlvbiAtIDYxKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiAtIDYxKSkg fCAoMQ0KPiA8PCAoVmZyU3ludGF4UGFyc2VyLkRlZmF1bHQgLSA2MSkpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5TdXBwcmVzc0lmIC0gNjEpKQ0KPiB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu RGlzYWJsZUlmIC0gNjEpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50 SWYgLSA2MSkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5XYXJuaW5nSWYgLQ0KPiA2MSkpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5Ob1N1Ym1pdElmIC0gNjEpKSkpICE9IDApIG9yICgoKChf bGEgLSAxNDQpKSAmDQo+IH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDE0NCkpICYgKCgx IDw8IChWZnJTeW50YXhQYXJzZXIuSW1hZ2UgLSAxNDQpKSB8ICgxDQo+IDw8IChWZnJTeW50YXhQ YXJzZXIuTG9ja2VkIC0gMTQ0KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlZhbHVlIC0gMTQ0 KSkgfCAoMQ0KPiA8PCAoVmZyU3ludGF4UGFyc2VyLlJlYWQgLSAxNDQpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuV3JpdGUgLSAxNDQpKSB8ICgxDQo+IDw8IChWZnJTeW50YXhQYXJzZXIuUmVm cmVzaCAtIDE0NCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmljZQ0KPiAt IDE0NCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxNDQpKSkpICE9IDApIG9y DQo+IF9sYT09VmZyU3ludGF4UGFyc2VyLlJlZnJlc2hHdWlkOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTU3Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudFF1ZXN0aW9uT3B0aW9uKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE1NzgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAg IGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3Mg VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 UXVlc3Rpb25UYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdD b250ZQ0KPiB4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudFF1ZXN0aW9uT3B0aW9uVGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uVGENCj4gZ0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlz aXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZy U3RhdGVtZW50UXVlc3Rpb25PcHRpb24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb24oc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbihzZWxmKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFF1 ZXN0aW9uT3B0aW9uQ29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0K PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTgwLCBzZWxmLlJVTEVfdmZyU3Rh dGVtZW50UXVlc3Rpb25PcHRpb24pDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE1ODENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EaXNh YmxlSWYsIFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZiwNCj4gVmZyU3ludGF4UGFyc2Vy Lldhcm5pbmdJZiwgVmZyU3ludGF4UGFyc2VyLk5vU3VibWl0SWYsDQo+IFZmclN5bnRheFBhcnNl ci5JbWFnZSwgVmZyU3ludGF4UGFyc2VyLkxvY2tlZCwgVmZyU3ludGF4UGFyc2VyLlJlZnJlc2gs DQo+IFZmclN5bnRheFBhcnNlci5WYXJzdG9yZURldmljZSwgVmZyU3ludGF4UGFyc2VyLkd1aWRP cCwNCj4gVmZyU3ludGF4UGFyc2VyLlJlZnJlc2hHdWlkXToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTU3OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudFF1ZXN0aW9uVGFnKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PcHRpb24sIFZmclN5bnRh eFBhcnNlci5HcmF5T3V0SWYsDQo+IFZmclN5bnRheFBhcnNlci5EZWZhdWx0LCBWZnJTeW50YXhQ YXJzZXIuU3VwcHJlc3NJZiwgVmZyU3ludGF4UGFyc2VyLlZhbHVlLA0KPiBWZnJTeW50YXhQYXJz ZXIuUmVhZCwgVmZyU3ludGF4UGFyc2VyLldyaXRlXToNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTU4MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dFF1ZXN0aW9uT3B0aW9uVGFnKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxl QWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50Qm9vbGVhblR5cGVDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0 YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQs IGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50Q2hlY2tCb3goc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50Q2hlY2tCb3hDb250ZXh0LA0KPiAwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIHZmclN0YXRlbWVudEFjdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRBY3Rpb25Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRCb29sZWFuVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEJvb2xl YW5UeXBlIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudEJvb2xlYW5UeXBlKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3Rh dGVtZW50Qm9vbGVhblR5cGUoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRCb29sZWFuVHlwZUNvbnRleHQoc2VsZiwN Cj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDE4Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEJvb2xlYW5UeXBlKQ0KPiANCj4g KyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTg1DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRv a2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3hdOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTgzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50Q2hlY2tCb3goKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkFjdGlvbl06DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1ODQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRBY3Rpb24oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFi bGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRDaGVja0JveENvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3Rh dGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfQ0hFQ0tC T1hfT1ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcE9iaiA9IENJZnJDaGVja0JveCgpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05f Tk9STUFMDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MID0gTm9uZSAjIFRva2VuDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5GID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgdmZyUXVlc3Rpb25CYXNlSW5mbyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlv bkJhc2VJbmZvQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRIZWFk ZXJDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0DQo+IENvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRDaGVja0JveChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuRW5kQ2hlY2tCb3gsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9u KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2hlY2tC b3goc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNoZWNrQm94LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckNo ZWNrQm94RmxhZ3Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyQ2hlY2tCb3hGbGFnc0NvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBLZXkoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLktleSwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRDaGVja0JveA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudENoZWNrQm94IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudENoZWNrQm94KHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgdmZyU3RhdGVtZW50Q2hlY2tCb3goc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDaGVja0JveENvbnRleHQo c2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDE4NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudENoZWNrQm94KQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4Nw0KPiANCj4gKyAgICAgICAgICAgIGxv Y2FsY3R4LkwgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DaGVja0JveCkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU4OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZy UXVlc3Rpb25CYXNlSW5mbyhsb2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE1ODkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudEhlYWRlcihsb2NhbGN0eC5PcE9iaikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTU5MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNTk2DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZm clN5bnRheFBhcnNlci5GTEFHUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE1OTENCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTU5Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5Mw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnZmckNoZWNrQm94RmxhZ3MoKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTU5NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTYwMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuS2V5Og0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTU5OA0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNTk5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NjAwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MDENCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MDQNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5O b2RlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjA1DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kQ2hlY2tCb3gpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MDYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyQ2hlY2tCb3hGbGFnc0NvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50 PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuTEZsYWdzID0gMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSEZs YWdzID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGNoZWNrYm94RmxhZ3NGaWVsZChz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZm clN5bnRheFBhcnNlci5DaGVja2JveEZsYWdzRmllbGRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkNoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQsaSkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP cikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyQ2hlY2tCb3hGbGFncw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckNoZWNr Qm94RmxhZ3MiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyQ2hlY2tCb3hGbGFncyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckNoZWNrQm94 RmxhZ3Moc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5WZnJDaGVja0JveEZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYu c3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMTg2LCBzZWxm LlJVTEVfdmZyQ2hlY2tCb3hGbGFncykNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRv a2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE2MDgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNoZWNrYm94RmxhZ3NGaWVsZCgpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MDkNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYxMA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLmNoZWNrYm94RmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNjE1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGNsYXNzIENoZWNrYm94RmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFy ZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4g DQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuTEZsYWcgPSAwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5IRmxhZyA9IDANCj4g DQo+ICsgICAgICAgICAgICBzZWxmLkQgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLk0gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1i ZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEZWZhdWx0 RmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuRGVmYXVsdEZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg TWFudWZhY3R1cmluZ0ZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIENoZWNrQm94RGVmYXVsdEZsYWcoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNoZWNrQm94RGVm YXVsdEZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2hlY2tCb3hEZWZhdWx0 TWZnRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuQ2hlY2tCb3hEZWZhdWx0TWZnRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBxdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29udGUNCj4geHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2NoZWNrYm94RmxhZ3NGaWVsZA0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdENo ZWNrYm94RmxhZ3NGaWVsZCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGVja2JveEZsYWdzRmllbGQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBj aGVja2JveEZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5DaGVja2JveEZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAxODgsIHNlbGYuUlVMRV9jaGVja2JveEZsYWdzRmllbGQpDQo+IA0KPiArICAgICAgICB0 cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MjINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tl biA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5OdW1iZXJdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNjE2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EZWZhdWx0RmxhZ106DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9j YWxjdHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRlZmF1bHRGbGFnKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLk1hbnVmYWN0dXJpbmdGbGFnXToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTYxOA0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5NID0g c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWFudWZhY3R1cmluZ0ZsYWcpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuQ2hlY2tCb3hEZWZhdWx0RmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE2MTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ2hlY2tCb3hEZWZhdWx0RmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5D aGVja0JveERlZmF1bHRNZmdGbGFnXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTYyMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DaGVja0JveERlZmF1bHRNZmdGbGFnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0 aXZlRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2Vy LlJlc2V0UmVxdWlyZWRGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRG bGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLlJl YWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLA0KPiBWZnJTeW50YXhQ YXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgNikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE2MjENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmll bGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2Vs ZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBWZnJTdGF0ZW1lbnRBY3Rpb25Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0FDVElPTl9PUCkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLk9wT2JqID0gQ0lmckFjdGlvbigpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5R VHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fTk9STUFMDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQWN0aW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5BY3Rpb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rp b25IZWFkZXJDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Q29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb25maWcoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbmZpZywgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4s IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl biwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvblRh Z0xpc3Qoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0Q28N Cj4gbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRBY3Rp b24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVuZEFjdGlvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1p Y29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBG TEFHUyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyQWN0 aW9uRmxhZ3Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyQWN0aW9uRmxhZ3NDb250ZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1l bnRBY3Rpb24NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRBY3Rpb24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50QWN0aW9uKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgdmZyU3RhdGVtZW50QWN0aW9uKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50QWN0aW9uQ29udGV4 dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMTkwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50QWN0aW9uKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTYyNA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkFjdGlvbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTYyNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIo bG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNjI2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MzINCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLkZMQUdTOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTYyNw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5G TEFHUykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MjgNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2MjkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi52ZnJBY3Rpb25GbGFncygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNjMwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxNjM0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29u ZmlnKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM1DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTYzNg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NjM3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBh cmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjM4DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNjM5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTY0MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjQxDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3QobG9jYWxjdHguTm9kZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY0Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZEFjdGlvbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTY0Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBjbGFzcyBWZnJBY3Rpb25GbGFnc0NvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuSEZsYWdzID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjdGlvbkZsYWdzRmll bGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 cyhWZnJTeW50YXhQYXJzZXIuQWN0aW9uRmxhZ3NGaWVsZENvbnRleHQpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuQWN0aW9uRmxhZ3NGaWVsZENvbnRleHQsaSkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP cikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyQWN0aW9uRmxhZ3MNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJBY3Rpb25G bGFncyIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJB Y3Rpb25GbGFncyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckFjdGlvbkZsYWdzKHNl bGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyQWN0aW9uRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4g DQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxOTIsIHNlbGYuUlVMRV92ZnJB Y3Rpb25GbGFncykNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4g DQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQo bG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NDUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmFjdGlvbkZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNjUwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4g DQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjQ2DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NDcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5hY3Rpb25GbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE2NTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0K PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZp bmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgQWN0 aW9uRmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAw DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENvbnRlDQo+IHh0LDApDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9hY3Rpb25GbGFnc0ZpZWxkDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QWN0aW9u RmxhZ3NGaWVsZCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRBY3Rpb25GbGFnc0ZpZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgYWN0aW9uRmxh Z3NGaWVsZChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLkFjdGlvbkZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2Vs Zi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAxOTQsIHNl bGYuUlVMRV9hY3Rpb25GbGFnc0ZpZWxkKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjU1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIu TnVtYmVyXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY1Mw0KPiANCj4g KyAgICAgICAgICAgICAgICBsb2NhbGN0eC5OID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAg ZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVyYWN0aXZlRmxhZywNCj4gVmZyU3lu dGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFn LA0KPiBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJz ZXIuTGF0ZUNoZWNrRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3lu dGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxh Z106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTQNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1l bnROdW1lcmljVHlwZUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5v bmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnROdW1lcmljKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE51bWVyaWNDb250ZXh0LDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50T25lT2Yoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50T25lT2ZDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljVHlwZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm clN0YXRlbWVudE51bWVyaWNUeXBlIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudE51bWVyaWNUeXBlKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgdmZyU3RhdGVtZW50TnVtZXJpY1R5cGUoc2VsZik6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnROdW1lcmljVHlw ZUNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAg c2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDE5Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE51bWVy aWNUeXBlKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjU5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTnVtZXJpY106DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTcNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnROdW1lcmljKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVPZl06 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NTgNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRPbmVPZigpDQo+IA0KPiArICAgICAgICAgICAgICAg IHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy YWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudE51bWVyaWND b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBp bnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklf SUZSX05VTUVSSUNfT1ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcE9iaiA9IENJZnJOdW1l cmljKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5R VUVTVElPTl9OT1JNQUwNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1lcmljKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1lcmljLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclF1ZXN0aW9uQmFzZUluZm8oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyUXVlc3Rpb25CYXNlSW5mb0NvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRIZWFkZXIoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU2V0TWluTWF4U3Rl cChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTZXRNaW5NYXhTdGVwQ29udGV4dCwwKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QN Cj4gQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuZE51 bWVyaWMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkVuZE51bWVyaWMsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg U2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgdmZyTnVtZXJpY0ZsYWdzKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmck51bWVyaWNGbGFnc0Nv bnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBLZXkoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LktleSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJl ciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnROdW1l cmljDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyU3RhdGVtZW50TnVtZXJpYyIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnROdW1lcmljKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgdmZyU3RhdGVtZW50TnVtZXJpYyhzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE51bWVyaWNDb250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50 ZXJSdWxlKGxvY2FsY3R4LCAxOTgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnROdW1lcmljKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY2MQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWVyaWMpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE2NjINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uQmFzZUlu Zm8obG9jYWxjdHguT3BPYmosIGxvY2FsY3R4LlFUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNjYzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRIZWFk ZXIobG9jYWxjdHguT3BPYmopDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjQN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY3MA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu RkxBR1M6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjY1DQo+IA0KPiAr ICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5G TEFHUykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjYNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NjcNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi52ZnJOdW1lcmljRmxhZ3MoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTY2OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTY3Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuS2V5Og0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTY3Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5LZXkpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NjczDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRf XzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjc0DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzUNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2NzgNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnZmclNldE1pbk1heFN0ZXAobG9jYWxjdHguT3BPYmopDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE2NzkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0 aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNjgwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RW5kTnVtZXJpYykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY4MQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVy biBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTZXRNaW5N YXhTdGVwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIE9wT2JqPU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcE9i aiA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4xID0gTm9uZSAjIFRva2VuDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5JID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5OMiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQSA9IE5vbmUg IyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUyA9IE5vbmUgIyBUb2tlbg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBPcE9iag0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIE1pbmltdW0oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLk1pbmltdW0sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBNYXhpbXVtKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXhpbXVtLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg U3RlcChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU3RlcCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOZWdhdGl2 ZShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJz ZXIuTmVnYXRpdmUpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk5lZ2F0aXZlLCBpKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU2V0TWluTWF4U3RlcA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclNldE1pbk1heFN0ZXAiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0VmZyU2V0TWluTWF4U3RlcChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZm clNldE1pbk1heFN0ZXAoc2VsZiwgT3BPYmopOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU2V0TWluTWF4U3RlcENvbnRleHQoc2VsZiwgc2Vs Zi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBPcE9iaikNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJS dWxlKGxvY2FsY3R4LCAyMDAsIHNlbGYuUlVMRV92ZnJTZXRNaW5NYXhTdGVwKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY4Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk1pbmltdW0pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE2ODQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNjg2DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5OZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2 ODUNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTjEgPSBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5OZWdhdGl2ZSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTY4OA0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LkkgPSBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE2ODkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY5MA0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1heGltdW0pDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2OTENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx NjkzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAg ICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5OZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE2OTINCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTjIg PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OZWdhdGl2ZSkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTY5NQ0KPiANCj4gKyAgICAgICAgICAg IGxvY2FsY3R4LkEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2OTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTcwMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RlcDoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE2OTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RlcCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE2OTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE2OTkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgbG9jYWxjdHguUyA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51 bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MDANCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0K PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg Y2xhc3MgVmZyTnVtZXJpY0ZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2Vy UnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5I RmxhZ3MgPSAwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MRmxhZ3MgPSAwDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5Jc0Rpc3BsYXlTcGVjaWZpZWQgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIG51bWVyaWNGbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLk51bWVyaWNGbGFn c0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5OdW1lcmljRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfdmZyTnVtZXJpY0ZsYWdzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0VmZyTnVtZXJpY0ZsYWdzIiApOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck51bWVyaWNGbGFncyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIHZmck51bWVyaWNGbGFncyhzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmck51bWVyaWNGbGFnc0NvbnRleHQo c2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDIwMiwgc2VsZi5SVUxFX3Zmck51bWVyaWNGbGFncykNCj4gDQo+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MDMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm51 bWVyaWNGbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcwOA0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hp bGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTcwNA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzA1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubnVtZXJpY0ZsYWdzRmllbGQo KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcxMA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBOdW1lcmljRmxhZ3NGaWVsZENvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9r aW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5Jc1NldFR5cGUgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSXNEaXNw bGF5U3BlY2lmaWVkID0gRmFsc2UNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMg VG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1lcmljU2l6ZU9uZShzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVt ZXJpY1NpemVPbmUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtZXJpY1NpemVU d28oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk51bWVyaWNTaXplVHdvLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE51bWVyaWNTaXplRm91cihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVGb3VyLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIE51bWVyaWNTaXplRWlnaHQoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRWlnaHQs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGlzUGxheUludERlYyhzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGlz UGxheUludERlYywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEaXNQbGF5VUludERl YyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRGlzUGxheVVJbnREZWMsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg RGlzUGxheVVJbnRIZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRpc1BsYXlVSW50SGV4LCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5RdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250ZQ0KPiB4dCwwKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfbnVtZXJpY0ZsYWdzRmllbGQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXROdW1l cmljRmxhZ3NGaWVsZCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXROdW1lcmljRmxhZ3NGaWVsZChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIG51bWVy aWNGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuTnVtZXJpY0ZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwN Cj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAy MDQsIHNlbGYuUlVMRV9udW1lcmljRmxhZ3NGaWVsZCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyMA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLk51bWJlcl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTEN Cj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAg ICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZU9uZV06DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTINCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVPbmUpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVUd29dOg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNzEzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWVyaWNTaXplVHdvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWVyaWNT aXplRm91cl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgNCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTQNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVG b3VyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRWlnaHRdOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzE1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWVyaWNTaXplRWlnaHQpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuRGlzUGxheUludERlY106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE3MTYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuRGlzUGxheUludERlYykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5EaXNQbGF5VUludERlY106 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNykN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MTcNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGlzUGxheVVJbnREZWMpDQo+IA0K PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuRGlzUGxheVVJbnRIZXhdOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNzE4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkRpc1BsYXlVSW50SGV4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNz DQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludGVy YWN0aXZlRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3ludGF4UGFy c2VyLlJlc2V0UmVxdWlyZWRGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0UmVxdWly ZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywNCj4gVmZyU3ludGF4UGFyc2Vy LlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLA0KPiBWZnJTeW50 YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgOSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE3MTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRlckZsYWdz RmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24o c2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfT05FX09GX09QKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuT3BPYmogPSBDSWZyT25lT2YoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu UVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuRiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9u ZU9mKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5PbmVPZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJRdWVz dGlvbkJhc2VJbmZvKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uQmFzZUluZm9Db250 ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50 SGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEhlYWRlckNvbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1O b25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QNCj4gQ29udGV4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuZE9uZU9mKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRPbmVPZiwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJPbmVvZkZsYWdzRmllbGQoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChW ZnJTeW50YXhQYXJzZXIuVmZyT25lb2ZGbGFnc0ZpZWxkQ29udGV4dCwwKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclNldE1pbk1heFN0ZXAoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU2V0TWluTWF4U3RlcENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRPbmVPZg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudE9uZU9m IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRl bWVudE9uZU9mKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50T25lT2Yo c2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRPbmVPZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIwNiwgc2VsZi5SVUxF X3ZmclN0YXRlbWVudE9uZU9mKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcy Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9uZU9mKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzIzDQo+IA0KPiArICAgICAgICAgICAg c2VsZi52ZnJRdWVzdGlvbkJhc2VJbmZvKGxvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTcyNA0KPiANCj4gKyAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50SGVhZGVyKGxvY2FsY3R4Lk9wT2JqKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNzI1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MzEN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlm IF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTcyNg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNzI3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzI4DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyT25lb2ZGbGFnc0ZpZWxkKCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MjkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk1p bmltdW06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzMzDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYudmZyU2V0TWluTWF4U3RlcChsb2NhbGN0eC5PcE9iaikNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTczNg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2Fs Y3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3MzcNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRPbmVPZikNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTczOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJPbmVvZkZsYWdzRmllbGRDb250ZXh0KFBhcnNl clJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm LCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRl OmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLkhGbGFncyA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkxGbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBudW1lcmljRmxhZ3NGaWVs ZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRz KFZmclN5bnRheFBhcnNlci5OdW1lcmljRmxhZ3NGaWVsZENvbnRleHQpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTnVtZXJpY0ZsYWdzRmllbGRDb250ZXh0LGkp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNl T3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3Zmck9uZW9mRmxhZ3NGaWVsZA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmck9u ZW9mRmxhZ3NGaWVsZCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRWZnJPbmVvZkZsYWdzRmllbGQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJP bmVvZkZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJPbmVvZkZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAyMDgsIHNlbGYuUlVMRV92ZnJPbmVvZkZsYWdzRmllbGQpDQo+IA0KPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAxNzQwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5udW1lcmljRmxhZ3NG aWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NDUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBf bGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE3NDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc0Mg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm51bWVyaWNGbGFnc0ZpZWxkKCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NDcNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50U3RyaW5nVHlwZUNvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3Rh dGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdHJpbmcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50U3RyaW5nQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudFBhc3N3b3JkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFBh c3N3b3JkQ29udGV4dCwNCj4gMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRh eFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN0cmluZ1R5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdHJpbmdU eXBlIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0 YXRlbWVudFN0cmluZ1R5cGUoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1l bnRTdHJpbmdUeXBlKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBW ZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RyaW5nVHlwZUNvbnRleHQoc2VsZiwNCj4gc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDIxMCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0cmluZ1R5cGUpDQo+IA0KPiArICAgICAg ICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NTANCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0 b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5TdHJpbmddOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxNzQ4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50U3RyaW5n KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5QYXNzd29yZF06DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE3NDkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRQYXNzd29yZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4 Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0cmluZ0NvbnRleHQoUGFyc2VyUnVsZUNv bnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl ciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0x KToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdT dGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfU1RSSU5HX09QKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyU3RyaW5nKCkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUwNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkYgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLk1pbiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTWF4ID0gTm9u ZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJp bmcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25IZWFkZXJDb250ZXh0LDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1i ZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QNCj4gQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuZFN0cmluZyhz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuRW5kU3RyaW5nLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xv bihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1pblNp emUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk1pblNpemUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTWF4U2l6 ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTWF4U2l6ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdHJp bmdGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0cmluZ0ZsYWdzRmllbGRDb250 ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgS2V5KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5L ZXksIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAw KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3Ry aW5nDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0VmZyU3RhdGVtZW50U3RyaW5nIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0cmluZyhzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIHZmclN0YXRlbWVudFN0cmluZyhzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0cmluZ0NvbnRleHQoc2Vs Ziwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1 bGUobG9jYWxjdHgsIDIxMiwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN0cmluZykNCj4gDQo+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NTINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmcpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE3NTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9uSGVhZGVyKGxvY2Fs Y3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTc1NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzYwDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5GTEFHUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NTUN Cj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1Ng0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc1Nw0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnZmclN0cmluZ0ZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTc1OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTc2Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuS2V5Og0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc2Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxNzYzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY0 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NjUNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NjgNCj4gDQo+ICsgICAg ICAgICAgICBsb2NhbGN0eC5NaW4gPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NaW5TaXpl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzY5DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTc3MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc3MQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzcyDQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguTWF4ID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4U2l6ZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTc3Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3 NzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NzUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTc3Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVl c3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE3NzcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5FbmRTdHJpbmcpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3NzgNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0K PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RyaW5n RmxhZ3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSEZsYWdzID0gMA0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuTEZsYWdzID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHN0cmluZ0ZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuU3RyaW5nRmxhZ3NGaWVsZENv bnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU3RyaW5n RmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3Ry aW5nRmxhZ3NGaWVsZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmclN0cmluZ0ZsYWdzRmllbGQiICk6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RyaW5nRmxhZ3NGaWVsZChzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNp dG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0cmluZ0ZsYWdzRmllbGQoc2VsZik6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdHJpbmdGbGFnc0Zp ZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAg ICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjE0LCBzZWxmLlJVTEVfdmZyU3RyaW5nRmxhZ3NG aWVsZCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsg ICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODANCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0cmluZ0ZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxNzg1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzgxDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE3ODINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdHJp bmdGbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODcN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgU3RyaW5nRmxh Z3NGaWVsZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSEZsYWcgPSAwDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5MRmxhZyA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk4g PSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBxdWVzdGlvbmhlYWRlckZs YWdzRmllbGQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkQ29u dGUNCj4geHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX3N0cmluZ0ZsYWdzRmllbGQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTdHJpbmdGbGFnc0ZpZWxkIiApOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFN0cmluZ0ZsYWdzRmllbGQoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBzdHJpbmdGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuU3RyaW5nRmxhZ3NGaWVsZENv bnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5lbnRlclJ1bGUobG9jYWxjdHgsIDIxNiwgc2VsZi5SVUxFX3N0cmluZ0ZsYWdzRmllbGQpDQo+ IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3OTEN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAg aWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1iZXJdOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxNzg4DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk4g PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuVF9fOF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE3ODkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fOCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5JbnRlcmFjdGl2ZUZsYWcsDQo+IFZmclN5bnRheFBhcnNlci5OVkFj Y2Vzc0ZsYWcsIFZmclN5bnRheFBhcnNlci5SZXNldFJlcXVpcmVkRmxhZywNCj4gVmZyU3ludGF4 UGFyc2VyLlJlY29ubmVjdFJlcXVpcmVkRmxhZywgVmZyU3ludGF4UGFyc2VyLkxhdGVDaGVja0Zs YWcsDQo+IFZmclN5bnRheFBhcnNlci5SZWFkT25seUZsYWcsIFZmclN5bnRheFBhcnNlci5PcHRp b25Pbmx5RmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLlJlc3RTdHlsZUZsYWddOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzkwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJhaXNl IE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50UGFzc3dvcmRDb250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZv a2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZS X1BBU1NXT1JEX09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyUGFzc3dv cmQoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFV RVNUSU9OX05PUk1BTA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRiA9IE5vbmUgIyBUb2tlbg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuTWluID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5NYXggPSBOb25lICMgVG9rZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBQYXNzd29yZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgdmZyUXVlc3Rpb25IZWFkZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25IZWFk ZXJDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudFF1ZXN0aW9uT3B0aW9uTGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRR dWVzdGlvbk9wdGlvbkxpc3QNCj4gQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIEVuZFBhc3N3b3JkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRQYXNzd29yZCwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBNaW5TaXplKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NaW5TaXplLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIE1heFNpemUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1heFNpemUsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgdmZyUGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclBhc3N3b3JkRmxhZ3NGaWVsZENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBLZXkoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLktleSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBFbmNvZGluZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5jb2RpbmcsIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50UGFzc3dvcmQNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRQYXNz d29yZCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJT dGF0ZW1lbnRQYXNzd29yZChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVu dFBhc3N3b3JkKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UGFzc3dvcmRDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAy MTgsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRQYXNzd29yZCkNCj4gDQo+ICsgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE3OTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5QYXNzd29yZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5NA0K PiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIobG9jYWxjdHguT3BPYmos IGxvY2FsY3R4LlFUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzk1DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MDENCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZM QUdTOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTc5Ng0KPiANCj4gKyAg ICAgICAgICAgICAgICBsb2NhbGN0eC5GID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxB R1MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzk3DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxNzk4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYudmZyUGFzc3dvcmRGbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE3OTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDE4MDcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLktleToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE4MDMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuS2V5KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTgwNA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgwNQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODA2DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODA5DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguTWluID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWluU2l6ZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgxMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE4MTENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5O dW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MTINCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTgxMw0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk1heCA9 IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1heFNpemUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE4MTQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODE1DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODE2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE4MjENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkVuY29kaW5nOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTgxNw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5FbmNvZGluZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE4MTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MTkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyMA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTgyMw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MjQNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRQYXNzd29yZCkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTgyNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBjbGFzcyBWZnJQYXNzd29yZEZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1 bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmlu dD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkhGbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBwYXNzd29yZEZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuUGFzc3dvcmRGbGFnc0ZpZWxkQ29u dGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5QYXNzd29y ZEZsYWdzRmllbGRDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkg aXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZm clN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJp dFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclBh c3N3b3JkRmxhZ3NGaWVsZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclBhc3N3b3JkRmxhZ3NGaWVsZCIgKToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJQYXNzd29yZEZsYWdzRmllbGQoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJQYXNzd29yZEZsYWdzRmllbGQoc2VsZik6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJQYXNz d29yZEZsYWdzRmllbGRDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4g DQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMjAsIHNlbGYuUlVMRV92ZnJQ YXNzd29yZEZsYWdzRmllbGQpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0 eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODI3 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXNzd29yZEZsYWdzRmllbGQoKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODMyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQu TEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRX aXNlT3I6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODI4DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MjkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5wYXNzd29yZEZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTgzNA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBQYXNzd29yZEZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQ YXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiAr ICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkhGbGFnID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHF1ZXN0aW9uaGVhZGVyRmxh Z3NGaWVsZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250 ZQ0KPiB4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJ bmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJV TEVfcGFzc3dvcmRGbGFnc0ZpZWxkDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0UGFzc3dvcmRGbGFnc0ZpZWxkIiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFBhc3N3b3JkRmxhZ3NGaWVsZChzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHBhc3N3b3JkRmxhZ3NGaWVsZChzZWxmKToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkRmxh Z3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIyMiwgc2VsZi5SVUxFX3Bhc3N3b3JkRmxh Z3NGaWVsZCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTgzNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk51bWJlcl06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4MzUNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LkludGVyYWN0aXZlRmxhZywNCj4gVmZyU3ludGF4UGFyc2VyLk5WQWNjZXNzRmxhZywgVmZyU3lu dGF4UGFyc2VyLlJlc2V0UmVxdWlyZWRGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVjb25uZWN0 UmVxdWlyZWRGbGFnLCBWZnJTeW50YXhQYXJzZXIuTGF0ZUNoZWNrRmxhZywNCj4gVmZyU3ludGF4 UGFyc2VyLlJlYWRPbmx5RmxhZywgVmZyU3ludGF4UGFyc2VyLk9wdGlvbk9ubHlGbGFnLA0KPiBW ZnJTeW50YXhQYXJzZXIuUmVzdFN0eWxlRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE4MzYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbmhlYWRl ckZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNl cHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdENvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50 PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tp bmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfT1JERVJFRF9MSVNU X09QKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuT3BPYmogPSBDSWZyT3JkZXJlZExpc3QoKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9O X05PUk1BTA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTSA9IE5vbmUgIyBUb2tlbg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuRiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIE9yZGVyZWRMaXN0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkhlYWRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJR dWVzdGlvbkhlYWRlckNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9u TGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QN Cj4gQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVuZExp c3Qoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkVuZExpc3QsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNv bG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVt YmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyT3Jk ZXJlZExpc3RGbGFncyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJPcmRlcmVkTGlzdEZsYWdzQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE1heENvbnRhaW5l cnMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLk1heENvbnRhaW5lcnMsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg RkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyU3RhdGVtZW50T3JkZXJlZExpc3QNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCIg KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1l bnRPcmRlcmVkTGlzdChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudE9y ZGVyZWRMaXN0KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50T3JkZXJlZExpc3RDb250ZXh0KHNlbGYsDQo+IHNlbGYu X2N0eCwgc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4 LCAyMjQsIHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCkNCj4gDQo+ICsgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE4MzkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTg0MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25IZWFkZXIobG9jYWxj dHguT3BPYmosIGxvY2FsY3R4LlFUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxODQxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NDYNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4 UGFyc2VyLk1heENvbnRhaW5lcnM6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxODQyDQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4Lk0gPSBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5NYXhDb250YWluZXJzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTg0Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg0NA0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODQ1DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODUzDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRh eFBhcnNlci5GTEFHUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NDgN Cj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguRiA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg0OQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg1MA0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnZmck9yZGVyZWRMaXN0RmxhZ3MoKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTg1MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTg1NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50 UXVlc3Rpb25PcHRpb25MaXN0KGxvY2FsY3R4Lk5vZGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE4NTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5FbmRMaXN0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODU3DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiAN Cj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmck9yZGVy ZWRMaXN0RmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3Vw ZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkhGbGFncyA9IDAN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkxGbGFncyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBvcmRlcmVkbGlzdEZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuT3JkZXJlZGxpc3RG bGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBh cnNlci5PcmRlcmVkbGlzdEZsYWdzRmllbGRDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3Zmck9yZGVyZWRMaXN0RmxhZ3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJPcmRlcmVkTGlzdEZsYWdzIiApOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmck9yZGVyZWRMaXN0 RmxhZ3Moc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJPcmRlcmVkTGlzdEZsYWdzKHNl bGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyT3JkZXJlZExpc3RGbGFnc0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIyNiwgc2VsZi5SVUxF X3Zmck9yZGVyZWRMaXN0RmxhZ3MpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx ODU5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5vcmRlcmVkbGlzdEZsYWdzRmllbGQoKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODY0DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3I6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODYwDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP cikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NjENCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5vcmRlcmVkbGlzdEZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTg2Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBjbGFzcyBPcmRlcmVkbGlzdEZsYWdzRmllbGRDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLkhGbGFnID0gMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTEZsYWcg PSAwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVW5pUXVlRmxhZyhzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVW5pUXVlRmxh ZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOb0VtcHR5RmxhZyhzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTm9F bXB0eUZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgcXVlc3Rpb25oZWFkZXJG bGFnc0ZpZWxkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZENv bnRlDQo+IHh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV9vcmRlcmVkbGlzdEZsYWdzRmllbGQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBh Y2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRPcmRlcmVkbGlzdEZsYWdzRmllbGQiICk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0T3JkZXJlZGxpc3RGbGFn c0ZpZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgb3JkZXJlZGxpc3RGbGFnc0ZpZWxk KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuT3JkZXJlZGxpc3RGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYu c3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjI4LCBzZWxm LlJVTEVfb3JkZXJlZGxpc3RGbGFnc0ZpZWxkKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODcxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuTnVtYmVyXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg2Nw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuVW5pUXVlRmxhZ106DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE4NjgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVW5pUXVlRmxhZykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiAN Cj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Ob0VtcHR5Rmxh Z106DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NjkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTm9FbXB0eUZsYWcpDQo+IA0K PiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuSW50ZXJhY3RpdmVGbGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuTlZB Y2Nlc3NGbGFnLCBWZnJTeW50YXhQYXJzZXIuUmVzZXRSZXF1aXJlZEZsYWcsDQo+IFZmclN5bnRh eFBhcnNlci5SZWNvbm5lY3RSZXF1aXJlZEZsYWcsIFZmclN5bnRheFBhcnNlci5MYXRlQ2hlY2tG bGFnLA0KPiBWZnJTeW50YXhQYXJzZXIuUmVhZE9ubHlGbGFnLCBWZnJTeW50YXhQYXJzZXIuT3B0 aW9uT25seUZsYWcsDQo+IFZmclN5bnRheFBhcnNlci5SZXN0U3R5bGVGbGFnXToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3MA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlz ZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudERhdGVDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0RB VEVfT1ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcE9iaiA9IENJZnJEYXRlKCkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9EQVRF DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5WYWwgPSBFRklfSUZSX1RZUEVfVkFMVUUoKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuRjEgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkYyID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGF0 ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRGF0ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmREYXRlKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5FbmREYXRlLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclF1ZXN0 aW9uSGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29udGV4dCww KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdA0KPiBDb250ZXh0LDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgWWVhcihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuWWVhciwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBWYXJJZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuVmFySWQpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlZhcklkLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lk ZW50aWZpZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3lu dGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0cmluZ0lkZW50aWZpZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRG90KHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5E b3QpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRvdCwgaSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBQcm9tcHQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLlByb21wdCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuUHJvbXB0LCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rva2VuKHNl bGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5T dHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4sIGkp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50PU5vbmUp Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu TnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwg aTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgSGVscChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuSGVscCkNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuSGVscCwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBtaW5NYXhEYXRl U3RlcERlZmF1bHQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBp cyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuTWluTWF4RGF0ZVN0ZXBEZWZhdWx0Q29udGUNCj4g eHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTWluTWF4RGF0 ZVN0ZXBEZWZhdWx0Q29udGV4dA0KPiAsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBNb250aChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTW9udGgsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgRGF5KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5EYXksIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyRGF0 ZUZsYWdzKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckRhdGVGbGFnc0NvbnRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJ ZihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRz KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZkNvbg0KPiB0ZXh0KQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudElu Y29uc2lzdGVudElmQ29udA0KPiBleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnREYXRlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50RGF0ZSIgKToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnREYXRl KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50RGF0ZShzZWxmKToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudERhdGVDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyMzAsIHNlbGYuUlVMRV92ZnJTdGF0ZW1l bnREYXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4g KyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3Mw0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5NjQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5Qcm9t cHQsIFZmclN5bnRheFBhcnNlci5OYW1lLA0KPiBWZnJTeW50YXhQYXJzZXIuVmFySWQsIFZmclN5 bnRheFBhcnNlci5RdWVzdGlvbklkXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE4NzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkhlYWRlcihs b2NhbGN0eC5PcE9iaiwgbG9jYWxjdHguUVR5cGUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxODc1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg4 MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg3Ng0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgbG9jYWxjdHguRjEgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODc3DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4NzgNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYudmZyRGF0ZUZsYWdzKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxODc5DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE4ODMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3QobG9jYWxjdHguTm9kZSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5ZZWFyXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4ODUNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuWWVhcikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4ODYNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFySWQpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxODg3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxODg4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxODg5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkRvdCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTANCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmll cikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTENCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODkyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlByb21wdCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE4OTMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4 OTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Ry aW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxODk1DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE4OTYNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTg5Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTg5OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE4OTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu SGVscCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MDANCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MDENCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxOTAyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5MDMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkw NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9z ZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkwNQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MDYNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5taW5NYXhEYXRlU3RlcERlZmF1bHQobG9jYWxjdHguVmFsLmRhdGUsIDApDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTA3DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk1vbnRoKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTkwOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE5MDkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTANCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRp ZmllcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTENCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkxMg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkxMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDE5MTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkx NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkxNg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MTcNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTkxOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAxOTE5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTIwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkyMQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkyMg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTkyMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE5MjQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkyNQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI2DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTI3DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMTkyOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1pbk1heERh dGVTdGVwRGVmYXVsdChsb2NhbGN0eC5WYWwuZGF0ZSwgMSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5MjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRGF5KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MTkzMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5W YXJJZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MzENCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MzINCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MzMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTkzNA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMTkzNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5MzYNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTkzNw0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMTkzOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDE5MzkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTk0MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQxDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4p DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTQyDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTk0NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0NQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdU b2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NDYNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk0Nw0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxOTQ4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAxOTQ5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1 MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1pbk1heERhdGVTdGVwRGVmYXVsdChsb2Nh bGN0eC5WYWwuZGF0ZSwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5 NTYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NTENCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIGxvY2FsY3R4LkYyID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRkxBR1MpDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk1Mg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTUzDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLnZmckRhdGVGbGFncygpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMTk1NA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAxOTYxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNl ci5JbmNvbnNpc3RlbnRJZjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAxOTU4DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEluY29u c2lzdGVudElmKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTYz DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxm KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTY2DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRW5kRGF0ZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk2Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBNaW5NYXhEYXRlU3RlcERlZmF1bHRDb250ZXh0KFBh cnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0 YXRlOmludD0tMSwgRGF0ZT1Ob25lLCBLZXlWYWx1ZT1Ob25lKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRGF0ZSA9 IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLktleVZhbHVlID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu RGF0ZSA9IERhdGUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLktleVZhbHVlID0gS2V5VmFsdWUN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBNaW5pbXVtKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NaW5pbXVtLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Q29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4 UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBNYXhpbXVtKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NYXhpbXVtLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0ZXAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0ZXAsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgRGVmYXVsdChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX21pbk1heERhdGVTdGVwRGVmYXVsdA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdE1pbk1h eERhdGVTdGVwRGVmYXVsdCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRNaW5NYXhEYXRlU3RlcERlZmF1bHQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBtaW5NYXhEYXRlU3RlcERlZmF1bHQoc2VsZiwgRGF0ZSwgS2V5VmFsdWUpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTWluTWF4RGF0ZVN0ZXBE ZWZhdWx0Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIERhdGUsIEtleVZh bHVlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzMiwgc2VsZi5S VUxFX21pbk1heERhdGVTdGVwRGVmYXVsdCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAj IFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDE5NjkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5N aW5pbXVtKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTcwDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMTk3MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk3 Mg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTczDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4aW11bSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMTk3NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMTk4MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAg ICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RlcDoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDE5NzcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuU3RlcCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDE5NzgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5NzkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4MA0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4Nw0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu RGVmYXVsdDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5ODMNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRGVmYXVsdCkNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5ODQNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5ODUNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHgu TiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDE5ODYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyRGF0ZUZsYWdzQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MRmxhZ3MgPSAwDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgZGF0ZUZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRGF0ZUZsYWdzRmllbGRD b250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkRhdGVG bGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRX aXNlT3IsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJEYXRl RmxhZ3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQ YXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9y LCAidmlzaXRWZnJEYXRlRmxhZ3MiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyRGF0ZUZsYWdzKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZy RGF0ZUZsYWdzKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyRGF0ZUZsYWdzQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYu c3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjM0LCBzZWxm LlJVTEVfdmZyRGF0ZUZsYWdzKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4g dHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk4 OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZGF0ZUZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAxOTk0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNl T3I6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAxOTkwDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDE5OTENCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5kYXRlRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAxOTk2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNz IERhdGVGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MRmxhZyA9 IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBZZWFyU3VwcHByZXNzRmxhZyhzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuWWVh clN1cHBwcmVzc0ZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTW9udGhTdXBw cmVzc0ZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLk1vbnRoU3VwcHJlc3NGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIERheVN1cHByZXNzRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGF5U3VwcHJlc3NGbGFnLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0b3JhZ2VOb3JtYWxGbGFnKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdG9yYWdl Tm9ybWFsRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdG9yYWdlVGltZUZs YWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLlN0b3JhZ2VUaW1lRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBTdG9yYWdlV2FrZVVwRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RvcmFnZVdha2VVcEZsYWcsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9kYXRlRmxhZ3NGaWVsZA0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdERhdGVGbGFn c0ZpZWxkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdERh dGVGbGFnc0ZpZWxkKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgZGF0ZUZsYWdzRmllbGQo c2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5EYXRlRmxhZ3NGaWVsZENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0K PiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzNiwgc2VsZi5SVUxFX2Rh dGVGbGFnc0ZpZWxkKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0K PiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFs dChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMTk5Nw0KPiAN Cj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAg ICAgaWYgbm90KCgoKChfbGEgLSAxODEpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAt IDE4MSkpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuWWVhclN1cHBwcmVzc0ZsYWcgLSAx ODEpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuTW9udGhTdXBwcmVzc0ZsYWcgLSAxODEp KSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuRGF5U3VwcHJlc3NGbGFnIC0gMTgxKSkgfCAo MSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VOb3JtYWxGbGFnIC0gMTgxKSkgfCAoMSA8 PA0KPiAoVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VUaW1lRmxhZyAtIDE4MSkpIHwgKDEgPDwNCj4g KFZmclN5bnRheFBhcnNlci5TdG9yYWdlV2FrZVVwRmxhZyAtIDE4MSkpKSkgIT0gMCkgb3INCj4g X2xhPT1WZnJTeW50YXhQYXJzZXIuTnVtYmVyKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiANCj4gKyAgICAg ICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAg IGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2Fs Y3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFRpbWVD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBp bnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBWZnJUcmVlTm9kZShFRklf SUZSX1RJTUVfT1ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5PcE9iaiA9IENJZnJUaW1lKCkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElP Tl9USU1FDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5WYWwgPSBFRklfSUZSX1RZUEVfVkFMVUUo KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRjEgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkYyID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgVGltZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuVGltZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRU aW1lKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5FbmRUaW1lLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWlj b2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZm clF1ZXN0aW9uSGVhZGVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uSGVhZGVyQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0KHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdA0KPiBDb250ZXh0LDApDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgSG91cihzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSG91ciwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBWYXJJZChzZWxmLCBpOmludD1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuVmFySWQpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlZhcklkLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0 cmluZ0lkZW50aWZpZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYg aSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMo VmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg RG90KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5Eb3QpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkRvdCwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBQcm9tcHQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlByb21wdCkNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuUHJvbXB0LCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmluZ1Rv a2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9r ZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4p DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4o c2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgSGVscChzZWxmLCBpOmludD1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuSGVscCkNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuSGVscCwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBtaW5N YXhUaW1lU3RlcERlZmF1bHQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuTWluTWF4VGltZVN0ZXBEZWZhdWx0Q29u dGUNCj4geHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTWlu TWF4VGltZVN0ZXBEZWZhdWx0Q29udGV4DQo+IHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBNaW51dGUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1pbnV0ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBTZWNvbmQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlY29uZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiB2ZnJUaW1lRmxhZ3Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyVGltZUZsYWdzQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEluY29uc2lzdGVudElmKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlm IGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElm Q29uDQo+IHRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZDb250DQo+IGV4dCxpKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFRpbWUNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1l bnRUaW1lIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudFRpbWUoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRU aW1lKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50VGltZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0 YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDIzOCwgc2VsZi5S VUxFX3ZmclN0YXRlbWVudFRpbWUpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tl biB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAx OTk5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGltZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA5MA0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLlByb21wdCwgVmZyU3ludGF4UGFyc2VyLk5hbWUsDQo+IFZmclN5bnRheFBhcnNl ci5WYXJJZCwgVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uSWRdOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjAwMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclF1 ZXN0aW9uSGVhZGVyKGxvY2FsY3R4Lk9wT2JqLCBsb2NhbGN0eC5RVHlwZSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMDA3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDAyDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBsb2NhbGN0eC5GMSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDMNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAwNA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi52ZnJUaW1lRmxhZ3MoKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMDUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAwOQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9uT3B0aW9uTGlzdChsb2NhbGN0eC5Ob2RlKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkhvdXJdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjAxMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5Ib3VyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAxMg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMTMNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIwMTQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIwMTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRG90KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjAxNg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5T dHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAx Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21t YSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMTgNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAxOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjAyMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIwMjENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyMg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDIzDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDI0DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjAyNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5IZWxwKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjAyNg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5U X181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyNw0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMjgNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAyOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMDMwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMDMxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAzMg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLm1pbk1heFRpbWVTdGVwRGVmYXVsdChsb2NhbGN0eC5WYWwu dGltZSwgMCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwMzMNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWludXRlKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAzNA0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIwMzUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIwMzYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIwMzcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RG90KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAzOA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVy KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjAzOQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjA0MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA0 Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJp bmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNDMNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA0NA0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDQ1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDQ2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjA0Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5I ZWxwKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA0OA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA0OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIwNTANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjA1MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDUy DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3Nl UGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDUzDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA1NA0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLm1pbk1heFRpbWVTdGVwRGVmYXVsdChsb2NhbGN0eC5WYWwudGltZSwgMSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTUNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2Vjb25kKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjA1Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5WYXJJZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIwNTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTgNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRp ZmllcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNTkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRG90KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2MA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIwNjINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2 Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2NA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNjUNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjA2Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMDY3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MDY4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA2OQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3MA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjA3MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIwNzINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3Mw0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDc0DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDc1DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjA3Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1pbk1heFRp bWVTdGVwRGVmYXVsdChsb2NhbGN0eC5WYWwudGltZSwgMikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIwODINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZM QUdTOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwNzcNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGxvY2FsY3R4LkYyID0gc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA3 OA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDc5DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclRpbWVGbGFncygpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA4MA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDg3DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICB3aGlsZSBf bGE9PVZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZjoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMDg0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEluY29uc2lzdGVudElmKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMDg5DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJs ZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMDkyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RW5kVGltZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA5Mw0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBNaW5NYXhUaW1lU3Rl cERlZmF1bHRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1O b25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgVGltZT1Ob25lLCBLZXlWYWx1ZT1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0 ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuVGltZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLktleVZhbHVl ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTiA9IE5vbmUgIyBUb2tlbg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuVGltZSA9IFRpbWUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLktl eVZhbHVlID0gS2V5VmFsdWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBNaW5pbXVtKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5NaW5pbXVtLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBNYXhpbXVtKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5NYXhpbXVtLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0ZXAoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0 ZXAsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGVmYXVsdChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRGVmYXVs dCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX21pbk1heFRpbWVT dGVwRGVmYXVsdA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdE1pbk1heFRpbWVTdGVwRGVmYXVsdCIgKToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRNaW5NYXhUaW1lU3RlcERlZmF1bHQoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBtaW5NYXhUaW1lU3RlcERlZmF1bHQoc2VsZiwgVGltZSwgS2V5 VmFsdWUpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuTWluTWF4VGltZVN0ZXBEZWZhdWx0Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYu c3RhdGUsIFRpbWUsIEtleVZhbHVlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDI0MCwgc2VsZi5SVUxFX21pbk1heFRpbWVTdGVwRGVmYXVsdCkNCj4gDQo+ICsgICAg ICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIwOTUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5NaW5pbXVtKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMDk2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjA5Nw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjA5OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMDk5DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTWF4aW11bSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEwMA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxMDENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDINCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjEwNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxB KDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuU3RlcDoNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMDMNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RlcCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIxMDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIxMDUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjEwNg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjExMw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xh PT1WZnJTeW50YXhQYXJzZXIuRGVmYXVsdDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIxMDkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRGVmYXVsdCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMTAN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMTENCj4gDQo+ICsgICAgICAg ICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMTINCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAg IGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3Mg VmZyVGltZUZsYWdzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MRmxhZ3MgPSAw DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdGltZUZsYWdzRmllbGQoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuVGltZUZsYWdzRmllbGRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlRpbWVGbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJUaW1lRmxhZ3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJUaW1lRmxhZ3MiICk6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyVGltZUZsYWdzKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgdmZyVGltZUZsYWdzKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyVGltZUZsYWdzQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMjQyLCBzZWxmLlJVTEVfdmZyVGltZUZsYWdzKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjExNQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudGltZUZsYWdzRmll bGQoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTIwDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xh ID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMTE2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMTcNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi50aW1lRmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTIyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGNsYXNzIFRpbWVGbGFnc0ZpZWxkQ29udGV4dChQYXJzZXJSdWxlQ29udGV4 dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBw YXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0K PiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5MRmxhZyA9IDANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBIb3VyU3VwcHBy ZXNzRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuSG91clN1cHBwcmVzc0ZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgTWludXRlU3VwcHJlc3NGbGFnKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5NaW51dGVTdXBwcmVzc0ZsYWcsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2Vjb25kU3VwcHJlc3NGbGFnKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5T ZWNvbmRTdXBwcmVzc0ZsYWcsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RvcmFn ZU5vcm1hbEZsYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlN0b3JhZ2VOb3JtYWxGbGFnLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIFN0b3JhZ2VUaW1lRmxhZyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RvcmFnZVRpbWVGbGFnLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0b3JhZ2VXYWtlVXBGbGFnKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdG9y YWdlV2FrZVVwRmxhZywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3RpbWVGbGFnc0ZpZWxkDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYs IHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0 ciggdmlzaXRvciwgInZpc2l0VGltZUZsYWdzRmllbGQiICk6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VGltZUZsYWdzRmllbGQoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiB0aW1lRmxhZ3NGaWVsZChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlRpbWVGbGFnc0ZpZWxkQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMjQ0LCBzZWxmLlJVTEVfdGltZUZsYWdzRmllbGQpDQo+IA0KPiArICAgICAgICBz ZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMTIzDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBub3QoKCgoKF9sYSAtIDE4NCkpICYgfjB4 M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTg0KSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBh cnNlci5Ib3VyU3VwcHByZXNzRmxhZyAtIDE4NCkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNl ci5NaW51dGVTdXBwcmVzc0ZsYWcgLSAxODQpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIu U2Vjb25kU3VwcHJlc3NGbGFnIC0gMTg0KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlN0 b3JhZ2VOb3JtYWxGbGFnIC0gMTg0KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlN0b3Jh Z2VUaW1lRmxhZyAtIDE4NCkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5TdG9yYWdlV2Fr ZVVwRmxhZyAtIDE4NCkpKSkgIT0gMCkgb3INCj4gX2xhPT1WZnJTeW50YXhQYXJzZXIuTnVtYmVy KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5l KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLmNvbnN1bWUoKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0 aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUo KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGNsYXNzIFZmclN0YXRlbWVudENvbmRpdGlvbmFsQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEp Og0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0 YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZm clN0YXRlbWVudERpc2FibGVJZlN0YXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 RGlzYWJsZUlmU3RhdENvbnRlDQo+IHh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXRDb250DQo+IGV4dCwwKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R3JheU91dElmU3RhdENvbnQNCj4gZXh0LDApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50 SWZTdGF0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3Rh dEMNCj4gb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0 UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJz ZXIuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudENvbmRpdGlvbmFs IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRl bWVudENvbmRpdGlvbmFsKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50 Q29uZGl0aW9uYWwoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDb25kaXRpb25hbENvbnRleHQoc2VsZiwNCj4gc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDI0Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudENvbmRpdGlvbmFsKQ0KPiANCj4gKyAgICAg ICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTI5DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg dG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGlu IFtWZnJTeW50YXhQYXJzZXIuRGlzYWJsZUlmXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjEyNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudERp c2FibGVJZlN0YXQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWZdOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTI2DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYudmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQoKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2Vy LkdyYXlPdXRJZl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMjcNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0KCkNCj4g DQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4g aW4gW1ZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZl06DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIxMjgNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0 ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9W aWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ld0Nv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9f KHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9 IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudERpc2FibGVJZlN0YXRDb250ZQ0KPiB4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3DQo+IENv bnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRHcmF5T3V0SWZTdGF0TmV3KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlP dXRJZlN0YXROZXcNCj4gQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXRDDQo+IG9udGV4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50Q29uZGl0 aW9uYWxOZXcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldyIgKToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudENvbmRpdGlvbmFsTmV3KHNl bGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50Q29uZGl0aW9uYWxOZXdDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2Vs Zi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNDgsIHNl bGYuUlVMRV92ZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5ldykNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzENCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudERpc2FibGVJZlN0YXQoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMTMyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lm U3RhdE5ldygpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzMNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcoKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTM0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJT dGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQoKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0Q29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3DQo+IENvbnRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudFN1 cHByZXNzSWZTdGF0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0 YXQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3Rh dChzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjUw LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQpDQo+IA0KPiArICAgICAgICB0 cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTM2DQo+IA0KPiArICAgICAgICAgICAg c2VsZi52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldygpDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50R3JheU91dElmU3Rh dENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IE5vbmUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcNCj4gQ29udGV4dCwwKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVt ZW50R3JheU91dElmU3RhdA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQiICk6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50R3JheU91dElm U3RhdChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudEdyYXlPdXRJZlN0 YXQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgs IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjUy LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50R3JheU91dElmU3RhdCkNCj4gDQo+ICsgICAgICAgIHRy eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxMzgNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXROZXcoKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudFN0YXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50U3RhdENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiB2ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 UXVlc3Rpb25zQ29udGV4dCwNCj4gMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiB2ZnJTdGF0ZW1lbnRDb25kaXRpb25hbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0 ZW1lbnRDb25kaXRpb25hbENvbnRleHQNCj4gLDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgdmZyU3RhdGVtZW50TGFiZWwoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50TGFiZWxDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgdmZyU3RhdGVtZW50RXh0ZW5zaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEV4dGVuc2lvbkNvbnRleHQsDQo+IDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRJbnZhbGlkQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50U3RhdExpc3QNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdCIg KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1l bnRTdGF0TGlzdChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudFN0YXRM aXN0KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2Vs Zi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNTQsIHNl bGYuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0TGlzdCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5f aW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFy c2VyLlN1YnRpdGxlLCBWZnJTeW50YXhQYXJzZXIuVGV4dCwNCj4gVmZyU3ludGF4UGFyc2VyLkdv dG8sIFZmclN5bnRheFBhcnNlci5SZXNldEJ1dHRvbl06DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxNDANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRTdGF0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5PbmVPZiwgVmZyU3ludGF4UGFyc2VyLk9y ZGVyZWRMaXN0LA0KPiBWZnJTeW50YXhQYXJzZXIuRGF0ZSwgVmZyU3ludGF4UGFyc2VyLlRpbWUs IFZmclN5bnRheFBhcnNlci5DaGVja0JveCwNCj4gVmZyU3ludGF4UGFyc2VyLk51bWVyaWMsIFZm clN5bnRheFBhcnNlci5QYXNzd29yZCwgVmZyU3ludGF4UGFyc2VyLlN0cmluZywNCj4gVmZyU3lu dGF4UGFyc2VyLkFjdGlvbl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx NDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZiwgVmZyU3ludGF4UGFyc2VyLlN1cHByZXNz SWYsDQo+IFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYsIFZmclN5bnRheFBhcnNlci5JbmNvbnNp c3RlbnRJZl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2Nh bGN0eCwgMykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNDINCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRDb25kaXRpb25hbCgpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtW ZnJTeW50YXhQYXJzZXIuTGFiZWxdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMTQzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50TGFiZWwoKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLkd1aWRPcF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIxNDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRF eHRlbnNpb24oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSwgVmZyU3ludGF4UGFy c2VyLkhpZGRlbiwNCj4gVmZyU3ludGF4UGFyc2VyLlJlc3RvcmUsIFZmclN5bnRheFBhcnNlci5T YXZlXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCA2KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0NQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEludmFsaWQoKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRT dGF0TGlzdE9sZENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudFN0YXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50U3RhdENvbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRRdWVzdGlv bnMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UXVlc3Rpb25zQ29udGV4dCwNCj4g MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRMYWJl bChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbnZhbGlkKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQo VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRDb250ZXh0LDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdGF0TGlz dE9sZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdFZmclN0YXRlbWVudFN0YXRMaXN0T2xkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN0YXRMaXN0T2xkKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50U3RhdExpc3RPbGQoc2VsZik6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRT dGF0TGlzdE9sZENvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI1Niwgc2VsZi5SVUxFX3ZmclN0YXRl bWVudFN0YXRMaXN0T2xkKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMTUyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3VidGl0bGUs IFZmclN5bnRheFBhcnNlci5UZXh0LA0KPiBWZnJTeW50YXhQYXJzZXIuR290bywgVmZyU3ludGF4 UGFyc2VyLlJlc2V0QnV0dG9uXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjE0OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXQoKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLk9uZU9mLCBWZnJTeW50YXhQYXJzZXIuT3JkZXJlZExpc3QsDQo+ IFZmclN5bnRheFBhcnNlci5EYXRlLCBWZnJTeW50YXhQYXJzZXIuVGltZSwgVmZyU3ludGF4UGFy c2VyLkNoZWNrQm94LA0KPiBWZnJTeW50YXhQYXJzZXIuTnVtZXJpYywgVmZyU3ludGF4UGFyc2Vy LlBhc3N3b3JkLCBWZnJTeW50YXhQYXJzZXIuU3RyaW5nLA0KPiBWZnJTeW50YXhQYXJzZXIuQWN0 aW9uXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE0OQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFF1ZXN0aW9ucygpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50 YXhQYXJzZXIuTGFiZWxdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDMpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTUw DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50TGFiZWwoKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBb VmZyU3ludGF4UGFyc2VyLkludmVudG9yeSwgVmZyU3ludGF4UGFyc2VyLkhpZGRlbiwNCj4gVmZy U3ludGF4UGFyc2VyLlJlc3RvcmUsIFZmclN5bnRheFBhcnNlci5TYXZlXToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE1MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEludmFsaWQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFi bGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy ZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFy c2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9E SVNBQkxFX0lGX09QKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIERpc2FibGVJZihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuRGlzYWJsZUlmLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVu dEV4cHJlc3Npb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNv bnRleHQNCj4gLDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNv bG9uKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBh cnNlci5TZW1pY29sb24pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwg aSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFbmRJZihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdExpc3Qoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4dCxpKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50 RGlzYWJsZUlmU3RhdA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudERpc2FibGVJZlN0YXQiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RGlzYWJsZUlmU3Rh dChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudERpc2FibGVJZlN0YXQo c2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNl bGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjU4LCBz ZWxmLlJVTEVfdmZyU3RhdGVtZW50RGlzYWJsZUlmU3RhdCkNCj4gDQo+ICsgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIxNTQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5EaXNhYmxlSWYpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNTUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTU2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMTYwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICB3aGlsZSAoKCgoX2xhIC0gNDYpKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwg KF9sYSAtIDQ2KSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5PbmVPZiAtIDQ2KSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLk9yZGVyZWRMaXN0IC0gNDYpKSB8DQo+ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuU3VidGl0bGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UZXh0 IC0gNDYpKSB8ICgxDQo+IDw8IChWZnJTeW50YXhQYXJzZXIuRGF0ZSAtIDQ2KSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLlRpbWUgLSA0NikpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5H cmF5T3V0SWYgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5MYWJlbCAtIDQ2KSkgfCAo MSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkludmVudG9yeSAtIDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkNoZWNrQm94IC0gNDYpKSB8DQo+ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTnVt ZXJpYyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlBhc3N3b3JkIC0NCj4gNDYpKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuU3RyaW5nIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuU3VwcHJlc3NJZg0KPiAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkRpc2Fi bGVJZiAtIDQ2KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLkhpZGRlbiAtIDQ2KSkgfCAo MSA8PCAoVmZyU3ludGF4UGFyc2VyLkdvdG8gLSA0NikpKSkgIT0gMCkgb3INCj4gKCgoKF9sYSAt IDExMCkpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMTEwKSkgJiAoKDEgPDwNCj4g KFZmclN5bnRheFBhcnNlci5JbmNvbnNpc3RlbnRJZiAtIDExMCkpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5SZXN0b3JlIC0NCj4gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlNhdmUg LSAxMTApKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuUmVzZXRCdXR0b24gLSAxMTApKSB8 ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuQWN0aW9uIC0gMTEwKSkNCj4gfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkd1aWRPcCAtIDExMCkpKSkgIT0gMCk6DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMTU3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50U3RhdExpc3QoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Mg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkVuZElmKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMTY0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFz IHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiAr ICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGNsYXNzIFZmclN0YXRlbWVudGdyYXlvdXRJZlN1cHByZXNzSWZDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0t MSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBTdXBwcmVzc0lmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQNCj4gLDApDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24s IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGZsYWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxh Z3NGaWVsZENvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBDb21tYShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Qml0V2lzZU9yKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMg Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5 bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdp c2VPciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRl bWVudGdyYXlvdXRJZlN1cHByZXNzSWYNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2Nl cHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lm IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRl bWVudGdyYXlvdXRJZlN1cHByZXNzSWYoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJT dGF0ZW1lbnRncmF5b3V0SWZTdXBwcmVzc0lmKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgbG9jYWxjdHggPQ0KPiBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50Z3JheW91dElmU3Vw cHJlc3NJZkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2MCwNCj4gc2VsZi5SVUxFX3ZmclN0YXRl bWVudGdyYXlvdXRJZlN1cHByZXNzSWYpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMTY2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3Vw cHJlc3NJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE3OQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgX2xhPT1WZnJT eW50YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MTY3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZM QUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2OA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE2OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE3 NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxNzANCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTcxDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIxNzYNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx NzcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx ODENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb24oKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTgyDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudHN1cHByZXNzSWZHcmF5 T3V0SWZDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5f X2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5w YXJzZXIgPSBwYXJzZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBHcmF5T3V0SWYoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkdyYXlPdXRJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1l bnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25D b250ZXh0DQo+ICwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWlj b2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEZM QUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBmbGFnc0Zp ZWxkKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4 dHMoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50 YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVt ZW50c3VwcHJlc3NJZkdyYXlPdXRJZiIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRWZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50c3VwcHJlc3NJZkdyYXlPdXRJZihzZWxmKToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0NCj4gVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudHN1cHByZXNzSWZHcmF5T3V0SWZDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4g c2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyNjIs DQo+IHNlbGYuUlVMRV92ZnJTdGF0ZW1lbnRzdXBwcmVzc0lmR3JheU91dElmKQ0KPiANCj4gKyAg ICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE4NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkdyYXlPdXRJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjE5Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAg ICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuRkxBR1M6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMTg1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjE4Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjE4Nw0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjE5Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5w dXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIx ODgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMTg5 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQoKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIxOTQNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIxOTUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIxOTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudEV4cHJlc3Npb24oKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjAwDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0K PiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5h bGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0 YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFy c2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9TVVBQUkVTU19JRl9PUCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBTdXBwcmVzc0lmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdXBwcmVzc0lmLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQNCj4gLDApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBFbmRJZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuRW5kSWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgRkxBR1Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkZMQUdTLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGZs YWdzRmllbGQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmxhZ3NGaWVsZENvbnRleHQsaSkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50U3RhdExpc3Qoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50U3RhdExpc3RDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4dCxpKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1O b25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3IiApOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3KHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXROZXcoc2Vs Zik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9DQo+IFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ld0NvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI2 NCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3KQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjIwMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIyMTUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdTOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjIwMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIyMDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMDUNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIyMTANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2Vy LkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjA2 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIwNw0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjEyDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMjEzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMjE3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIxOA0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIyMg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYu X2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgKCgoKF9sYSAtIDQ2KSkgJiB+ MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA0NikpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQ YXJzZXIuT25lT2YgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5PcmRlcmVkTGlzdCAt IDQ2KSkgfA0KPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlIC0gNDYpKSB8ICgxIDw8 IChWZnJTeW50YXhQYXJzZXIuVGV4dCAtIDQ2KSkgfCAoMQ0KPiA8PCAoVmZyU3ludGF4UGFyc2Vy LkRhdGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5UaW1lIC0gNDYpKSB8ICgxIDw8 DQo+IChWZnJTeW50YXhQYXJzZXIuR3JheU91dElmIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQ YXJzZXIuTGFiZWwgLSA0NikpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkg LSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVja0JveCAtIDQ2KSkgfA0KPiAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWMgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5QYXNzd29yZCAtDQo+IDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN0cmluZyAtIDQ2 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNzSWYNCj4gLSA0NikpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0NikpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBh cnNlci5IaWRkZW4gLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Hb3RvIC0gNDYpKSkp ICE9IDApIG9yDQo+ICgoKChfbGEgLSAxMTApKSAmIH4weDNmKSA9PSAwIGFuZCAoKDEgPDwgKF9s YSAtIDExMCkpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYgLSAx MTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVzdG9yZSAtDQo+IDExMCkpIHwgKDEgPDwg KFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2Vy LlJlc2V0QnV0dG9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkFjdGlvbiAtIDEx MCkpDQo+IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlkT3AgLSAxMTApKSkpICE9IDApOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIxOQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRMaXN0KCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIyMjQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIyNg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3 Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g aW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJ X0lGUl9HUkFZX09VVF9JRl9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBHcmF5T3V0 SWYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkdyYXlPdXRJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJT dGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJl c3Npb25Db250ZXh0DQo+ICwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IFNlbWljb2xvbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlz IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1p Y29sb24sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRW5kSWYoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVuZElm LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBmbGFnc0ZpZWxkKHNlbGYsIGk6aW50PU5vbmUp Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLkZs YWdzRmllbGRDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLkZsYWdzRmllbGRDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgQ29tbWEoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudFN0YXRMaXN0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRMaXN0 Q29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRTdGF0TGlzdENvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBCaXRXaXNlT3Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQml0V2lzZU9yLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf dmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ldw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXRO ZXciICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3Rh dGVtZW50R3JheU91dElmU3RhdE5ldyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0 YXRlbWVudEdyYXlPdXRJZlN0YXROZXcoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3Q29u dGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMjY2LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50R3JheU91dElm U3RhdE5ldykNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMjgNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5HcmF5T3V0SWYpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNDENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkZMQUdT Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjIyOQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMzANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIyMzENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5mbGFnc0ZpZWxkKCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyMzYNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHdoaWxl IF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMjMyDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjIzMw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFn c0ZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjM4DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjM5DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjQzDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjI0NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI0OA0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hp bGUgKCgoKF9sYSAtIDQ2KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSA0NikpICYg KCgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuT25lT2YgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5PcmRlcmVkTGlzdCAtIDQ2KSkgfA0KPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1 YnRpdGxlIC0gNDYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVGV4dCAtIDQ2KSkgfCAoMQ0K PiA8PCAoVmZyU3ludGF4UGFyc2VyLkRhdGUgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNl ci5UaW1lIC0gNDYpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuR3JheU91dElmIC0gNDYp KSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTGFiZWwgLSA0NikpIHwgKDEgPDwNCj4gKFZmclN5 bnRheFBhcnNlci5JbnZlbnRvcnkgLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5DaGVj a0JveCAtIDQ2KSkgfA0KPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk51bWVyaWMgLSA0NikpIHwg KDEgPDwgKFZmclN5bnRheFBhcnNlci5QYXNzd29yZCAtDQo+IDQ2KSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLlN0cmluZyAtIDQ2KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlN1cHByZXNz SWYNCj4gLSA0NikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5EaXNhYmxlSWYgLSA0NikpIHwg KDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5IaWRkZW4gLSA0NikpIHwgKDEgPDwgKFZmclN5bnRh eFBhcnNlci5Hb3RvIC0gNDYpKSkpICE9IDApIG9yDQo+ICgoKChfbGEgLSAxMTApKSAmIH4weDNm KSA9PSAwIGFuZCAoKDEgPDwgKF9sYSAtIDExMCkpICYgKCgxIDw8DQo+IChWZnJTeW50YXhQYXJz ZXIuSW5jb25zaXN0ZW50SWYgLSAxMTApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmVzdG9y ZSAtDQo+IDExMCkpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5TYXZlIC0gMTEwKSkgfCAoMSA8 PA0KPiAoVmZyU3ludGF4UGFyc2VyLlJlc2V0QnV0dG9uIC0gMTEwKSkgfCAoMSA8PCAoVmZyU3lu dGF4UGFyc2VyLkFjdGlvbiAtIDExMCkpDQo+IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5HdWlk T3AgLSAxMTApKSkpICE9IDApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjI0NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudFN0YXRMaXN0KCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNTANCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDIyNTENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5FbmRJZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI1Mg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4g DQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxs eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0 ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXRDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lk5vZGUgPSBWZnJUcmVlTm9kZShFRklfSUZSX0lOQ09OU0lTVEVOVF9JRl9PUCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBJbmNvbnNpc3RlbnRJZihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSW5jb25zaXN0ZW50SWYs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUHJvbXB0KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Qcm9tcHQsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rv a2VuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVt YmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudEV4cHJlc3Npb25Db250ZXh0DQo+ICwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIEVuZElmKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FbmRJZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4 dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQml0 V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRJbmNvbnNpc3Rl bnRJZlN0YXQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJZlN0YXQiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50 SWZTdGF0KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50SW5jb25zaXN0 ZW50SWZTdGF0KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udGV4dChzZWxmLA0K PiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMjY4LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KQ0K PiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAg dHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI1NA0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkluY29uc2lzdGVudElmKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMjU1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuUHJvbXB0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MjU2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI1Nw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMjU4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy MjU5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjYwDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjI2MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjc0 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBp ZiBfbGE9PVZmclN5bnRheFBhcnNlci5GTEFHUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIyNjINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRkxBR1MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjYz DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjY0DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjY5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0K PiANCj4gKyAgICAgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNl T3I6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI2NQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9y KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNjYNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3NGaWVsZCgpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjI3MQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjI3Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjI3Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVz c2lvbigpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyNzcNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRJZikNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjI3OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlv bkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24g PSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYs IHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4 aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRJbnZhbGlkQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuQ29udA0KPiBleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50 b3J5KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnlDbw0K PiBudGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZQ0KPiBEZWZhdWx0c0NvbnRleHQsMCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVudEludmFs aWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJz ZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAi dmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEludmFsaWQoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiB2ZnJTdGF0ZW1lbnRJbnZhbGlkKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZENvbnRleHQo c2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDI3MCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEludmFsaWQpDQo+IA0K PiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyODMNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5IaWRkZW5dOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMjgwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyU3RhdGVt ZW50SW52YWxpZEhpZGRlbigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSW52ZW50b3J5XToNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjI4MQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkoKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLlJlc3RvcmUsIFZmclN5bnRheFBhcnNlci5TYXZlXToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjI4Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50SW52YWxp ZEhpZGRlbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEhpZGRlbihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuSGlkZGVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFZhbHVlKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5W YWx1ZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIENvbW1hKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBLZXkoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLktleSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1p Y29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlNlbWljb2xvbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3ZmclN0YXRlbWVudEludmFsaWRIaWRkZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlk SGlkZGVuIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudEludmFsaWRIaWRkZW4oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJT dGF0ZW1lbnRJbnZhbGlkSGlkZGVuKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbkNvbnRleHQo c2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDI3Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEludmFsaWRIaWRkZW4p DQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjg1DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuSGlkZGVuKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjg2DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFsdWUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyODcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjg4DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMjg5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIy OTANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyOTENCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMjkyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjkzDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVu dEludmFsaWRJbnZlbnRvcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBJ bnZlbnRvcnkoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLkludmVudG9yeSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBIZWxwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5IZWxwLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFN0cmlu Z1Rva2VuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5TdHJpbmdUb2tlbikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5n VG9rZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYsIGk6 aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFy ZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFy c2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4s IGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBUZXh0KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5UZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5UZXh0LCBpKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50SW52YWxp ZEludmVudG9yeQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNp dG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZp c2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEludmFsaWRJbnZlbnRvcnkiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50SW52YWxpZEludmVu dG9yeShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRlbWVudEludmFsaWRJbnZl bnRvcnkoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5Q29udGV4dChzZWxmLA0KPiBzZWxm Ll9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0 eCwgMjc0LCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeSkNCj4gDQo+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIyOTUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5JbnZlbnRvcnkpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIyOTYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5IZWxwKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMjk3DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjI5OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMjk5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzAwDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzAxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjMwMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNv bW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzAzDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjMwNA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMDUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdUb2tlbikN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMwNg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjMwNw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMwOA0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4p DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMDkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjMxNg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0K PiArICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuVGV4dDoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGV4dCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIzMTENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTIN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5n VG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzEzDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMTQNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjMxNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzE4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzDQo+IFZmclN0YXRlbWVudEludmFsaWRTYXZlUmVz dG9yZURlZmF1bHRzQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRl eHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGVmYXVs dHMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkRlZmF1bHRzLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1h KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgRm9ybUlkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Gb3JtSWQsIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLk51bWJlciwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBQcm9tcHQoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlByb21wdCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdUb2tlbihz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu U3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCBp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBIZWxw KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5IZWxwLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuU2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNhdmUoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlNhdmUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgUmVzdG9yZShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu UmVzdG9yZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxB R1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZmxhZ3NGaWVsZChzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5GbGFnc0ZpZWxkQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5GbGFnc0ZpZWxkQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIEtleShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuS2V5LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBp IGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhW ZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5C aXRXaXNlT3IsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBWZnJTeW50YXhQYXJzZXIuUlVMRV92 ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudEludmFs aWRTYXZlUmVzdG9yZURlZmF1bHRzIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g dmlzaXRvci52aXNpdFZmclN0YXRlbWVudEludmFsaWRTYXZlUmVzdG9yZURlZmF1bHRzKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVm YXVsdHMoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9DQo+IFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0c0NvbnRleHQo c2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRl clJ1bGUobG9jYWxjdHgsIDI3NiwNCj4gc2VsZi5SVUxFX3ZmclN0YXRlbWVudEludmFsaWRTYXZl UmVzdG9yZURlZmF1bHRzKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMyMA0K PiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAg ICAgICAgaWYgbm90KF9sYT09VmZyU3ludGF4UGFyc2VyLlJlc3RvcmUgb3IgX2xhPT1WZnJTeW50 YXhQYXJzZXIuU2F2ZSk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcklubGluZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjMyMQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkRlZmF1bHRzKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzIyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMjMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5Gb3JtSWQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDIzMjQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzI1DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzI2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMjcNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Qcm9tcHQpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMjgNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzI5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzANCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzENCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDIzMzINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzMzDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzMzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5IZWxwKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMzM1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjMzNg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyMzM3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyMzM4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzM5DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjM1MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGxhXyA9IHNlbGYuX2ludGVycC5h ZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMTgxLHNlbGYuX2N0eCkNCj4gDQo+ICsgICAgICAg ICAgICBpZiBsYV8gPT0gMToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIz NDANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzQxDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkZMQUdTKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjM0Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzRmllbGQo KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM0OA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2hp bGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzNDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyMzQ1DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmZs YWdzRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNTAN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM1 Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzUzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM1 NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5LZXkp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzU1DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzU2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM1OQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6 aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBMYWJlbChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGFiZWwsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRMYWJlbA0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZm clN0YXRlbWVudExhYmVsIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclN0YXRlbWVudExhYmVsKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZy U3RhdGVtZW50TGFiZWwoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRMYWJlbENvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgs IDI3OCwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudExhYmVsKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM2MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLkxhYmVsKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyMzYyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzYzDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAg ICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAg ICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxv Y2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmclN0YXRlbWVudEJh bm5lckNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUs DQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBh cnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTm9kZSA9IFZmclRyZWVOb2Rl KEVGSV9JRlJfR1VJRF9PUCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCYW5uZXIoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkJhbm5lciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBUaXRsZShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu VGl0bGUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nVG9rZW4oc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlN0cmluZ1Rva2VuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu TnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExpbmUo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkxpbmUsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQWxpZ24oc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LkFsaWduLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlbWljb2xvbihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIu U2VtaWNvbG9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFRpbWVvdXQoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy LlRpbWVvdXQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTGVmdChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTGVm dCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDZW50ZXIoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNlbnRlciwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBSaWdodChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUmlnaHQsIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJTdGF0ZW1lbnRCYW5uZXIN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRWZnJTdGF0ZW1lbnRCYW5uZXIiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50QmFubmVyKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJl bihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBk ZWYgdmZyU3RhdGVtZW50QmFubmVyKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9j YWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50QmFubmVyQ29udGV4dChzZWxmLCBz ZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShs b2NhbGN0eCwgMjgwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50QmFubmVyKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjM2NQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkJhbm5lcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjM2Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuQ29tbWE6DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzY2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyMzY5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuVGl0bGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzANCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181KQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzcxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIzNzINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzMNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzc1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODYNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICB0b2tlbiA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5MaW5lXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDIzNzYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuTGluZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzcN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVy KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM3OA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzNzkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQWxpZ24pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzgwDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gMTM2KSkgJiB+ MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSAxMzYpKSAmICgoMSA8PA0KPiAoVmZyU3ludGF4 UGFyc2VyLkxlZnQgLSAxMzYpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuUmlnaHQgLSAxMzYp KSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuQ2VudGVyIC0gMTM2KSkpKSAhPSAwKSk6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0TWF0Y2goc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyMzgxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAg ICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5UaW1lb3V0XToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzODINCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVGltZW91dCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzODMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDIzODQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM4NQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24p DQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzIFZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuTm9kZSA9IFZmclRyZWVOb2RlKEVGSV9JRlJfR1VJRF9PUCkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkRhdGFCdWZmID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuU2l6ZSA9IDAN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLlR5cGVOYW1lID0gJycNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLlR5cGVTaXplID0gMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSXNTdHJ1Y3QgPSBG YWxzZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQXJyYXlOdW0gPSAwDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5EID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg R3VpZE9wKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5HdWlkT3AsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVXVp ZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuVXVpZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBndWlkRGVmaW5p dGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1 bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlNlbWljb2xv biwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEVuZEd1aWRPcChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuRW5kR3VpZE9wLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIERhdGFUeXBlKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5EYXRhVHlwZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBVaW50NjQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQ2NCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBVaW50MzIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlVpbnQzMiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBVaW50MTYoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlVpbnQxNiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBV aW50OChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuVWludDgsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQm9vbGVh bihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQm9vbGVhbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBFRklfU1RS SU5HX0lEKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5FRklfU1RSSU5HX0lELCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIEVGSV9ISUlfREFURShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIEVGSV9ISUlfVElNRShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9USU1FLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIEVGSV9ISUlfUkVGKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FRklfSElJX1JFRiwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckV4dGVuc2lv bkRhdGEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyRXh0ZW5zaW9uRGF0YUNvbnRleHQpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRXh0ZW5zaW9uRGF0YUNvbnRleHQs aSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHRl bnNpb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25l Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXh0ZW5zaW9uQ29udGV4dCkNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNp b25Db250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlbkJy YWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLk9wZW5CcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENs b3NlQnJhY2tldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RXh0ZW5zaW9uDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0K PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyU3RhdGVtZW50RXh0 ZW5zaW9uIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZm clN0YXRlbWVudEV4dGVuc2lvbihzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmclN0YXRl bWVudEV4dGVuc2lvbihzZWxmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4dGVuc2lvbkNvbnRleHQoc2VsZiwNCj4gc2Vs Zi5fY3R4LCBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDI4Miwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudEV4dGVuc2lvbikNCj4gDQo+ICsgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzODgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5HdWlkT3ApDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIz ODkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VdWlkKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyMzkwDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjM5MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZ3VpZERlZmluaXRpb24oKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDYzDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgbGFfID0gc2Vs Zi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwxOTcsc2VsZi5fY3R4KQ0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjM5Mg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzOTMN Cj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguRCA9IHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLkRhdGFUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjM5 NA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX181 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ1NQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQ2NF06DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjM5NQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVWludDY0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDIzOTkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2Vs Zi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyMzk2DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDIzOTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDIzOTgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAg ICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5VaW50MzJdOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MDENCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVpbnQzMikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDA1DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIF9s YSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBfbGE9 PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjQwMg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDAzDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDA0DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVWludDE2XToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDA3DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50MTYpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxMQ0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg aWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MDgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQwOQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxMA0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ ICsgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVpbnQ4XToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDEzDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5VaW50OCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDE3DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxNA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDE1DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDE2DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFj a2V0KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKyAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQm9v bGVhbl06DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQxOQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQm9vbGVh bikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDIzDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQyMA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDIxDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVt YmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDIyDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VCcmFja2V0KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuRUZJX1NUUklOR19JRF06DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjQyNQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRUZJX1NUUklOR19JRCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNDI5DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNl ci5PcGVuQnJhY2tldDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjQyNg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3lu dGF4UGFyc2VyLk9wZW5CcmFja2V0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNDI3DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNDI4DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbGlm IHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9EQVRFXToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDMxDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FRklfSElJX0RBVEUpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQzNQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYg X2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzINCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQzMw0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQzNA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsg ICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVGSV9ISUlfVElN RV06DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQzNw0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRUZJX0hJSV9U SU1FKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NDENCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5CcmFja2V0Og0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDM4DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNr ZXQpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0MzkNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5O dW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NDAN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5DbG9zZUJyYWNrZXQpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRh eFBhcnNlci5FRklfSElJX1JFRl06DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjQ0Mw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuRUZJX0hJSV9SRUYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjQ0Nw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIu T3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI0NDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjQ0NQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjQ0Ng0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXJdOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NDkNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ1Mw0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgaWYgX2xhPT1WZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQ6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NTANCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ1MQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ1Mg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tl dCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHBhc3MNCj4g DQo+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHJh aXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNDYwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfYWx0ID0gc2VsZi5f aW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwxOTYsc2VsZi5fY3R4KQ0KPiANCj4g KyAgICAgICAgICAgICAgICB3aGlsZSBfYWx0IT0yIGFuZCBfYWx0IT1BVE4uSU5WQUxJRF9BTFRf TlVNQkVSOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgX2FsdD09MToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ1Nw0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYudmZyRXh0ZW5zaW9uRGF0YShsb2NhbGN0eC5EYXRhQnVmZikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDYyDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYu X2lucHV0LDE5NixzZWxmLl9jdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NzMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1 dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkNvbW1h Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ2NQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNl bGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3lu dGF4UGFyc2VyLkd1aWRPcDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNDY2DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4dGVu c2lvbigpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ3MQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ3Mg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FbmRHdWlkT3ApDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NzUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZW1pY29sb24pDQo+IA0KPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyRXh0ZW5zaW9uRGF0 YUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ IGludm9raW5nU3RhdGU6aW50PS0xLCBEYXRhQnVmZj1Ob25lKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRGF0YUJ1 ZmYgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Jc1N0cnVjdCA9IE5vbmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLk4gPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkRhdGFCdWZmID0gRGF0YUJ1ZmYNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21t YShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuQ29tbWEsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRGF0YShzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuRGF0YSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEb3Qoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkRvdCkNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuRG90LCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFycmF5TmFt ZShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRz KFZmclN5bnRheFBhcnNlci5BcnJheU5hbWVDb250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmckV4dGVuc2lvbkRhdGENCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJF eHRlbnNpb25EYXRhIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmckV4dGVuc2lvbkRhdGEoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJFeHRl bnNpb25EYXRhKHNlbGYsIERhdGFCdWZmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2Fs Y3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4dGVuc2lvbkRhdGFDb250ZXh0KHNlbGYsIHNlbGYu X2N0eCwNCj4gc2VsZi5zdGF0ZSwgRGF0YUJ1ZmYpDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVy UnVsZShsb2NhbGN0eCwgMjg0LCBzZWxmLlJVTEVfdmZyRXh0ZW5zaW9uRGF0YSkNCj4gDQo+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0NzcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjQ3OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRh dGEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEg PSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4 UGFyc2VyLk9wZW5CcmFja2V0Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjQ3OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5P cGVuQnJhY2tldCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODANCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ4MQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZUJyYWNrZXQpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0ODgNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09 VmZyU3ludGF4UGFyc2VyLkRvdDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI0ODQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu RG90KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ4NQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLmFycmF5TmFtZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNDkwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNDkxDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjQ5Mg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4Lk4g PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICBleGNl cHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxj dHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl cG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVtZW50TW9kYWxDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk5vZGUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgdmZyTW9kYWxUYWcoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyTW9kYWxUYWdD b250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU2VtaWNvbG9u KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRh eFBhcnNlci5TZW1pY29sb24sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVs ZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIu UlVMRV92ZnJTdGF0ZW1lbnRNb2RhbA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclN0YXRlbWVudE1vZGFsIiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudE1vZGFsKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyU3RhdGVtZW50TW9kYWwoc2VsZik6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRN b2RhbENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI4Niwgc2VsZi5SVUxFX3ZmclN0YXRlbWVudE1v ZGFsKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjQ5 NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyTW9kYWxUYWcoKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNDk1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJT eW50YXhQYXJzZXIuU2VtaWNvbG9uKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9u RXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9 IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhp dFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGNsYXNzIFZmck1vZGFsVGFnQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5Ob2RlID0gVmZyVHJlZU5vZGUoRUZJX0lGUl9NT0RBTF9UQUdfT1ApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgTW9kYWwoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk1vZGFsLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyTW9kYWxUYWcNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJNb2RhbFRhZyIgKToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJNb2RhbFRhZyhz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmck1vZGFsVGFnKHNlbGYpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyTW9kYWxUYWdDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAyODgsIHNlbGYuUlVMRV92ZnJNb2RhbFRhZykNCj4gDQo+ICsg ICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0OTcNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Nb2RhbCkNCj4gDQo+ICsgICAgICAg IGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBs b2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0 eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBWZnJTdGF0ZW1lbnRFeHByZXNz aW9uQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwN Cj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwcmVzc2lv bkluZm8oKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFuZFRlcm0oc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJz ZXIuQW5kVGVybUNvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuQW5kVGVybUNvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBPUihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50 YXhQYXJzZXIuT1IpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9SLCBpKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdmZyU3RhdGVtZW50RXhwcmVzc2lvbg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFZmclN0YXRlbWVudEV4cHJlc3Npb24iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0VmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZik6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9u Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMjkwLCBzZWxmLlJVTEVfdmZyU3RhdGVtZW50RXhwcmVz c2lvbikNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsg ICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI0OTkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLmFuZFRlcm0obG9jYWxjdHguRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjUwNA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu c3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+ IA0KPiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuT1I6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTAwDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9SKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjUwMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmFuZFRlcm0obG9j YWxjdHguRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MDYN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YkNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVD b250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IEV4cHJlc3Npb25JbmZvKCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhbmRUZXJt KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMo VmZyU3ludGF4UGFyc2VyLkFuZFRlcm1Db250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkFuZFRlcm1Db250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgT1Ioc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbnMoVmZyU3ludGF4UGFyc2VyLk9SKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P UiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3ZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRWZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViIiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmclN0YXRlbWVudEV4cHJlc3Npb25T dWIoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi KHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBz ZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDI5Miwg c2VsZi5SVUxFX3ZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIpDQo+IA0KPiArICAgICAgICBzZWxm Ll9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNTA3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5hbmRUZXJtKGxvY2Fs Y3R4LkV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MTINCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9s YT09VmZyU3ludGF4UGFyc2VyLk9SOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjUwOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PUikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MDkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5hbmRUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTE0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgIGNsYXNzIEFuZFRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVu dDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5m bz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52 b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkNJZnJBbmRMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBF eHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYml0d2lzZW9yVGVybShzZWxmLCBp OmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRh eFBhcnNlci5CaXR3aXNlb3JUZXJtQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5CaXR3aXNlb3JUZXJtQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIEFORChzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQU5EKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5BTkQsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9hbmRU ZXJtDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0QW5kVGVybSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXRBbmRUZXJtKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgYW5kVGVybShzZWxmLCBF eHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFy c2VyLkFuZFRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5m bykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAyOTQsIHNlbGYuUlVM RV9hbmRUZXJtKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiAN Cj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUxNQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuYml0d2lzZW9yVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNTIwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkN Cj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5BTkQ6DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTE2DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkFORCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI1MTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5iaXR3aXNl b3JUZXJtKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTIy DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAg ICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIEJpdHdpc2Vv clRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25l LA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhw SW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJCaXRXaXNlT3JMaXN0ID0g W10NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgYml0d2lzZWFuZFRlcm0oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQml0d2lzZWFu ZFRlcm1Db250ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LkJpdHdpc2VhbmRUZXJtQ29udGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIEJpdFdpc2VPcihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBp ZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu cyhWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5CaXRXaXNlT3IsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9i aXR3aXNlb3JUZXJtDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZp c2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0cigg dmlzaXRvciwgInZpc2l0Qml0d2lzZW9yVGVybSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRCaXR3aXNlb3JUZXJtKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGls ZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgYml0d2lzZW9yVGVybShzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkJpdHdpc2VvclRlcm1Db250ZXh0KHNlbGYs IHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAyOTYsIHNlbGYuUlVMRV9iaXR3aXNlb3JUZXJtKQ0KPiANCj4g KyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUyMw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu Yml0d2lzZWFuZFRlcm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjUyOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAg ICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjUyNA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTI1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuYml0d2lzZWFuZFRl cm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MzANCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgQml0d2lzZWFuZFRl cm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0K PiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5m byA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJCaXRXaXNlQW5kTGlzdCA9IFtd DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGVxdWFsVGVybShzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBz ZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1Db250ZXh0 KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybUNv bnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNlQW5k KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNl ci5CaXRXaXNlQW5kKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlQW5kLCBp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfYml0d2lzZWFuZFRlcm0N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRCaXR3aXNlYW5kVGVybSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0 b3IudmlzaXRCaXR3aXNlYW5kVGVybShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGJpdHdp c2VhbmRUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuQml0d2lzZWFuZFRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwNCj4gc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAyOTgsIHNlbGYuUlVMRV9iaXR3aXNlYW5kVGVybSkNCj4gDQo+ICsgICAgICAg IHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI1MzENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVxdWFsVGVy bShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTM2DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBfbGE9 PVZmclN5bnRheFBhcnNlci5CaXRXaXNlQW5kOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjUzMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5CaXRXaXNlQW5kKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjUzMw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVxdWFsVGVybShFeHBJbmZvKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjUzOA0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAg X2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBFcXVhbFRlcm1Db250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0t MSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkNJZnJFcXVhbExpc3QgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu Q0lmck5vdEVxdWFsTGlzdCA9IFtdDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g RXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGNvbXBhcmVUZXJtKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGVxdWFsVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgaTppbnQ9Tm9uZSk6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRXF1 YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRlDQo+IHh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLkVxdWFsVGVybVN1cHBsZW1lbnRhcnlDb250ZQ0KPiB4dCxpKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZXF1YWxUZXJt DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VU cmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZp c2l0RXF1YWxUZXJtIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdEVxdWFsVGVybShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGVxdWFsVGVybShzZWxm LCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4 UGFyc2VyLkVxdWFsVGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBF eHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMwMCwgc2Vs Zi5SVUxFX2VxdWFsVGVybSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5 cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1MzkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvbXBhcmVUZXJtKGxvY2FsY3R4LkV4cEluZm8pDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NDMNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFy c2VyLkVxdWFsIG9yIF9sYT09VmZyU3ludGF4UGFyc2VyLk5vdEVxdWFsOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU0MA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmVxdWFsVGVybVN1cHBsZW1lbnRhcnkobG9jYWxjdHguQ0lmckVxdWFsTGlzdCwNCj4gbG9jYWxj dHguQ0lmck5vdEVxdWFsTGlzdCwgRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI1NDUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5z eW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0K PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg Y2xhc3MgRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50 OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBDSWZyRXF1 YWxMaXN0PU5vbmUsIENJZnJOb3RFcXVhbExpc3Q9Tm9uZSwNCj4gRXhwSW5mbz1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuQ0lmckVxdWFsTGlzdCA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJ ZnJOb3RFcXVhbExpc3QgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g Tm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmckVxdWFsTGlzdCA9IENJZnJFcXVhbExp c3QNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJOb3RFcXVhbExpc3QgPSBDSWZyTm90RXF1 YWxMaXN0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZXF1YWxUZXJtU3VwcGxl bWVudGFyeQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGNvcHlGcm9tKHNl bGYsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5j b3B5RnJvbShjdHgpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5DSWZyRXF1YWxMaXN0ID0gY3R4 LkNJZnJFcXVhbExpc3QNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJOb3RFcXVhbExpc3Qg PSBjdHguQ0lmck5vdEVxdWFsTGlzdA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IGN0eC5FeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNz IEVxdWFsVGVybUVxdWFsUnVsZUNvbnRleHQoRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4 OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+IFZmclN5bnRheFBhcnNlci5FcXVh bFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dA0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyc2VyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVxdWFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FcXVhbCwgMCkNCj4gDQo+ICsg ICAgICAgIGRlZiBjb21wYXJlVGVybShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5Db21wYXJlVGVybUNv bnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRFcXVhbFRlcm1FcXVhbFJ1bGUiICk6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0RXF1YWxUZXJtRXF1YWxSdWxlKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZp c2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBj bGFzcyBFcXVhbFRlcm1Ob3RFcXVhbFJ1bGVDb250ZXh0KEVxdWFsVGVybVN1cHBsZW1lbnRhcnlD b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiBWZnJTeW50YXhQYXJz ZXIuRXF1YWxUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0 eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOb3RFcXVhbChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTm90RXF1YWws IDApDQo+IA0KPiArICAgICAgICBkZWYgY29tcGFyZVRlcm0oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu Q29tcGFyZVRlcm1Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0RXF1YWxUZXJtTm90RXF1YWxSdWxlIiAp Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEVxdWFsVGVybU5v dEVxdWFsUnVsZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGVxdWFsVGVybVN1cHBsZW1lbnRhcnkoc2Vs ZiwgQ0lmckVxdWFsTGlzdCwgQ0lmck5vdEVxdWFsTGlzdCwNCj4gRXhwSW5mbyk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1TdXBw bGVtZW50YXJ5Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsIENJZnJFcXVh bExpc3QsIENJZnJOb3RFcXVhbExpc3QsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMzAyLCBzZWxmLlJVTEVfZXF1YWxUZXJtU3VwcGxlbWVudGFyeSkN Cj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU1 MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAg ICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVxdWFsXToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtRXF1YWxSdWxlQ29udGV4 dChzZWxmLA0KPiBsb2NhbGN0eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91 dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjU0Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5F cXVhbCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NDcNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5jb21wYXJlVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLk5vdEVxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuRXF1YWxUZXJtTm90RXF1YWxSdWxlQ29udGV4dChzZWxmLA0KPiBsb2NhbGN0 eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAy KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU0OA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ob3RFcXVhbCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NDkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5jb21wYXJlVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9W aWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBS ZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5l eGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0 RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNv dmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBDb21wYXJlVGVybUNvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50 PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuQ0lmckxlc3NUaGFuTGlzdCA9IFtdDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5DSWZyTGVzc0VxdWFsTGlzdCA9IFtdDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5DSWZy R3JlYXRlclRoYW5MaXN0ID0gW10NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJHcmVhdGVy RXF1YWxMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZv DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgc2hpZnRUZXJtKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlNoaWZ0VGVybUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBjb21wYXJlVGVybVN1cHBsZW1lbnRhcnkoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1T dXBwbGVtZW50YXJ5Qw0KPiBvbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJT eW50YXhQYXJzZXIuQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q28NCj4gbnRleHQsaSkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2NvbXBhcmVUZXJtDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVl VmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0 Q29tcGFyZVRlcm0iICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0Q29tcGFyZVRlcm0oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBjb21wYXJlVGVybShz ZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3lu dGF4UGFyc2VyLkNvbXBhcmVUZXJtQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3Rh dGUsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzA0 LCBzZWxmLlJVTEVfY29tcGFyZVRlcm0pDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBU b2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNTUyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm0oRXhwSW5mbykNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU1Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lu cHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgKCgoX2xhKSAmIH4weDNmKSA9PSAw IGFuZCAoKDEgPDwgX2xhKSAmICgoMSA8PA0KPiBWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsKSB8 ICgxIDw8IFZmclN5bnRheFBhcnNlci5MZXNzKSB8ICgxIDw8DQo+IFZmclN5bnRheFBhcnNlci5H cmVhdGVyRXF1YWwpIHwgKDEgPDwgVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXIpKSkgIT0gMCk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTUzDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5KGxvY2FsY3R4LkNJZnJMZXNzVGhh bkxpc3QsDQo+IGxvY2FsY3R4LkNJZnJMZXNzRXF1YWxMaXN0LCBsb2NhbGN0eC5DSWZyR3JlYXRl clRoYW5MaXN0LA0KPiBsb2NhbGN0eC5DSWZyR3JlYXRlckVxdWFsTGlzdCwgRXhwSW5mbykNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1NTgNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAg IF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQg UmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHgu ZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9y dEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29u dGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52 b2tpbmdTdGF0ZTppbnQ9LTEsIENJZnJMZXNzVGhhbkxpc3Q9Tm9uZSwgQ0lmckxlc3NFcXVhbExp c3Q9Tm9uZSwNCj4gQ0lmckdyZWF0ZXJUaGFuTGlzdD1Ob25lLCBDSWZyR3JlYXRlckVxdWFsTGlz dD1Ob25lLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5DSWZyTGVzc1RoYW5MaXN0ID0gTm9u ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmckxlc3NFcXVhbExpc3QgPSBOb25lDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5DSWZyR3JlYXRlclRoYW5MaXN0ID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuQ0lmckdyZWF0ZXJFcXVhbExpc3QgPSBOb25lDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmckxl c3NUaGFuTGlzdCA9IENJZnJMZXNzVGhhbkxpc3QNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJ ZnJMZXNzRXF1YWxMaXN0ID0gQ0lmckxlc3NFcXVhbExpc3QNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLkNJZnJHcmVhdGVyVGhhbkxpc3QgPSBDSWZyR3JlYXRlclRoYW5MaXN0DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5DSWZyR3JlYXRlckVxdWFsTGlzdCA9IENJZnJHcmVhdGVyRXF1YWxMaXN0 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfY29tcGFyZVRlcm1TdXBwbGVtZW50 YXJ5DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgY29weUZyb20oc2VsZiwg Y3R4OlBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLmNvcHlG cm9tKGN0eCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJMZXNzVGhhbkxpc3QgPSBjdHgu Q0lmckxlc3NUaGFuTGlzdA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmckxlc3NFcXVhbExp c3QgPSBjdHguQ0lmckxlc3NFcXVhbExpc3QNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJH cmVhdGVyVGhhbkxpc3QgPSBjdHguQ0lmckdyZWF0ZXJUaGFuTGlzdA0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuQ0lmckdyZWF0ZXJFcXVhbExpc3QgPSBjdHguQ0lmckdyZWF0ZXJFcXVhbExpc3QN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBjdHguRXhwSW5mbw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcw0KPiBDb21wYXJlVGVybUxlc3NSdWxl Q29udGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4 dCk6ICMgYWN0dWFsbHkgYQ0KPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1TdXBwbGVtZW50 YXJ5Q29udGV4dA0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIExlc3Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3MsIDApDQo+IA0KPiArICAgICAgICBkZWYgc2hpZnRU ZXJtKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVs ZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybUNvbnRleHQsMCkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVW aXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRD b21wYXJlVGVybUxlc3NSdWxlIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENvbXBhcmVUZXJtTGVzc1J1bGUoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVu KHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzDQo+IENvbXBhcmVUZXJt R3JlYXRlckVxdWFsUnVsZUNvbnRleHQoQ29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5Q29udGUNCj4g eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwg Y3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+IFZmclN5bnRheFBhcnNlci5D b21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJzZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5jb3B5RnJvbShjdHgp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgR3JlYXRlckVxdWFsKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5HcmVhdGVy RXF1YWwsIDApDQo+IA0KPiArICAgICAgICBkZWYgc2hpZnRUZXJtKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlNoaWZ0VGVybUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRDb21wYXJlVGVybUdyZWF0ZXJFcXVh bFJ1bGUiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q29t cGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcw0KPiBDb21wYXJlVGVybUdyZWF0 ZXJSdWxlQ29udGV4dChDb21wYXJlVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxl Q29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1TdXBw bGVtZW50YXJ5Q29udGV4dA0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFy c2VyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIEdyZWF0ZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXIsIDApDQo+IA0KPiArICAgICAg ICBkZWYgc2hpZnRUZXJtKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybUNvbnRleHQsMCkN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRDb21wYXJlVGVybUdyZWF0ZXJSdWxlIiApOg0KPiANCj4gKyAgICAgICAgICAg ICAgICByZXR1cm4gdmlzaXRvci52aXNpdENvbXBhcmVUZXJtR3JlYXRlclJ1bGUoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzDQo+IENvbXBhcmVUZXJtTGVzc0VxdWFsUnVsZUNvbnRleHQoQ29tcGFyZVRlcm1TdXBwbGVt ZW50YXJ5Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2Vs ZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3lu dGF4UGFyc2VyLkNvbXBhcmVUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNv cHlGcm9tKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBMZXNzRXF1YWwoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2Vy Lkxlc3NFcXVhbCwgMCkNCj4gDQo+ICsgICAgICAgIGRlZiBzaGlmdFRlcm0oc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50 YXhQYXJzZXIuU2hpZnRUZXJtQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdENvbXBhcmVUZXJtTGVzc0Vx dWFsUnVsZSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD b21wYXJlVGVybUxlc3NFcXVhbFJ1bGUoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBjb21wYXJlVGVybVN1 cHBsZW1lbnRhcnkoc2VsZiwgQ0lmckxlc3NUaGFuTGlzdCwgQ0lmckxlc3NFcXVhbExpc3QsDQo+ IENJZnJHcmVhdGVyVGhhbkxpc3QsIENJZnJHcmVhdGVyRXF1YWxMaXN0LCBFeHBJbmZvKToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVU ZXJtU3VwcGxlbWVudGFyeUNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBD SWZyTGVzc1RoYW5MaXN0LCBDSWZyTGVzc0VxdWFsTGlzdCwgQ0lmckdyZWF0ZXJUaGFuTGlzdCwN Cj4gQ0lmckdyZWF0ZXJFcXVhbExpc3QsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMzA2LCBzZWxmLlJVTEVfY29tcGFyZVRlcm1TdXBwbGVtZW50YXJ5 KQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NTY3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAg ICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVzc106DQo+IA0KPiArICAgICAgICAg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtTGVzc1J1bGVDb250 ZXh0KHNlbGYsDQo+IGxvY2FsY3R4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNTU5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lkxlc3MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTYwDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc2hpZnRUZXJtKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuTGVzc0VxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJT eW50YXhQYXJzZXIuQ29tcGFyZVRlcm1MZXNzRXF1YWxSdWxlQ29udGV4dChzZWxmLA0KPiBsb2Nh bGN0eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU2MQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWwpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTYyDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc2hpZnRUZXJtKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRl cl06DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkNv bXBhcmVUZXJtR3JlYXRlclJ1bGVDb250ZXh0KHNlbGYsDQo+IGxvY2FsY3R4KQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDMpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTYzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXIpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNTY0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc2hpZnRUZXJt KEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAg ICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsXToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgbG9jYWxjdHggPQ0KPiBWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1H cmVhdGVyRXF1YWxSdWxlQ29udGV4dChzZWxmLCBsb2NhbGN0eCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA0KQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjU2NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWwpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNTY2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc2hpZnRUZXJtKEV4 cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihz ZWxmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGNsYXNzIFNoaWZ0VGVybUNvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1 bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmclNo aWZ0TGVmdExpc3QgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmclNoaWZ0UmlnaHRM aXN0ID0gW10NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgYWRkTWludXNUZXJtKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LkFkZE1pbnVzVGVybUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBzaGlmdFRlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlNoaWZ0VGVybVN1cHBs ZW1lbnRhcnlDb250ZQ0KPiB4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5TaGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4DQo+IHQsaSkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3NoaWZ0VGVybQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3Ip Og0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFNoaWZ0VGVy bSIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTaGlmdFRl cm0oc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBzaGlmdFRlcm0oc2VsZiwgRXhwSW5mbyk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TaGlm dFRlcm1Db250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4g DQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMDgsIHNlbGYuUlVMRV9zaGlm dFRlcm0pDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiAr ICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTY5DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5hZGRNaW51c1Rlcm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjU3Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3lu YyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0K PiArICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJTeW50YXhQYXJzZXIuVF9fOSBvciBfbGE9PVZm clN5bnRheFBhcnNlci5UX18xMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI1NzANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zaGlmdFRlcm1TdXBwbGVtZW50YXJ5 KGxvY2FsY3R4LkNJZnJTaGlmdExlZnRMaXN0LA0KPiBsb2NhbGN0eC5DSWZyU2hpZnRSaWdodExp c3QsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTc1DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAg ICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJu IGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFNoaWZ0VGVybVN1 cHBsZW1lbnRhcnlDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4 dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgQ0lmclNoaWZ0TGVmdExpc3Q9Tm9uZSwg Q0lmclNoaWZ0UmlnaHRMaXN0PU5vbmUsDQo+IEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJ ZnJTaGlmdExlZnRMaXN0ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmclNoaWZ0 UmlnaHRMaXN0ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJTaGlmdExlZnRMaXN0ID0gQ0lmclNoaWZ0TGVm dExpc3QNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJTaGlmdFJpZ2h0TGlzdCA9IENJZnJT aGlmdFJpZ2h0TGlzdA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8N Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX3NoaWZ0VGVy bVN1cHBsZW1lbnRhcnkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBjb3B5 RnJvbShzZWxmLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgICAgIHN1 cGVyKCkuY29weUZyb20oY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmclNoaWZ0TGVm dExpc3QgPSBjdHguQ0lmclNoaWZ0TGVmdExpc3QNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJ ZnJTaGlmdFJpZ2h0TGlzdCA9IGN0eC5DSWZyU2hpZnRSaWdodExpc3QNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkV4cEluZm8gPSBjdHguRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICBjbGFzcyBTaGlmdFRlcm1SaWdodENvbnRleHQoU2hpZnRUZXJtU3VwcGxl bWVudGFyeUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBhDQo+IFZmclN5 bnRheFBhcnNlci5TaGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dA0KPiANCj4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuY29w eUZyb20oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFkZE1pbnVzVGVybShzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRv cik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U2hpZnRU ZXJtUmlnaHQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 U2hpZnRUZXJtUmlnaHQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFNoaWZ0VGVybUxlZnRDb250ZXh0KFNoaWZ0VGVy bVN1cHBsZW1lbnRhcnlDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0K PiBWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsg ICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmNvcHlGcm9tKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhZGRNaW51c1Rl cm0oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxl Q29udGV4dChWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtQ29udGV4dCwwKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJl ZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNp dFNoaWZ0VGVybUxlZnQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0U2hpZnRUZXJtTGVmdChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHNoaWZ0VGVybVN1cHBsZW1l bnRhcnkoc2VsZiwgQ0lmclNoaWZ0TGVmdExpc3QsIENJZnJTaGlmdFJpZ2h0TGlzdCwNCj4gRXhw SW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5TaGlmdFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYu c3RhdGUsIENJZnJTaGlmdExlZnRMaXN0LCBDSWZyU2hpZnRSaWdodExpc3QsIEV4cEluZm8pDQo+ IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzEwLCBzZWxmLlJVTEVfc2hp ZnRUZXJtU3VwcGxlbWVudGFyeSkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjU4MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEo MSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRfXzld Og0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TaGlm dFRlcm1MZWZ0Q29udGV4dChzZWxmLCBsb2NhbGN0eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjU3Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5UX185KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU3 Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmFkZE1pbnVzVGVybShFeHBJbmZvKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLlRfXzEwXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxj dHggPSBWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJtUmlnaHRDb250ZXh0KHNlbGYsIGxvY2FsY3R4 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTc4DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzEwKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU3OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmFkZE1pbnVzVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFpc2UgTm9WaWFi bGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBBZGRNaW51c1Rlcm1Db250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0t MSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkNJZnJBZGRMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJ ZnJTdWJ0cmFjdExpc3QgPSBbXQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4 cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBtdWx0ZGl2bW9kVGVybShzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybUNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBhZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5KHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFy c2VyLkFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnkNCj4gQ29udGV4dCkNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBl ZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5Qw0K PiBvbnRleHQsaSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX2FkZE1pbnVzVGVybQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxm LCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0 dHIoIHZpc2l0b3IsICJ2aXNpdEFkZE1pbnVzVGVybSIgKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRBZGRNaW51c1Rlcm0oc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGRlZiBhZGRNaW51c1Rlcm0oc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1Db250ZXh0KHNlbGYs IHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAzMTIsIHNlbGYuUlVMRV9hZGRNaW51c1Rlcm0pDQo+IA0KPiAr ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTgyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t dWx0ZGl2bW9kVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NTg2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAg ICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5UX18xMSBvciBfbGE9PVZmclN5bnRheFBhcnNl ci5OZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1ODMNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5hZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5KGxvY2Fs Y3R4LkNJZnJBZGRMaXN0LA0KPiBsb2NhbGN0eC5DSWZyU3VidHJhY3RMaXN0LCBFeHBJbmZvKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU4OA0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBBZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5 Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g aW52b2tpbmdTdGF0ZTppbnQ9LTEsIENJZnJBZGRMaXN0PU5vbmUsIENJZnJTdWJ0cmFjdExpc3Q9 Tm9uZSwNCj4gRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5p dF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNl ciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmckFkZExpc3QgPSBOb25lDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5DSWZyU3VidHJhY3RMaXN0ID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJ ZnJBZGRMaXN0ID0gQ0lmckFkZExpc3QNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJTdWJ0 cmFjdExpc3QgPSBDSWZyU3VidHJhY3RMaXN0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJ bmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfYWRkTWludXNUZXJtU3VwcGxlbWVudGFyeQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGNvcHlGcm9tKHNlbGYsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0K PiArICAgICAgICAgICAgc3VwZXIoKS5jb3B5RnJvbShjdHgpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5DSWZyQWRkTGlzdCA9IGN0eC5DSWZyQWRkTGlzdA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuQ0lmclN1YnRyYWN0TGlzdCA9IGN0eC5DSWZyU3VidHJhY3RMaXN0DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gY3R4LkV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgY2xhc3MNCj4gQWRkTWludXNUZXJtcEFkZENvbnRleHQoQWRkTWludXNU ZXJtU3VwcGxlbWVudGFyeUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgY3R4OlBhcnNlclJ1bGVDb250ZXh0KTogIyBhY3R1YWxseSBh DQo+IFZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5Q29udGV4dA0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIG11bHRk aXZtb2RUZXJtKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5 cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtQ29udGV4dCwwKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9y OlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0 b3IsICJ2aXNpdEFkZE1pbnVzVGVybXBBZGQiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0QWRkTWludXNUZXJtcEFkZChzZWxmKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hp bGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MNCj4gQWRkTWlu dXNUZXJtU3VidHJhY3RDb250ZXh0KEFkZE1pbnVzVGVybVN1cHBsZW1lbnRhcnlDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIGN0eDpQ YXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiBWZnJTeW50YXhQYXJzZXIuQWRkTWlu dXNUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9f aW5pdF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOZWdhdGl2ZShzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTmVnYXRpdmUsIDApDQo+ IA0KPiArICAgICAgICBkZWYgbXVsdGRpdm1vZFRlcm0oc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuTXVs dGRpdm1vZFRlcm1Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0QWRkTWludXNUZXJtU3VidHJhY3QiICk6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0QWRkTWludXNUZXJt U3VidHJhY3Qoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBhZGRNaW51c1Rlcm1TdXBwbGVtZW50YXJ5KHNl bGYsIENJZnJBZGRMaXN0LCBDSWZyU3VidHJhY3RMaXN0LA0KPiBFeHBJbmZvKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybVN1 cHBsZW1lbnRhcnlDb250ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgQ0lmckFk ZExpc3QsIENJZnJTdWJ0cmFjdExpc3QsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMzE0LCBzZWxmLlJVTEVfYWRkTWludXNUZXJtU3VwcGxlbWVudGFy eSkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjU5Mw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiAN Cj4gKyAgICAgICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAg ICAgICBpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlRfXzExXToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQWRkTWludXNUZXJtcEFkZENvbnRl eHQoc2VsZiwNCj4gbG9jYWxjdHgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI1ODkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu VF9fMTEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTkwDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYubXVsdGRpdm1vZFRlcm0oRXhwSW5mbykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5OZWdhdGl2ZV06DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybVN1YnRyYWN0Q29udGV4dChzZWxmLA0KPiBsb2Nh bGN0eCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4 LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjU5MQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OZWdhdGl2ZSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTINCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5tdWx0ZGl2bW9kVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBw YXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmFp c2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBNdWx0ZGl2bW9kVGVybUNvbnRleHQo UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5n U3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCku X19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu cGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmck11bHRpcGx5TGlzdCA9IFtdDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5DSWZyRGl2aWRlTGlzdCA9IFtdDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5DSWZyTW9kdWxvTGlzdCA9IFtdDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g RXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGNhc3RUZXJtKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLkNhc3RUZXJtQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIG11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBpOmludD1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5NdWx0 ZGl2bW9kVGVybVN1cHBsZW1lbnRhcg0KPiB5Q29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0KFZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnkNCj4gQ29u dGV4dCxpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf bXVsdGRpdm1vZFRlcm0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXRNdWx0ZGl2bW9kVGVybSIgKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRNdWx0ZGl2bW9kVGVybShzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIG11bHRkaXZtb2RUZXJtKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1Db250ZXh0 KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gDQo+ICsgICAgICAg IHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMTYsIHNlbGYuUlVMRV9tdWx0ZGl2bW9kVGVybSkN Cj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAg IHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI1OTUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmNhc3RUZXJtKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI1OTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAg ICAgIHdoaWxlICgoKF9sYSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IF9sYSkgJiAoKDEgPDwN Cj4gVmZyU3ludGF4UGFyc2VyLlRfXzEyKSB8ICgxIDw8IFZmclN5bnRheFBhcnNlci5UX18xMykg fCAoMSA8PA0KPiBWZnJTeW50YXhQYXJzZXIuU2xhc2gpKSkgIT0gMCk6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNTk2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu bXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5KGxvY2FsY3R4LkNJZnJNdWx0aXBseUxpc3QsDQo+ IGxvY2FsY3R4LkNJZnJEaXZpZGVMaXN0LCBsb2NhbGN0eC5DSWZyTW9kdWxvTGlzdCwgRXhwSW5m bykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDENCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAg ICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgTXVsdGRpdm1vZFRlcm1TdXBwbGVt ZW50YXJ5Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIENJZnJNdWx0aXBseUxpc3Q9Tm9uZSwgQ0lmckRp dmlkZUxpc3Q9Tm9uZSwNCj4gQ0lmck1vZHVsb0xpc3Q9Tm9uZSwgRXhwSW5mbz1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuQ0lmck11bHRpcGx5TGlzdCA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkNJZnJEaXZpZGVMaXN0ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmck1vZHVs b0xpc3QgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuQ0lmck11bHRpcGx5TGlzdCA9IENJZnJNdWx0aXBseUxpc3QN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJEaXZpZGVMaXN0ID0gQ0lmckRpdmlkZUxpc3QN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNJZnJNb2R1bG9MaXN0ID0gQ0lmck1vZHVsb0xpc3QN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9tdWx0ZGl2bW9kVGVybVN1cHBsZW1l bnRhcnkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBjb3B5RnJvbShzZWxm LCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuY29w eUZyb20oY3R4KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmck11bHRpcGx5TGlzdCA9IGN0 eC5DSWZyTXVsdGlwbHlMaXN0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5DSWZyRGl2aWRlTGlz dCA9IGN0eC5DSWZyRGl2aWRlTGlzdA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQ0lmck1vZHVs b0xpc3QgPSBjdHguQ0lmck1vZHVsb0xpc3QNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBjdHguRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBj bGFzcw0KPiBNdWx0ZGl2bW9kVGVybURpdkNvbnRleHQoTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50 YXJ5Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4 UGFyc2VyLk11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAg ICAgICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNv cHlGcm9tKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTbGFzaChzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2xh c2gsIDApDQo+IA0KPiArICAgICAgICBkZWYgY2FzdFRlcm0oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIu Q2FzdFRlcm1Db250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0TXVsdGRpdm1vZFRlcm1EaXYiICk6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0TXVsdGRpdm1vZFRlcm1EaXYo c2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGNsYXNzDQo+IE11bHRkaXZtb2RUZXJtTXVsQ29udGV4dChNdWx0ZGl2bW9kVGVybVN1 cHBsZW1lbnRhcnlDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIGN0eDpQYXJzZXJSdWxlQ29udGV4dCk6ICMgYWN0dWFsbHkgYQ0KPiBW ZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dA0KPiANCj4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyc2VyKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuY29weUZyb20oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGNhc3RUZXJt KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLkNhc3RUZXJtQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdE11bHRk aXZtb2RUZXJtTXVsIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdE11bHRkaXZtb2RUZXJtTXVsKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcw0KPiBNdWx0ZGl2bW9kVGVybU1vZHVs b0NvbnRleHQoTXVsdGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dCk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNv bnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtU3Vw cGxlbWVudGFyeUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmNvcHlGcm9tKGN0eCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBjYXN0VGVybShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5DYXN0VGVybUNv bnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2Vs ZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNh dHRyKCB2aXNpdG9yLCAidmlzaXRNdWx0ZGl2bW9kVGVybU1vZHVsbyIgKToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRNdWx0ZGl2bW9kVGVybU1vZHVsbyhzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIG11bHRkaXZtb2RUZXJtU3VwcGxlbWVudGFyeShzZWxmLCBDSWZyTXVs dGlwbHlMaXN0LCBDSWZyRGl2aWRlTGlzdCwNCj4gQ0lmck1vZHVsb0xpc3QsIEV4cEluZm8pOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPQ0KPiBWZnJTeW50YXhQYXJzZXIuTXVs dGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5Q29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYu c3RhdGUsIENJZnJNdWx0aXBseUxpc3QsIENJZnJEaXZpZGVMaXN0LCBDSWZyTW9kdWxvTGlzdCwg RXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMTgsIHNl bGYuUlVMRV9tdWx0ZGl2bW9kVGVybVN1cHBsZW1lbnRhcnkpDQo+IA0KPiArICAgICAgICB0cnk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDgNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5UX18xMl06DQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLk11bHRkaXZtb2RUZXJtTXVsQ29udGV4dChzZWxmLA0KPiBsb2NhbGN0eCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYwMg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5UX18xMikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5j YXN0VGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlNsYXNoXToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRlcm1E aXZDb250ZXh0KHNlbGYsDQo+IGxvY2FsY3R4KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjA0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlNsYXNoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYwNQ0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmNhc3RUZXJtKEV4cEluZm8pDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuVF9fMTNdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eCA9IFZm clN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybU1vZHVsb0NvbnRleHQoc2VsZiwNCj4gbG9jYWxj dHgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MDYNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMTMpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjA3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuY2FzdFRlcm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxl QWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2du aXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0 aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9y KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zlcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgQ2FzdFRlcm1Db250ZXh0KFBhcnNlclJ1bGVDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBh cmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhw SW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwg aW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLlRCT2JqID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuVFVPYmogPSBOb25l DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIGF0b21UZXJtKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkF0b21UZXJtQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmLCBpOmludD1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBCb29sZWFuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5Cb29sZWFuKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5Cb29sZWFuLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFVpbnQ2NChzZWxmLCBp OmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuVWludDY0 KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VaW50NjQsIGkpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgVWludDMyKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5VaW50MzIpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLlVpbnQzMiwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVaW50MTYoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlVpbnQx NikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVWludDE2LCBpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFVpbnQ4KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW5zKFZmclN5bnRheFBhcnNlci5VaW50OCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuVWludDgsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jYXN0 VGVybQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdENhc3RUZXJtIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENhc3RUZXJtKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgY2FzdFRlcm0oc2Vs ZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRh eFBhcnNlci5DYXN0VGVybUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBF eHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMyMCwgc2Vs Zi5SVUxFX2Nhc3RUZXJtKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYxNQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgIF9hbHQgPSBzZWxmLl9pbnRlcnAuYWRhcHRpdmVQcmVkaWN0KHNlbGYuX2lucHV0 LDIxNyxzZWxmLl9jdHgpDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgX2FsdCE9MiBhbmQgX2Fs dCE9QVROLklOVkFMSURfQUxUX05VTUJFUjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgX2Fs dD09MToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjEwDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYxMQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gODApKSAmIH4weDNmKSA9PSAwIGFuZCAo KDEgPDwgKF9sYSAtIDgwKSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5Cb29sZWFuIC0g ODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVWludDY0IC0gODApKSB8ICgxIDw8DQo+IChW ZnJTeW50YXhQYXJzZXIuVWludDMyIC0gODApKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVWlu dDE2IC0gODApKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuVWludDggLSA4MCkpKSkgIT0g MCkpOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVj b3ZlcklubGluZShzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydE1hdGNoKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25zdW1lKCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjEyDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYxNw0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2Fs dCA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMjE3LHNlbGYuX2N0 eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYxOA0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuYXRvbVRlcm0oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIGV4Y2Vw dCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0 eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVw b3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBBdG9tVGVybUNvbnRleHQoUGFyc2VyUnVs ZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50 PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18o cGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0g cGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiB2ZnJFeHByZXNzaW9uQ2F0ZW5hdGUoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVz c2lvbkNhdGVuYXRlQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIHZmckV4cHJlc3Npb25NYXRjaChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9u TWF0Y2hDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZy RXhwcmVzc2lvbk1hdGNoMihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWF0Y2gy Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmckV4cHJl c3Npb25QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uUGFyZW5Db250ZXh0 LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyRXhwcmVzc2lvbkJ1 aWxkSW5GdW5jdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uQnVpbGRJbkZ1 bmN0aW9uQ28NCj4gbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiB2ZnJFeHByZXNzaW9uQ29uc3RhbnQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lv bkNvbnN0YW50Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmckV4cHJlc3Npb25VbmFyeU9wKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0K PiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25V bmFyeU9wQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZm ckV4cHJlc3Npb25UZXJuYXJ5T3Aoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblRl cm5hcnlPcENvbnRleHQNCj4gLDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgdmZyRXhwcmVzc2lvbk1hcChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWFw Q29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE5PVChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuTk9ULCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGF0b21UZXJtKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLkF0b21UZXJtQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfYXRvbVRlcm0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRBdG9tVGVybSIgKToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRBdG9tVGVybShzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIGF0b21UZXJtKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuQXRvbVRlcm1Db250ZXh0KHNlbGYs IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYu ZW50ZXJSdWxlKGxvY2FsY3R4LCAzMjIsIHNlbGYuUlVMRV9hdG9tVGVybSkNCj4gDQo+ICsgICAg ICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzMg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAg IGxhXyA9IHNlbGYuX2ludGVycC5hZGFwdGl2ZVByZWRpY3Qoc2VsZi5faW5wdXQsMjE4LHNlbGYu X2N0eCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBsYV8gPT0gMToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjYyMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmckV4 cHJlc3Npb25DYXRlbmF0ZShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMjoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjYyMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZm ckV4cHJlc3Npb25NYXRjaChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMzoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjYyMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZm ckV4cHJlc3Npb25NYXRjaDIoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDQ6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNCkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MjMNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJFeHByZXNzaW9uUGFyZW4oRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MjQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52 ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAg ICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSA2Og0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDYpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjI1DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYudmZyRXhwcmVzc2lvbkNvbnN0YW50KEV4cEluZm8pDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGxhXyA9PSA3Og0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDcpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjI2DQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyRXhwcmVzc2lvblVuYXJ5T3AoRXhwSW5mbykNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDg6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MjcNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJFeHByZXNzaW9uVGVybmFyeU9wKEV4cEluZm8pDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGxhXyA9 PSA5Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDkpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjI4DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYudmZyRXhwcmVzc2lvbk1hcChFeHBJbmZvKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0g MTA6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MTApDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjI5DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk5PVCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2MzANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5hdG9tVGVybShFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgZWxpZiBsYV8gPT0gMTE6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMTEpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNjMxDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmZyRXhw cmVzc2lvbk1hdGNoMihFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgY2xhc3MgVmZyRXhwcmVzc2lvbkNhdGVuYXRlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cElu Zm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGlu dm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4g DQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5DT2JqID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cElu Zm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDYXRlbmF0ZShzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2F0ZW5hdGUs IDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ28NCj4gbnRleHQp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu DQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 RXhwcmVzc2lvblN1YkNvbnQNCj4gZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgQ29tbWEoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uQ2F0ZW5hdGUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4g DQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHByZXNzaW9u Q2F0ZW5hdGUiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 VmZyRXhwcmVzc2lvbkNhdGVuYXRlKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyRXhw cmVzc2lvbkNhdGVuYXRlKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbkNhdGVuYXRlQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzI0LCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvbkNhdGVu YXRlKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYz NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNhdGVuYXRl KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjM1DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNjM2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjYzNw0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjM4DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjYzOQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24g YXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+ IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgY2xhc3MgVmZyRXhwcmVzc2lvbk1hdGNoQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6 UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9r aW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5NT2JqID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBNYXRjaChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWF0Y2gsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxm LCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ28NCj4gbnRleHQpDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lv blN1YkNvbnQNCj4gZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Q29tbWEoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3Nl UGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Z2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQ YXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uTWF0Y2gNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHByZXNzaW9uTWF0Y2giICk6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvbk1h dGNoKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZyRXhwcmVzc2lvbk1hdGNoKHNlbGYs IEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVmZyRXhwcmVzc2lvbk1hdGNoQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYu c3RhdGUsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MzI2LCBzZWxmLlJVTEVfdmZyRXhwcmVzc2lvbk1hdGNoKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu bWF0Y2goVmZyU3ludGF4UGFyc2VyLk1hdGNoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNjQyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu T3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjQzDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjY0NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NjQ1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY0Ng0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBl eGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9j YWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRs ZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyRXhwcmVzc2lvbk1hdGNoMkNv bnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9f aW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGlu dm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0g Tm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTTJPYmogPSBOb25lDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IE1hdGNoMihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuTWF0Y2gyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9w ZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YkNvDQo+IG50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250DQo+IGV4dCxpKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Z3VpZERlZmluaXRpb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYu Z2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0 LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJz ZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5k ZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxF X3ZmckV4cHJlc3Npb25NYXRjaDINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHByZXNzaW9uTWF0Y2gyIiApOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25NYXRjaDIoc2Vs ZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiB2ZnJFeHByZXNzaW9uTWF0Y2gyKHNlbGYsIEV4cElu Zm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIu VmZyRXhwcmVzc2lvbk1hdGNoMkNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl LCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMyOCwg c2VsZi5SVUxFX3ZmckV4cHJlc3Npb25NYXRjaDIpDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjQ4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTWF0Y2gyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNjQ5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjUwDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjY1MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjUy DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1Mw0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyNjU0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5ndWlkRGVmaW5pdGlvbigpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgZXhj ZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2Fs Y3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVy LnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25QYXJlbkNvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9r aW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9u ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250DQo+IGV4dCwwKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNz aW9uUGFyZW4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRWZnJFeHByZXNzaW9uUGFyZW4iICk6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvblBhcmVuKHNlbGYpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgdmZyRXhwcmVzc2lvblBhcmVuKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblBh cmVuQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+IA0K PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzMwLCBzZWxmLlJVTEVfdmZyRXhw cmVzc2lvblBhcmVuKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY1Nw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy Lk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY1OA0KPiANCj4g KyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29n bml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2Vw dGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJv cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIo c2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb25Db250 ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZv a2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5v bmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgZHVwRXhwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkR1cEV4cENvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB2YXJlcXZhbEV4cChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0 KFZmclN5bnRheFBhcnNlci5WYXJlcXZhbEV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBpZGVxdmFsRXhwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLklkZXF2 YWxFeHBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgaWRl cWlkRXhwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLklkZXFpZEV4cENvbnRleHQsMCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBpZGVxdmFsbGlzdEV4cChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRh eFBhcnNlci5JZGVxdmFsbGlzdEV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBxdWVzdGlvbnJlZjFFeHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rp b25yZWYxRXhwQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHJ1bGVyZWZFeHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0 VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUnVsZXJlZkV4cENvbnRleHQsMCkNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBzdHJpbmdyZWYxRXhwKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLlN0cmluZ3JlZjFFeHBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgcHVzaHRoaXNFeHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUHVzaHRo aXNFeHBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgc2Vj dXJpdHlFeHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU2VjdXJpdHlFeHBDb250ZXh0LDApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0RXhwKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2Vy LkdldEV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3ZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24NCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHByZXNzaW9uQnVp bGRJbkZ1bmN0aW9uIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdFZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24oc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiB2ZnJFeHByZXNzaW9uQnVpbGRJbkZ1bmN0aW9uKHNlbGYsIEV4cEluZm8pOg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lv bkJ1aWxkSW5GdW5jdGlvbkNvbnRleHQoc2VsZiwNCj4gc2VsZi5fY3R4LCBzZWxmLnN0YXRlLCBF eHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDMzMiwgc2Vs Zi5SVUxFX3ZmckV4cHJlc3Npb25CdWlsZEluRnVuY3Rpb24pDQo+IA0KPiArICAgICAgICB0cnk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzINCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5 bnRheFBhcnNlci5EdXBdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjYx DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZHVwRXhwKEV4cEluZm8pDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuVmFyRXFWYWxdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNjYyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYudmFyZXF2YWxFeHAoRXhwSW5mbykN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9r ZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JZEVxVmFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjY2Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmlkZXF2YWxFeHAo RXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5JZEVxSWRdOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDQpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyNjY0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuaWRl cWlkRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuSWRFcVZhbExpc3RdOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDUpDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjY1DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuaWRlcXZhbGxpc3RFeHAoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5R dWVzdGlvblJlZl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChs b2NhbGN0eCwgNikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NjYNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5xdWVzdGlvbnJlZjFFeHAoRXhwSW5mbykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5SdWxlUmVmXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5l bnRlck91dGVyQWx0KGxvY2FsY3R4LCA3KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY2Nw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnJ1bGVyZWZFeHAoRXhwSW5m bykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYg dG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5TdHJpbmdSZWZdOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDgpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNjY4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RyaW5n cmVmMUV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAg ICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlB1c2hUaGlzXToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA5KQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY2OQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnB1c2h0aGlzRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU2VjdXJp dHldOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDEwKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY3MA0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnNlY3VyaXR5RXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQ YXJzZXIuR2V0XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCAxMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzENCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5nZXRFeHAoRXhwSW5mbykNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAg ICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9l cnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4g bG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgRHVwRXhwQ29udGV4 dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tp bmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIo KS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25l DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5ET2JqID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBEdXAo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkR1cCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2R1 cEV4cA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBh cnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3Is ICJ2aXNpdER1cEV4cCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iu dmlzaXREdXBFeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBkdXBFeHAoc2VsZiwgRXhw SW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5EdXBFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykN Cj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMzQsIHNlbGYuUlVMRV9k dXBFeHApDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy Njc0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuRHVwKQ0K PiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4g KyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5h bGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFZhcmVx dmFsRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFZhckVxVmFsKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5WYXJFcVZhbCwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBWYXIoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlZhciwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3Nl UGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg RXF1YWwoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkVxdWFsLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExlc3NF cXVhbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTGVzc0VxdWFsLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExl c3Moc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkxlc3MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgR3JlYXRlckVx dWFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5HcmVhdGVyRXF1YWwsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg R3JlYXRlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuR3JlYXRlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3ZhcmVxdmFsRXhwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmFyZXF2YWxFeHAiICk6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmFyZXF2YWxFeHAoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiB2YXJlcXZhbEV4cChzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZhcmVxdmFsRXhwQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+IEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMzM2LCBzZWxmLlJVTEVfdmFyZXF2YWxFeHApDQo+IA0KPiAr ICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjc2DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVmFyRXFWYWwpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5WYXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2 NzgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFy ZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2NzkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI2ODANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy NjkxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAg ICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuRXF1YWxdOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjY4MQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5FcXVhbCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI2ODINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAg ICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbF06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjgzDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI2ODQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+ IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkxlc3NdOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4NQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNzKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLnN0YXRlID0gMjY4Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRl ckVxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2ODcNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFs KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY4OA0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJT eW50YXhQYXJzZXIuR3JlYXRlcl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyNjg5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2Vy LkdyZWF0ZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjkwDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4g DQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAg IGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3Mg SWRlcXZhbEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSSA9IE5vbmUgIyBUb2tl bg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiB2ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lQ29udA0KPiBleHQsMCkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBJZEVxVmFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JZEVxVmFsLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEVxdWFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5FcXVhbCwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBOdW1iZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk51bWJlciwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBMZXNzRXF1YWwoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkxlc3NFcXVhbCwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBMZXNzKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5MZXNzLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIEdyZWF0ZXJFcXVhbChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIEdyZWF0ZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXIsIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9pZGVxdmFsRXhwDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0SWRlcXZhbEV4cCIg KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRJZGVxdmFsRXhw KHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgaWRlcXZhbEV4cChzZWxmLCBFeHBJbmZvKToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLklkZXF2 YWxFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4g DQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzMzgsIHNlbGYuUlVMRV9pZGVx dmFsRXhwKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50 ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjY5Mw0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LkkgPSBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5JZEVxVmFsKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNjk0DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzA1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJz ZXIuRXF1YWxdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjY5NQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5FcXVhbCkNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTYNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4 UGFyc2VyLkxlc3NFcXVhbF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy Njk3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkxl c3NFcXVhbCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI2OTgNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBp biBbVmZyU3ludGF4UGFyc2VyLkxlc3NdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0 YXRlID0gMjY5OQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5MZXNzKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcwMA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2Vu IGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI3MDENCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuR3JlYXRlckVxdWFsKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjcwMg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuR3JlYXRlcl06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzAzDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXIpDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyNzA0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2go VmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiAN Cj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJhaXNlIE5vVmlh YmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVj b2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhj ZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVy cm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3Zl cihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgSWRlcWlkRXhwQ29udGV4dChQYXJzZXJSdWxlQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEs IEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJl bnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJz ZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5JID0gTm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FID0g Tm9uZSAjIFRva2VuDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5MRSA9IE5vbmUgIyBUb2tlbg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuTCA9IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuQkUgPSBOb25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkIgPSBO b25lICMgVG9rZW4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKHNlbGYs IGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3lu dGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbg0KPiB0ZXh0KQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdl dFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFt ZUNvbnQNCj4gZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgSWRF cUlkKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5JZEVxSWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRXF1YWwo c2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4 UGFyc2VyLkVxdWFsLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExlc3NFcXVhbChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuTGVzc0VxdWFsLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExlc3Moc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFy c2VyLkxlc3MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgR3JlYXRlckVxdWFsKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5HcmVhdGVyRXF1YWwsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgR3JlYXRl cihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuR3JlYXRlciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxl SW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5S VUxFX2lkZXFpZEV4cA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2 aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZpc2l0b3IsICJ2aXNpdElkZXFpZEV4cCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRJZGVxaWRFeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNl bGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBp ZGVxaWRFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0 eCA9IFZmclN5bnRheFBhcnNlci5JZGVxaWRFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2Vs Zi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2Fs Y3R4LCAzNDAsIHNlbGYuUlVMRV9pZGVxaWRFeHApDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzA3DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHgu SSA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLklkRXFJZCkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjcwOA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25E YXRhRmllbGROYW1lKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcxOQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAg ICAgICAgIHRva2VuID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0 b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkVxdWFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI3MDkNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguRSA9IHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkVxdWFsKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjcxMA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnZmclF1ZXN0aW9u RGF0YUZpZWxkTmFtZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAg ICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuTGVzc0VxdWFsXToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTENCj4gDQo+ICsgICAgICAgICAgICAg ICAgbG9jYWxjdHguTEUgPSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5MZXNzRXF1YWwpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzEyDQo+IA0KPiArICAgICAgICAg ICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBh cnNlci5MZXNzXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTMNCj4g DQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguTCA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkxlc3MpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzE0DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5HcmVhdGVyRXF1YWxdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjcxNQ0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5CRSA9IHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJFcXVhbCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3MTYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJR dWVzdGlvbkRhdGFGaWVsZE5hbWUoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0K PiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkdyZWF0ZXJdOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcxNw0KPiANCj4gKyAgICAgICAg ICAgICAgICBsb2NhbGN0eC5CID0gc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuR3JlYXRlcikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MTgNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAg ICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBs b2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBJZGVxdmFsbGlzdEV4 cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+ IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAg IHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBJZEVxVmFsTGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuSWRFcVZhbExpc3QsIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRl eHQoVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnQNCj4gZXh0LDAp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRXF1YWwoc2VsZik6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkVxdWFs LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmLCBpOmludD1Ob25l KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuTnVtYmVyKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1iZXIsIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJT eW50YXhQYXJzZXIuUlVMRV9pZGVxdmFsbGlzdEV4cA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdElkZXF2YWxsaXN0RXhwIiApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdElkZXF2YWxsaXN0RXhwKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgaWRlcXZhbGxpc3RFeHAoc2VsZiwgRXhwSW5mbyk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5JZGVx dmFsbGlzdEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlLCBFeHBJbmZv KQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM0Miwgc2VsZi5SVUxF X2lkZXF2YWxsaXN0RXhwKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlw ZQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjcyMQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLklkRXFWYWxMaXN0 KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzIyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyNzIzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuRXF1YWwpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MjUNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIFRy dWU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzI0DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MjcNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIF9sYSA9 IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIG5vdCAoX2xhPT1W ZnJTeW50YXhQYXJzZXIuTnVtYmVyKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGJyZWFr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0K PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg Y2xhc3MgVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5RSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuTWFzayA9IDANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlZhcklkU3RyID0gJycNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLkxpbmUgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBjb3B5RnJvbShzZWxmLCBjdHg6UGFyc2Vy UnVsZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuY29weUZyb20oY3R4KQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuUUlkID0gY3R4LlFJZA0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuTWFzayA9IGN0eC5NYXNrDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5WYXJJZFN0ciA9 IGN0eC5WYXJJZFN0cg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuTGluZSA9IGN0eC5MaW5lDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzDQo+IFZmclF1ZXN0aW9u RGF0YUZpZWxkTmFtZVJ1bGUyQ29udGV4dChWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVDb250ZXgN Cj4gdCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2Vy LCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4UGFyc2Vy LlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAgICBzdXBl cigpLl9faW5pdF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNOMiA9IE5vbmUg IyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFN0cmluZ0lkZW50aWZpZXIoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZp ZXIsIDApDQo+IA0KPiArICAgICAgICBkZWYgRG90KHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4g KyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5Eb3QpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkRvdCwgaSkNCj4gDQo+ICsgICAgICAgIGRlZiBhcnJheU5hbWUoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQ YXJzZXIuQXJyYXlOYW1lQ29udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5 bnRheFBhcnNlci5BcnJheU5hbWVDb250ZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0K PiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyUXVlc3Rpb25EYXRh RmllbGROYW1lUnVsZTIiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0VmZyUXVlc3Rpb25EYXRhRmllbGROYW1lUnVsZTIoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENo aWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzDQo+IFZmclF1 ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxQ29udGV4dChWZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVD b250ZXgNCj4gdCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBjdHg6UGFyc2VyUnVsZUNvbnRleHQpOiAjIGFjdHVhbGx5IGENCj4gVmZyU3ludGF4 UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZUNvbnRleHQNCj4gDQo+ICsgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKHBhcnNlcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNOMSA9 IE5vbmUgIyBUb2tlbg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSSA9IE5vbmUgIyBUb2tlbg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuY29weUZyb20oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE9wZW5CcmFja2V0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tldCwgMCkNCj4gDQo+ICsgICAg ICAgIGRlZiBDbG9zZUJyYWNrZXQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCwgMCkNCj4gDQo+ICsgICAg ICAgIGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiAN Cj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmclF1ZXN0aW9uRGF0 YUZpZWxkTmFtZVJ1bGUxIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxKHNlbGYpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRD aGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg dmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg bG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmllbGROYW1lQ29udGV4 dChzZWxmLA0KPiBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0KPiArICAgICAgICBzZWxmLmVu dGVyUnVsZShsb2NhbGN0eCwgMzQ0LCBzZWxmLlJVTEVfdmZyUXVlc3Rpb25EYXRhRmllbGROYW1l KQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAg ICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzQxDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAg bGFfID0gc2VsZi5faW50ZXJwLmFkYXB0aXZlUHJlZGljdChzZWxmLl9pbnB1dCwyMjUsc2VsZi5f Y3R4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxhXyA9PSAxOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBsb2NhbGN0eCA9DQo+IFZmclN5bnRheFBhcnNlci5WZnJRdWVzdGlvbkRhdGFGaWVsZE5h bWVSdWxlMUNvbnRleHQoc2VsZiwgbG9jYWxjdHgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI3MjkNCj4gDQo+ICsgICAgICAgICAgICAgICAgbG9jYWxjdHguU04xID0gc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3MzANCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuT3BlbkJyYWNrZXQpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNzMxDQo+IA0KPiArICAgICAgICAgICAgICAgIGxvY2FsY3R4LkkgPSBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyNzMyDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNsb3NlQnJhY2tldCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgbGFfID09IDI6DQo+IA0KPiArICAgICAg ICAgICAgICAgIGxvY2FsY3R4ID0NCj4gVmZyU3ludGF4UGFyc2VyLlZmclF1ZXN0aW9uRGF0YUZp ZWxkTmFtZVJ1bGUyQ29udGV4dChzZWxmLCBsb2NhbGN0eCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnN0YXRlID0gMjczMw0KPiANCj4gKyAgICAgICAgICAgICAgICBsb2NhbGN0eC5TTjIg PSBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjczOA0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICAgICAgX2xhID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2hpbGUgX2xhPT1WZnJT eW50YXhQYXJzZXIuRG90Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI3MzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLkRvdCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzM1DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmFycmF5TmFtZSgpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc0MA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAg ICBwYXNzDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgY2xhc3MgQXJyYXlOYW1lQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJl bnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiAN Cj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5TdWJTdHIgPSAnJw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuU3ViU3RyWiA9ICcn DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5OID0gTm9uZSAjIFRva2VuDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmllcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuQnJhY2tldChzZWxmKToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlbkJy YWNrZXQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VCcmFja2V0KHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5DbG9zZUJyYWNrZXQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1iZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4 KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9h cnJheU5hbWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRv cjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNp dG9yLCAidmlzaXRBcnJheU5hbWUiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0QXJyYXlOYW1lKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgYXJyYXlO YW1lKHNlbGYpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuQXJyYXlOYW1lQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUpDQo+IA0K PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzQ2LCBzZWxmLlJVTEVfYXJyYXlO YW1lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAg ICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0 eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc0Mw0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ0lkZW50aWZpZXIpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDcNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9p bnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLk9w ZW5CcmFja2V0Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc0NA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuQnJhY2tl dCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDUNCj4gDQo+ICsgICAg ICAgICAgICAgICAgbG9jYWxjdHguTiA9IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJl cikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NDYNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VCcmFja2V0KQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9u IGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0K PiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgIGNsYXNzIFF1ZXN0aW9ucmVmMUV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu RXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBRdWVzdGlvblJl ZihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuUXVlc3Rpb25SZWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3Bl blBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg Q2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBTdHJpbmdJZGVudGlmaWVyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TdHJpbmdJZGVudGlmaWVyLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfcXVlc3Rpb25yZWYxRXhwDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0UXVlc3Rpb25y ZWYxRXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFF1 ZXN0aW9ucmVmMUV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHF1ZXN0aW9ucmVmMUV4 cChzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlF1ZXN0aW9ucmVmMUV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBz ZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxj dHgsIDM0OCwgc2VsZi5SVUxFX3F1ZXN0aW9ucmVmMUV4cCkNCj4gDQo+ICsgICAgICAgIHNlbGYu X2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI3NDkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRh eFBhcnNlci5RdWVzdGlvblJlZikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1 MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl bikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1MQ0KPiANCj4gKyAgICAgICAg ICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgbm90KF9s YT09VmZyU3ludGF4UGFyc2VyLk51bWJlciBvcg0KPiBfbGE9PVZmclN5bnRheFBhcnNlci5TdHJp bmdJZGVudGlmaWVyKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5y ZWNvdmVySW5saW5lKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzUyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBSdWxlcmVmRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZv ID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFJ1bGVSZWYoc2VsZik6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlJ1 bGVSZWYsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5P cGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nSWRlbnRpZmll cihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU3RyaW5nSWRlbnRpZmllciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZy U3ludGF4UGFyc2VyLlJVTEVfcnVsZXJlZkV4cA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFJ1bGVyZWZFeHAiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0UnVsZXJlZkV4cChzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9y LnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIHJ1bGVyZWZFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5SdWxlcmVmRXhwQ29udGV4dChz ZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+IEV4cEluZm8pDQo+IA0KPiArICAgICAgICBz ZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzUwLCBzZWxmLlJVTEVfcnVsZXJlZkV4cCkNCj4gDQo+ ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9j YWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NTQNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5SdWxlUmVmKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzU1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyNzU2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu U3RyaW5nSWRlbnRpZmllcikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc1Nw0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4p DQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0K PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZp bmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgU3Ry aW5ncmVmMUV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0 PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAg ICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cElu Zm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBTdHJpbmdSZWYoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Jl ZiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZiwgaTppbnQ9 Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikN Cj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCBpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg U3RyaW5nVG9rZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3lu dGF4UGFyc2VyLlJVTEVfc3RyaW5ncmVmMUV4cA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN0cmluZ3JlZjFFeHAiICk6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0U3RyaW5ncmVmMUV4cChzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIHN0cmluZ3JlZjFFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5TdHJpbmdyZWYx RXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEV4cEluZm8pDQo+IA0K PiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzUyLCBzZWxmLlJVTEVfc3RyaW5n cmVmMUV4cCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVu dGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI3NTkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TdHJp bmdSZWYpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjANCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NjYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICB0b2tlbiA9IHNlbGYuX2lucHV0 LkxBKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5T dHJpbmdUb2tlbl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzYxDQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rv a2VuKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc2Mg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzYzDQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI3NjQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFz cw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5OdW1i ZXJdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc2NQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5OdW1iZXIpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByYWlzZSBOb1ZpYWJsZUFsdEV4Y2VwdGlvbihzZWxmKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzY4DQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4 Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2Nh bGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIu cmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBQdXNodGhpc0V4cENvbnRleHQoUGFy c2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3Rh dGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19p bml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFy c2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBQdXNoVGhpcyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuUHVzaFRoaXMsIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBWZnJTeW50YXhQYXJzZXIuUlVMRV9wdXNodGhpc0V4cA0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFB1c2h0aGlzRXhwIiApOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFB1c2h0aGlzRXhwKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgcHVzaHRoaXNFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5QdXNodGhpc0V4 cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0KPiANCj4g KyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM1NCwgc2VsZi5SVUxFX3B1c2h0aGlz RXhwKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc3 MA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlB1c2hUaGlz KQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiAN Cj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBm aW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAg ICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFNl Y3VyaXR5RXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9 Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5m bw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIFNlY3VyaXR5KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TZWN1cml0eSwg MCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl biwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5HdWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc2VjdXJpdHlFeHANCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRTZWN1cml0 eUV4cCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTZWN1 cml0eUV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHNlY3VyaXR5RXhwKHNlbGYsIEV4 cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuU2VjdXJpdHlFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhw SW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNTYsIHNlbGYu UlVMRV9zZWN1cml0eUV4cCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI3NzINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBh cnNlci5TZWN1cml0eSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc3Mw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbikNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc3NA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuZ3VpZERlZmluaXRpb24oKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzc1 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4g DQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAg ZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBO dW1lcmljVmFyU3RvcmVUeXBlQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEpOg0KPiANCj4gKyAgICAgICAg ICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5WYXJU eXBlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51bWVyaWNTaXplT25lKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5OdW1lcmljU2l6ZU9uZSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBOdW1l cmljU2l6ZVR3byhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1NpemVUd28sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgTnVtZXJpY1NpemVGb3VyKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUZvdXIsIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtZXJpY1NpemVFaWdodChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1Np emVFaWdodCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2Vs Zik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX251bWVy aWNWYXJTdG9yZVR5cGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwg dmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRy KCB2aXNpdG9yLCAidmlzaXROdW1lcmljVmFyU3RvcmVUeXBlIiApOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdE51bWVyaWNWYXJTdG9yZVR5cGUoc2VsZikNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlz aXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBudW1lcmljVmFyU3RvcmVUeXBlKHNlbGYpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuTnVtZXJpY1ZhclN0b3Jl VHlwZUNvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRlKQ0KPiANCj4gKyAgICAg ICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM1OCwgc2VsZi5SVUxFX251bWVyaWNWYXJTdG9y ZVR5cGUpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiAr ICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyNzc3DQo+IA0KPiArICAg ICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBu b3QoKCgoKF9sYSAtIDIzNykpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xhIC0gMjM3KSkg JiAoKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZU9uZSAtIDIzNykpIHwgKDEg PDwNCj4gKFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZVR3byAtIDIzNykpIHwgKDEgPDwNCj4g KFZmclN5bnRheFBhcnNlci5OdW1lcmljU2l6ZUZvdXIgLSAyMzcpKSB8ICgxIDw8DQo+IChWZnJT eW50YXhQYXJzZXIuTnVtZXJpY1NpemVFaWdodCAtIDIzNykpKSkgIT0gMCkpOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXJJbmxpbmUoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydE1hdGNoKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuY29uc3Vt ZSgpDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+ IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAg IGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAg ICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3Mg R2V0RXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9u ZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5CYXNlSW5mbyA9IEVGSV9WQVJT VE9SRV9JTkZPKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkdPYmogPSBOb25lDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIEdldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuR2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9w ZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0b3JhZ2VWYXJJZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdlVmFySWRDb250 ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCaXRXaXNl T3Ioc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkJpdFdpc2VPciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBGTEFH UyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgbnVtZXJpY1Zh clN0b3JlVHlwZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRU eXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5OdW1lcmljVmFyU3RvcmVUeXBlQ29udGV4 dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfZ2V0 RXhwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0R2V0RXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdEdldEV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIGdldEV4cChzZWxmLCBFeHBJ bmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy LkdldEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0K PiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM2MCwgc2VsZi5SVUxFX2dl dEV4cCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsg ICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3NzkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5HZXQpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI3ODANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 ODENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0b3JhZ2VWYXJJZChsb2NhbGN0eC5CYXNl SW5mbywgRmFsc2UpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3ODYNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAg ICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09 VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI3ODINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc4 Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFH UykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3ODQNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9fNSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3ODUNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5udW1lcmljVmFyU3RvcmVUeXBlKCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjc4OA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZy U3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRp b25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9u ID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNl bGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxm LCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5l eGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyRXhwcmVzc2lvbkNvbnN0YW50Q29udGV4dChQYXJzZXJS dWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg cGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTpp bnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRf XyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIg PSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIFRydWVTeW1ib2woc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRydWVTeW1ib2wsIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgRmFsc2VTeW1ib2woc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkZhbHNlU3ltYm9sLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIE9uZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT25lLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE9uZXMoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9uZXMsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgWmVybyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihW ZnJTeW50YXhQYXJzZXIuWmVybywgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBVbmRl ZmluZWQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLlVuZGVmaW5lZCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBW ZXJzaW9uKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5WZXJzaW9uLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE51 bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyRXhwcmVzc2lvbkNvbnN0YW50DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg YWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lvbkNvbnN0YW50IiApOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFZmckV4cHJlc3Npb25D b25zdGFudChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckV4cHJlc3Npb25Db25zdGFu dChzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZy U3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25Db25zdGFudENvbnRleHQoc2VsZiwgc2VsZi5fY3R4 LA0KPiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUo bG9jYWxjdHgsIDM2Miwgc2VsZi5SVUxFX3ZmckV4cHJlc3Npb25Db25zdGFudCkNCj4gDQo+ICsg ICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3OTANCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBz ZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIG5vdCgoKCgoX2xhIC0gMjA5 KSkgJiB+MHgzZikgPT0gMCBhbmQgKCgxIDw8IChfbGEgLSAyMDkpKSAmICgoMSA8PA0KPiAoVmZy U3ludGF4UGFyc2VyLlRydWVTeW1ib2wgLSAyMDkpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIu RmFsc2VTeW1ib2wgLQ0KPiAyMDkpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuT25lIC0gMjA5 KSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9uZXMgLQ0KPiAyMDkpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuWmVybyAtIDIwOSkpIHwgKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5VbmRl ZmluZWQgLSAyMDkpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuVmVyc2lvbiAtIDIwOSkpIHwN Cj4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5OdW1iZXIgLSAyMDkpKSkpICE9IDApKToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+ IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmNv bnN1bWUoKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJl Og0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAg ICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNs YXNzIFZmckV4cHJlc3Npb25VbmFyeU9wQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFy c2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9u ZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5n U3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5F eHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGxlbmd0aEV4cChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5MZW5ndGhFeHBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgYml0d2lzZW5vdEV4cChzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5C aXR3aXNlbm90RXhwQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIHF1ZXN0aW9uMjNyZWZFeHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuUXVlc3Rpb24yM3JlZkV4 cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBzdHJpbmdy ZWYyRXhwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVk UnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlN0cmluZ3JlZjJFeHBDb250ZXh0LDApDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdG9ib29sRXhwKHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4 UGFyc2VyLlRvYm9vbEV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiB0b3N0cmluZ0V4cChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5Ub3N0cmluZ0V4cENvbnRl eHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiB1bmludEV4cChzZWxm KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5VbmludEV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiB0b3VwcGVyRXhwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy bg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLlRvdXBwZXJFeHBD b250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdG9sd2VyRXhw KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHQoVmZyU3ludGF4UGFyc2VyLlRvbHdlckV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBzZXRFeHAoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuU2V0RXhwQ29u dGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRl eChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVf dmZyRXhwcmVzc2lvblVuYXJ5T3ANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQo c2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBo YXNhdHRyKCB2aXNpdG9yLCAidmlzaXRWZnJFeHByZXNzaW9uVW5hcnlPcCIgKToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRWZnJFeHByZXNzaW9uVW5hcnlPcChz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckV4cHJlc3Npb25VbmFyeU9wKHNlbGYsIEV4 cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuVmZyRXhwcmVzc2lvblVuYXJ5T3BDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwNCj4gc2VsZi5z dGF0ZSwgRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAz NjQsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9uVW5hcnlPcCkNCj4gDQo+ICsgICAgICAgIHRyeToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgwMg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIHRva2VuID0g c2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAgICAgICBpZiB0b2tlbiBpbiBbVmZyU3lu dGF4UGFyc2VyLkxlbmd0aF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRl ckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3 OTINCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5sZW5ndGhFeHAoRXhwSW5mbykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4g W1ZmclN5bnRheFBhcnNlci5CaXRXaXNlTm90XToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAyKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjc5Mw0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmJpdHdpc2Vub3RFeHAo RXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5RdWVzdGlvblJlZlZhbF06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMykNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3OTQNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5xdWVzdGlvbjIzcmVmRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBh c3MNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuU3Ry aW5nUmVmVmFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxv Y2FsY3R4LCA0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5NQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0cmluZ3JlZjJFeHAoRXhwSW5mbykNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1Zm clN5bnRheFBhcnNlci5Cb29sVmFsXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRl ck91dGVyQWx0KGxvY2FsY3R4LCA1KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjc5Ng0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnRvYm9vbEV4cChFeHBJbmZvKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tl biBpbiBbVmZyU3ludGF4UGFyc2VyLlN0cmluZ1ZhbF06DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgNikNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI3OTcNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi50b3N0cmluZ0V4 cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAgICAg ICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLlVuSW50VmFsXToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCA3KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjc5OA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxm LnVuaW50RXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsg ICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVG9VcHBlcl06DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgOCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI3OTkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi50b3VwcGVyRXhwKEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHBhc3MN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuVG9Mb3dl cl06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg OSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MDANCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi50b2x3ZXJFeHAoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5TZXRdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxj dHgsIDEwKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgwMQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnNldEV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBwYXNzDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmFpc2UgTm9WaWFibGVBbHRFeGNlcHRpb24oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAg ICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJy SGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2Nh bGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBMZW5ndGhFeHBDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLkxPYmogPSBOb25lDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIExlbmd0 aChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuTGVuZ3RoLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJl bihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+ IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YkNvbnQNCj4gZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IFZmclN5bnRheFBhcnNlci5SVUxFX2xlbmd0aEV4cA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdExlbmd0aEV4cCIgKToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRMZW5ndGhFeHAoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBsZW5ndGhFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5MZW5ndGhFeHBDb250ZXh0KHNl bGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNl bGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzNjYsIHNlbGYuUlVMRV9sZW5ndGhFeHApDQo+IA0KPiAr ICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODA0DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuTGVuZ3RoKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyODA1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyODA2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3Vi KCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgwNw0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0KPiArICAgICAg ICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAgICAg bG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vyckhh bmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9jYWxj dHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgQml0d2lzZW5vdEV4cENvbnRl eHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5p dF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9r aW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVy KCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9u ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuQldOT2JqID0gTm9uZQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBC aXRXaXNlTm90KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5CaXRXaXNlTm90LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZy U3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnQNCj4gZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2JpdHdpc2Vub3RFeHANCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9y KToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRCaXR3aXNl bm90RXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEJp dHdpc2Vub3RFeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBiaXR3aXNlbm90RXhwKHNl bGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50 YXhQYXJzZXIuQml0d2lzZW5vdEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0 YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM2 OCwgc2VsZi5SVUxFX2JpdHdpc2Vub3RFeHApDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyODA5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuQml0V2lzZU5vdCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjgxMA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9w ZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjgxMQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI4MTINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZm clN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0 aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlv biA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihz ZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2Vs ZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu ZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgIGNsYXNzIFF1ZXN0aW9uMjNyZWZFeHBDb250ZXh0KFBhcnNlclJ1bGVD b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJz ZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0t MSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBh cmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBh cnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgUXVlc3Rpb25SZWZWYWwoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVmVmFsLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4sIGkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4N Cj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRF eHByZXNzaW9uU3ViQ29udA0KPiBleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAg IGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW5zKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5DbG9zZVBhcmVuLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIERldmljZVBh dGgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkRldmljZVBhdGgsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3Ry aW5nVG9rZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4o VmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IENvbW1hKHNlbGYsIGk6aW50PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRh eFBhcnNlci5Db21tYSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuQ29tbWEsIGkpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVXVpZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVXVpZCwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBndWlkRGVmaW5pdGlvbihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5H dWlkRGVmaW5pdGlvbkNvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5 bnRheFBhcnNlci5SVUxFX3F1ZXN0aW9uMjNyZWZFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRRdWVzdGlvbjIzcmVmRXhwIiApOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFF1ZXN0aW9uMjNyZWZF eHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBxdWVzdGlvbjIzcmVmRXhwKHNlbGYsIEV4 cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuUXVlc3Rpb24yM3JlZkV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0KPiBzZWxmLnN0YXRl LCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM3MCwg c2VsZi5SVUxFX3F1ZXN0aW9uMjNyZWZFeHApDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAg IyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyODE0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu UXVlc3Rpb25SZWZWYWwpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MTUNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjMNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxm Ll9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2Vy LkRldmljZVBhdGg6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODE2DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkRldmljZVBh dGgpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODE3DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODE4DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlN0cmluZ1Rva2VuKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLnN0YXRlID0gMjgxOQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODIwDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLk51bWJlcikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjEN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQ YXJlbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MjINCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MzANCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIF9sYT09VmZy U3ludGF4UGFyc2VyLlV1aWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy ODI1DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlV1 aWQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODI2DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODI3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuZ3VpZERlZmluaXRpb24oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjgyOA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5D b21tYSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0g MjgzMg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1Yigp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MzMNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFN0cmluZ3JlZjJFeHBDb250ZXh0 KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2lu Z1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigp Ll9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLlNSMk9iaiA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3Ry aW5nUmVmVmFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5TdHJpbmdSZWZWYWwsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdl dFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udA0KPiBleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfc3RyaW5ncmVmMkV4cA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFN0cmlu Z3JlZjJFeHAiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0 U3RyaW5ncmVmMkV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHN0cmluZ3JlZjJFeHAo c2VsZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5 bnRheFBhcnNlci5TdHJpbmdyZWYyRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYu c3RhdGUsIEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwg MzcyLCBzZWxmLlJVTEVfc3RyaW5ncmVmMkV4cCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MzUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNo KFZmclN5bnRheFBhcnNlci5TdHJpbmdSZWZWYWwpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI4MzYNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4MzcNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODM4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNv Z25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNl cHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJy b3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVy KHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBUb2Jvb2xFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIs IHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwg RXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVu dCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNl cg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLlRCT2JqID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBCb29sVmFsKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Cb29s VmFsLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3Bl blBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJl c3Npb25TdWIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNv bnQNCj4gZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ2xvc2VQ YXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3RvYm9vbEV4cA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFRvYm9vbEV4cCIgKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRUb2Jvb2xFeHAoc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiB0b2Jvb2xFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBs b2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Ub2Jvb2xFeHBDb250ZXh0KHNlbGYsIHNlbGYuX2N0 eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxl KGxvY2FsY3R4LCAzNzQsIHNlbGYuUlVMRV90b2Jvb2xFeHApDQo+IA0KPiArICAgICAgICB0cnk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQwDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQm9vbFZhbCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjg0MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLk9wZW5QYXJlbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg0Mg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYudmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YigpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NDMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJl Y29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4 Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRF cnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292 ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIFRvc3RyaW5nRXhwQ29udGV4dChQYXJzZXJSdWxl Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFy c2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9 LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhw YXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBw YXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5UU09iaiA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cElu Zm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgU3RyaW5nVmFsKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5TdHJpbmdWYWwsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNl bGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBh cnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2Vs Zi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNz aW9uU3ViQ29udA0KPiBleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRv a2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIE51bWJlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuTnVtYmVyLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZGVmIENvbW1hKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2Vu KFZmclN5bnRheFBhcnNlci5Db21tYSwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3Rvc3RyaW5nRXhwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0 KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYg aGFzYXR0ciggdmlzaXRvciwgInZpc2l0VG9zdHJpbmdFeHAiICk6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VG9zdHJpbmdFeHAoc2VsZikNCj4gDQo+ICsgICAg ICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNp dENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgIGRlZiB0b3N0cmluZ0V4cChzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlRvc3RyaW5nRXhwQ29udGV4dChzZWxm LCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+IEV4cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxm LmVudGVyUnVsZShsb2NhbGN0eCwgMzc2LCBzZWxmLlJVTEVfdG9zdHJpbmdFeHApDQo+IA0KPiAr ICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQ1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuU3RyaW5nVmFsKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODUwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsg ICAgICAgICAgICBpZiBfbGE9PVZmclN5bnRheFBhcnNlci5UX18xNDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NDYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuVF9fMTQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODQ3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4 UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODQ4DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk51bWJlcikN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NDkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NTINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI4NTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODU0 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJl bikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4g DQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAg ZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAg ICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBV bmludEV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5F eHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuVFVPYmogPSBOb25lDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIFVuSW50VmFsKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5VbkludFZhbCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNl bGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFy c2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250DQo+IGV4dCwwKQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDAp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV91bmludEV4cA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFVuaW50 RXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdFVuaW50 RXhwKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdW5pbnRFeHAoc2VsZiwgRXhwSW5mbyk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5Vbmlu dEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM3OCwgc2VsZi5SVUxFX3VuaW50 RXhwKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJP dXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1 Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlVuSW50VmFs KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODU3DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuc3RhdGUgPSAyODU4DQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1l bnRFeHByZXNzaW9uU3ViKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg1OQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4p DQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0K PiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZp bmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAg ICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVG91 cHBlckV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5v bmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAg ICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5F eHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuVFVPYmogPSBOb25lDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIFRvVXBwZXIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLlRvVXBwZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxm LmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udA0KPiBleHQsMCkNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsg ICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdG91cHBlckV4cA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0 b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFRvdXBw ZXJFeHAiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VG91 cHBlckV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHRvdXBwZXJFeHAoc2VsZiwgRXhw SW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNl ci5Ub3VwcGVyRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+IEV4cElu Zm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzgwLCBzZWxmLlJV TEVfdG91cHBlckV4cCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI4NjENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5Ub1VwcGVyKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODYyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODYzDQo+IA0KPiArICAgICAgICAgICAgc2VsZi52 ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRl ID0gMjg2NA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNs b3NlUGFyZW4pDQo+IA0KPiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMg cmU6DQo+IA0KPiArICAgICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsg ICAgICAgIGZpbmFsbHk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0K PiArICAgICAgICByZXR1cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg Y2xhc3MgVG9sd2VyRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNv bnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5UTE9iaiA9IE5v bmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgVG9Mb3dlcihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuVG9Mb3dlciwgMCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBPcGVuUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJlbiwgMCkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250DQo+IGV4dCwwKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV90b2x3ZXJFeHAN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRy ZWVWaXNpdG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlz aXRUb2x3ZXJFeHAiICk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZp c2l0VG9sd2VyRXhwKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdG9sd2VyRXhwKHNlbGYs IEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQ YXJzZXIuVG9sd2VyRXhwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsIHNlbGYuc3RhdGUsDQo+IEV4 cEluZm8pDQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgMzgyLCBzZWxm LlJVTEVfdG9sd2VyRXhwKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnN0YXRlID0gMjg2Ng0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlRvTG93ZXIpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NjcNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NjgNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyODY5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBTZXRFeHBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29u dGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkJhc2VJbmZvID0g RUZJX1ZBUlNUT1JFX0lORk8oKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuVFNPYmogPSBOb25l DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIFNldChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2V0LCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIHZmclN0b3JhZ2VWYXJJZChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdG9yYWdl VmFySWRDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29t bWEoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3lu dGF4UGFyc2VyLkNvbW1hLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIHZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IHNl bGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVz c2lvblN1YkNvbnQNCj4gZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBk ZWYgQ2xvc2VQYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRU b2tlbihWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbiwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBCaXRXaXNlT3Ioc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYu Z2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBGTEFHUyhzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuRkxBR1MsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBkZWYgbnVtZXJpY1ZhclN0b3JlVHlwZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5OdW1lcmljVmFy U3RvcmVUeXBlQ29udGV4dCwwKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4 UGFyc2VyLlJVTEVfc2V0RXhwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNl bGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFz YXR0ciggdmlzaXRvciwgInZpc2l0U2V0RXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gdmlzaXRvci52aXNpdFNldEV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2Vs ZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHNl dEV4cChzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0g VmZyU3ludGF4UGFyc2VyLlNldEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRl LA0KPiBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM4 NCwgc2VsZi5SVUxFX3NldEV4cCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2Vu IHR5cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4 NzENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5TZXQpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NzINCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI4NzMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0b3JhZ2VWYXJJ ZChsb2NhbGN0eC5CYXNlSW5mbywgRmFsc2UpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI4NzgNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnN5bmMoc2VsZikN Cj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcjoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NzQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLnN0YXRlID0gMjg3NQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5 bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4 NzYNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuVF9f NSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4NzcNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5udW1lcmljVmFyU3RvcmVUeXBlKCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg4MA0KPiANCj4gKyAgICAgICAgICAg IHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyODgxDQo+IA0KPiArICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHBy ZXNzaW9uU3ViKCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg4Mg0KPiANCj4g KyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4pDQo+IA0K PiArICAgICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAg ICAgICAgICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9lcnJIYW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1 cm4gbG9jYWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgVmZyRXhwcmVz c2lvblRlcm5hcnlPcENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250 ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4g KyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4 cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBjb25kaXRpb25hbEV4cChzZWxmKToN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZm clN5bnRheFBhcnNlci5Db25kaXRpb25hbEV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBmaW5kRXhwKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3ludGF4UGFyc2VyLkZpbmRFeHBDb250 ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgbWlkRXhwKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZy U3ludGF4UGFyc2VyLk1pZEV4cENvbnRleHQsMCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB0b2tlbkV4cChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5Ub2tlbkV4cENvbnRleHQs MCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBzcGFuRXhwKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlNwYW5FeHBDb250ZXh0LDApDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJTeW50YXhQYXJzZXIuUlVMRV92ZnJFeHByZXNzaW9uVGVybmFyeU9wDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6DQo+ IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0VmZyRXhwcmVzc2lv blRlcm5hcnlPcCIgKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3Iudmlz aXRWZnJFeHByZXNzaW9uVGVybmFyeU9wKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxm KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgdmZy RXhwcmVzc2lvblRlcm5hcnlPcChzZWxmLCBFeHBJbmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25UZXJuYXJ5T3BDb250 ZXh0KHNlbGYsDQo+IHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwgRXhwSW5mbykNCj4gDQo+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzODYsIHNlbGYuUlVMRV92ZnJFeHByZXNzaW9u VGVybmFyeU9wKQ0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyODg5DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgdG9rZW4gPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4g KyAgICAgICAgICAgIGlmIHRva2VuIGluIFtWZnJTeW50YXhQYXJzZXIuQ29uZF06DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODQNCj4gDQo+ICsgICAgICAgICAgICAgICAg c2VsZi5jb25kaXRpb25hbEV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwYXNz DQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLkZpbmRd Og0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgsIDIp DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODg1DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuZmluZEV4cChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBw YXNzDQo+IA0KPiArICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiBbVmZyU3ludGF4UGFyc2VyLk1p ZF06DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwg MykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4ODYNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5taWRFeHAoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAgICAg cGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNlci5U b2tdOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJBbHQobG9jYWxjdHgs IDQpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODg3DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYudG9rZW5FeHAoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gW1ZmclN5bnRheFBhcnNl ci5TcGFuXToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2Fs Y3R4LCA1KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg4OA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnNwYW5FeHAoRXhwSW5mbykNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcGFzcw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJhaXNlIE5vVmlhYmxlQWx0RXhjZXB0aW9uKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBleGNlcHQgUmVjb2duaXRpb25FeGNlcHRpb24gYXMgcmU6DQo+IA0KPiArICAgICAgICAg ICAgbG9jYWxjdHguZXhjZXB0aW9uID0gcmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnJlcG9ydEVycm9yKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2Vy ckhhbmRsZXIucmVjb3ZlcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgIGZpbmFsbHk6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5leGl0UnVsZSgpDQo+IA0KPiArICAgICAgICByZXR1cm4gbG9j YWxjdHgNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgY2xhc3MgQ29uZGl0aW9uYWxFeHBD b250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBp bnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBz dXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9 IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkNPYmogPSBOb25lDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IENvbmQoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZy U3ludGF4UGFyc2VyLkNvbmQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBh cmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5 bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZy U3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxm LmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNz aW9uU3ViQ28NCj4gbnRleHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnQNCj4gZXh0LGkpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbG9uLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9jb25kaXRpb25hbEV4cA0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZp c2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdENv bmRpdGlvbmFsRXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdENvbmRpdGlvbmFsRXhwKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgY29uZGl0aW9u YWxFeHAoc2VsZiwgRXhwSW5mbyk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5Db25kaXRpb25hbEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LA0K PiBzZWxmLnN0YXRlLCBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9j YWxjdHgsIDM4OCwgc2VsZi5SVUxFX2NvbmRpdGlvbmFsRXhwKQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjg5MQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkNvbmQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI4OTINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI4OTMNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODk0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRj aChWZnJTeW50YXhQYXJzZXIuVF9fMTUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI4OTUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIo KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODk2DQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI4OTcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyODk4DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4g DQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsg ICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4gKyAgICAgICAgZmluYWxs eToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4gDQo+ICsgICAgICAgIHJl dHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBjbGFzcyBGaW5kRXhw Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVsZUNvbnRleHQ9Tm9uZSwNCj4g aW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8g PSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5GT2JqID0gTm9uZQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRl ZiBGaW5kKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZm clN5bnRheFBhcnNlci5GaW5kLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIE9wZW5Q YXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJT eW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGZp bmRGb3JtYXQoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVD b250ZXh0cyhWZnJTeW50YXhQYXJzZXIuRmluZEZvcm1hdENvbnRleHQpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuRmluZEZvcm1hdENvbnRleHQsaSkNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDb21tYShzZWxmLCBpOmludD1Ob25lKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9r ZW4oVmZyU3ludGF4UGFyc2VyLkNvbW1hLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVm IHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAg ICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhw cmVzc2lvblN1YkNvDQo+IG50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHQoVmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250DQo+IGV4dCxpKQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFy ZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQml0V2lzZU9yKHNlbGYsIGk6aW50 PU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VG9rZW5zKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3Ip DQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJu IHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPciwgaSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2ZpbmRFeHANCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToNCj4gDQo+ICsg ICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRGaW5kRXhwIiApOg0KPiANCj4g KyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEZpbmRFeHAoc2VsZikNCj4gDQo+ ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRv ci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBmaW5kRXhwKHNlbGYsIEV4cEluZm8pOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuRmluZEV4cENvbnRleHQoc2VsZiwg c2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5l bnRlclJ1bGUobG9jYWxjdHgsIDM5MCwgc2VsZi5SVUxFX2ZpbmRFeHApDQo+IA0KPiArICAgICAg ICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBlDQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5lbnRlck91dGVyQWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAg ICAgICAgIHNlbGYuc3RhdGUgPSAyOTAwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChW ZnJTeW50YXhQYXJzZXIuRmluZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkw MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLk9wZW5QYXJl bikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkwMg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZmluZEZvcm1hdChFeHBJbmZvKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyOTA3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYp DQo+IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAg ICAgICAgICB3aGlsZSBfbGE9PVZmclN5bnRheFBhcnNlci5CaXRXaXNlT3I6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTAzDQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLkJpdFdpc2VPcikNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI5MDQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5maW5kRm9y bWF0KEV4cEluZm8pDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTA5DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTEwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5t YXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0 ZSA9IDI5MTENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25T dWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTEyDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAg ICAgc2VsZi5zdGF0ZSA9IDI5MTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVu dEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTE0DQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MTUNCj4gDQo+ICsgICAgICAgICAgICBzZWxm LnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyOTE2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIu Q2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlvbiBh cyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiANCj4g KyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkNCj4g DQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICBjbGFzcyBGaW5kRm9ybWF0Q29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5Gb3JtYXQg PSAwDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIFNlbnNpdGl2ZShzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuU2Vuc2l0aXZlLCAwKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgZGVmIEluc2Vuc2l0aXZlKHNlbGYpOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5JbnNlbnNpdGl2ZSwgMCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBnZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBhcnNlci5SVUxFX2ZpbmRGb3JtYXQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNp dG9yKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRGaW5k Rm9ybWF0IiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdEZp bmRGb3JtYXQoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxkcmVuKHNlbGYpDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBmaW5kRm9ybWF0KHNlbGYsIEV4 cEluZm8pOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJz ZXIuRmluZEZvcm1hdENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJ bmZvKQ0KPiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM5Miwgc2VsZi5S VUxFX2ZpbmRGb3JtYXQpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTE4DQo+ IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAg ICAgICBpZiBub3QoX2xhPT1WZnJTeW50YXhQYXJzZXIuSW5zZW5zaXRpdmUgb3INCj4gX2xhPT1W ZnJTeW50YXhQYXJzZXIuU2Vuc2l0aXZlKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5f ZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRNYXRjaChzZWxm KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQ0KPiANCj4gKyAgICAgICAg ZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxv Y2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxl ci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4 DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNzIE1pZEV4cENvbnRleHQoUGFyc2Vy UnVsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYs IHBhcnNlciwgcGFyZW50OlBhcnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6 aW50PS0xLCBFeHBJbmZvPU5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0 X18ocGFyZW50LCBpbnZva2luZ1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2Vy ID0gcGFyc2VyDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuTU9iaiA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4 cEluZm8gPSBFeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTWlkKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5N aWQsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVu UGFyZW4sIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVz c2lvblN1YihzZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNv bnRleHRzKFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ28NCj4gbnRl eHQpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50RXhwcmVzc2lvblN1YkNvbnQNCj4gZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAg aWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tl bnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D b21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5D bG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChz ZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfbWlk RXhwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFy c2VUcmVlVmlzaXRvcik6DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwg InZpc2l0TWlkRXhwIiApOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52 aXNpdE1pZEV4cChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIG1pZEV4cChzZWxmLCBFeHBJ bmZvKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2Vy Lk1pZEV4cENvbnRleHQoc2VsZiwgc2VsZi5fY3R4LCBzZWxmLnN0YXRlLA0KPiBFeHBJbmZvKQ0K PiANCj4gKyAgICAgICAgc2VsZi5lbnRlclJ1bGUobG9jYWxjdHgsIDM5NCwgc2VsZi5SVUxFX21p ZEV4cCkNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVy T3V0ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5 MjANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NaWQpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MjENCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5zdGF0ZSA9IDI5MjINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4 cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTIzDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MjQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZm clN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUg PSAyOTI1DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29t bWEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MjYNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuc3RhdGUgPSAyOTI3DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50 YXhQYXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4 Y2VwdGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSBy ZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwg cmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJl KQ0KPiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRS dWxlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICBjbGFzcyBUb2tlbkV4cENvbnRleHQoUGFyc2VyUnVsZUNvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNlciwgcGFyZW50OlBh cnNlclJ1bGVDb250ZXh0PU5vbmUsDQo+IGludm9raW5nU3RhdGU6aW50PS0xLCBFeHBJbmZvPU5v bmUpOg0KPiANCj4gKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCBpbnZva2lu Z1N0YXRlKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu VE9iaiA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLkV4cEluZm8gPSBFeHBJbmZvDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgVG9rKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Ub2ssIDApDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgT3BlblBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4sIDApDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ28NCj4gbnRleHQpDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlw ZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNv bnQNCj4gZXh0LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEo c2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2Vy LkNvbW1hKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuLCAwKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2VyLlJVTEVfdG9rZW5FeHANCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBhY2NlcHQoc2VsZiwgdmlzaXRvcjpQYXJzZVRyZWVWaXNpdG9yKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBoYXNhdHRyKCB2aXNpdG9yLCAidmlzaXRUb2tlbkV4cCIg KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRUb2tlbkV4cChz ZWxmKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJl dHVybiB2aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIHRva2VuRXhwKHNlbGYsIEV4cEluZm8pOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgbG9jYWxjdHggPSBWZnJTeW50YXhQYXJzZXIuVG9rZW5FeHBD b250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsg ICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzOTYsIHNlbGYuUlVMRV90b2tlbkV4cCkN Cj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0ZXJB bHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MjkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5Ub2spDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzANCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1h dGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI5MzENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Np b25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTMyDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI5MzMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRl bWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTM0 DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5MzUNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu c3RhdGUgPSAyOTM2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJz ZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2VwdGlv biBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUpDQo+ IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0KPiAN Cj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxlKCkN Cj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBjbGFzcyBTcGFuRXhwQ29udGV4dChQYXJzZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyc2VyLCBwYXJlbnQ6UGFyc2VyUnVs ZUNvbnRleHQ9Tm9uZSwNCj4gaW52b2tpbmdTdGF0ZTppbnQ9LTEsIEV4cEluZm89Tm9uZSk6DQo+ IA0KPiArICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLkV4cEluZm8gPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5TT2JqID0g Tm9uZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuRXhwSW5mbyA9IEV4cEluZm8NCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGRlZiBTcGFuKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5TcGFuLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZGVmIEZMQUdTKHNlbGYpOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5GTEFHUywgMCkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiBzcGFuRmxhZ3Moc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5n ZXRUeXBlZFJ1bGVDb250ZXh0cyhWZnJTeW50YXhQYXJzZXIuU3BhbkZsYWdzQ29udGV4dCkNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4g c2VsZi5nZXRUeXBlZFJ1bGVDb250ZXh0KFZmclN5bnRheFBhcnNlci5TcGFuRmxhZ3NDb250ZXh0 LGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwgaTpp bnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1hKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBz ZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGRlZiB2ZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViKHNlbGYsIGk6aW50PU5vbmUpOg0K PiANCj4gKyAgICAgICAgICAgIGlmIGkgaXMgTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dHMoVmZyU3ludGF4UGFyc2VyLlZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWJDbw0KPiBudGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4NCj4gc2VsZi5nZXRUeXBlZFJ1bGVDb250 ZXh0KFZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uU3ViQ29udA0KPiBleHQs aSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBDbG9zZVBhcmVuKHNlbGYp Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNl ci5DbG9zZVBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIEJpdFdpc2VPcihz ZWxmLCBpOmludD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VucyhWZnJTeW50YXhQYXJzZXIu Qml0V2lzZU9yKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5CaXRXaXNlT3IsIGkpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgZ2V0UnVsZUluZGV4KHNlbGYpOg0KPiANCj4gKyAg ICAgICAgICAgIHJldHVybiBWZnJTeW50YXhQYXJzZXIuUlVMRV9zcGFuRXhwDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBkZWYgYWNjZXB0KHNlbGYsIHZpc2l0b3I6UGFyc2VUcmVlVmlzaXRvcik6 DQo+IA0KPiArICAgICAgICAgICAgaWYgaGFzYXR0ciggdmlzaXRvciwgInZpc2l0U3BhbkV4cCIg KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTcGFuRXhwKHNl bGYpDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIHZpc2l0b3IudmlzaXRDaGlsZHJlbihzZWxmKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgc3BhbkV4cChzZWxmLCBFeHBJbmZvKToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGxvY2FsY3R4ID0gVmZyU3ludGF4UGFyc2VyLlNwYW5FeHBDb250 ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5zdGF0ZSwNCj4gRXhwSW5mbykNCj4gDQo+ICsgICAg ICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCAzOTgsIHNlbGYuUlVMRV9zcGFuRXhwKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fbGEgPSAwICMgVG9rZW4gdHlwZQ0KPiANCj4gKyAgICAgICAgdHJ5 Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZW50ZXJPdXRlckFsdChsb2NhbGN0eCwgMSkNCj4g DQo+ICsgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjkzOA0KPiANCj4gKyAgICAgICAgICAgIHNl bGYubWF0Y2goVmZyU3ludGF4UGFyc2VyLlNwYW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5z dGF0ZSA9IDI5MzkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNl ci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NDANCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5GTEFHUykNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0MQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYubWF0 Y2goVmZyU3ludGF4UGFyc2VyLlRfXzUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9 IDI5NDINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnNwYW5GbGFncygpDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5zdGF0ZSA9IDI5NDcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5k bGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgx KQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLkJpdFdpc2VP cjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NDMNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU9yKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gMjk0NA0KPiANCj4gKyAgICAgICAgICAgICAg ICBzZWxmLnNwYW5GbGFncygpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy OTQ5DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIuc3luYyhzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5MQSgxKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTUwDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI5NTENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJl c3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTUyDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTMNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0 YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAy OTU0DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NTUNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLnZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuc3RhdGUgPSAyOTU2DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQ YXJzZXIuQ2xvc2VQYXJlbikNCj4gDQo+ICsgICAgICAgIGV4Y2VwdCBSZWNvZ25pdGlvbkV4Y2Vw dGlvbiBhcyByZToNCj4gDQo+ICsgICAgICAgICAgICBsb2NhbGN0eC5leGNlcHRpb24gPSByZQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX2VyckhhbmRsZXIucmVwb3J0RXJyb3Ioc2VsZiwgcmUp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVyKHNlbGYsIHJlKQ0K PiANCj4gKyAgICAgICAgZmluYWxseToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmV4aXRSdWxl KCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBsb2NhbGN0eA0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICBjbGFzcyBTcGFuRmxhZ3NDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJz ZXJSdWxlQ29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSk6DQo+IA0KPiArICAg ICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIGludm9raW5nU3RhdGUpDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXINCj4gDQo+ICsgICAgICAgICAgICBzZWxm LkZsYWcgPSAwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTnVtYmVyKHNlbGYpOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5OdW1i ZXIsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgTGFzdE5vbk1hdGNoKHNlbGYpOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5M YXN0Tm9uTWF0Y2gsIDApDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgRmlyc3ROb25NYXRj aChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuRmlyc3ROb25NYXRjaCwgMCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGRlZiBn ZXRSdWxlSW5kZXgoc2VsZik6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclN5bnRheFBh cnNlci5SVUxFX3NwYW5GbGFncw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2VwdChz ZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGhh c2F0dHIoIHZpc2l0b3IsICJ2aXNpdFNwYW5GbGFncyIgKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIHZpc2l0b3IudmlzaXRTcGFuRmxhZ3Moc2VsZikNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gdmlzaXRvci52aXNpdENoaWxk cmVuKHNlbGYpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBzcGFuRmxhZ3Moc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9 IFZmclN5bnRheFBhcnNlci5TcGFuRmxhZ3NDb250ZXh0KHNlbGYsIHNlbGYuX2N0eCwgc2VsZi5z dGF0ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuZW50ZXJSdWxlKGxvY2FsY3R4LCA0MDAsIHNlbGYu UlVMRV9zcGFuRmxhZ3MpDQo+IA0KPiArICAgICAgICBzZWxmLl9sYSA9IDAgIyBUb2tlbiB0eXBl DQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5lbnRlck91dGVy QWx0KGxvY2FsY3R4LCAxKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTU4DQo+ IA0KPiArICAgICAgICAgICAgX2xhID0gc2VsZi5faW5wdXQuTEEoMSkNCj4gDQo+ICsgICAgICAg ICAgICBpZiBub3QoKCgoKF9sYSAtIDI0NikpICYgfjB4M2YpID09IDAgYW5kICgoMSA8PCAoX2xh IC0gMjQ2KSkgJiAoKDEgPDwNCj4gKFZmclN5bnRheFBhcnNlci5MYXN0Tm9uTWF0Y2ggLSAyNDYp KSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuRmlyc3ROb25NYXRjaCAtIDI0NikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5OdW1iZXIgLQ0KPiAyNDYpKSkpICE9IDApKToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZWNvdmVySW5saW5lKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFu ZGxlci5yZXBvcnRNYXRjaChzZWxmKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLmNvbnN1 bWUoKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0K PiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBvcnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJlY292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAg ICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAg ICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGNsYXNz IFZmckV4cHJlc3Npb25NYXBDb250ZXh0KFBhcnNlclJ1bGVDb250ZXh0KToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJzZXIsIHBhcmVudDpQYXJzZXJSdWxl Q29udGV4dD1Ob25lLA0KPiBpbnZva2luZ1N0YXRlOmludD0tMSwgRXhwSW5mbz1Ob25lKToNCj4g DQo+ICsgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgaW52b2tpbmdTdGF0ZSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuRXhwSW5mbyA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLk1PYmogPSBO b25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5FeHBJbmZvID0gRXhwSW5mbw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIE1hcChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g c2VsZi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuTWFwLCAwKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZGVmIE9wZW5QYXJlbihzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gc2Vs Zi5nZXRUb2tlbihWZnJTeW50YXhQYXJzZXIuT3BlblBhcmVuLCAwKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZGVmIHZmclN0YXRlbWVudEV4cHJlc3Npb25TdWIoc2VsZik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRSdWxlQ29udGV4dChWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YkNvbnQNCj4gZXh0LDApDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgQ29sb24oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNvbG9uLCAwKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZGVmIENsb3NlUGFyZW4oc2VsZik6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIHNlbGYuZ2V0VG9rZW4oVmZyU3ludGF4UGFyc2VyLkNsb3NlUGFyZW4sIDApDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBkZWYgdmZyU3RhdGVtZW50RXhwcmVzc2lvbihzZWxmLCBpOmlu dD1Ob25lKToNCj4gDQo+ICsgICAgICAgICAgICBpZiBpIGlzIE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHJldHVybg0KPiBzZWxmLmdldFR5cGVkUnVsZUNvbnRleHRzKFZmclN5bnRheFBh cnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4DQo+IHQpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuDQo+IHNlbGYuZ2V0VHlwZWRS dWxlQ29udGV4dChWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50RXhwcmVzc2lvbkNvbnRleHQN Cj4gLGkpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBkZWYgQ29tbWEoc2VsZiwg aTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLkNvbW1h KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVy biBzZWxmLmdldFRva2VuKFZmclN5bnRheFBhcnNlci5Db21tYSwgaSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGRlZiBTZW1pY29sb24oc2VsZiwgaTppbnQ9Tm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgaWYgaSBpcyBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5n ZXRUb2tlbnMoVmZyU3ludGF4UGFyc2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRUb2tlbihWZnJTeW50 YXhQYXJzZXIuU2VtaWNvbG9uLCBpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGdldFJ1 bGVJbmRleChzZWxmKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyU3ludGF4UGFyc2Vy LlJVTEVfdmZyRXhwcmVzc2lvbk1hcA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZGVmIGFjY2Vw dChzZWxmLCB2aXNpdG9yOlBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICAgICAgICAgIGlm IGhhc2F0dHIoIHZpc2l0b3IsICJ2aXNpdFZmckV4cHJlc3Npb25NYXAiICk6DQo+IA0KPiArICAg ICAgICAgICAgICAgIHJldHVybiB2aXNpdG9yLnZpc2l0VmZyRXhwcmVzc2lvbk1hcChzZWxmKQ0K PiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiB2 aXNpdG9yLnZpc2l0Q2hpbGRyZW4oc2VsZikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIHZmckV4cHJlc3Npb25NYXAoc2VsZiwgRXhwSW5mbyk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBsb2NhbGN0eCA9IFZmclN5bnRheFBhcnNlci5WZnJFeHBy ZXNzaW9uTWFwQ29udGV4dChzZWxmLCBzZWxmLl9jdHgsDQo+IHNlbGYuc3RhdGUsIEV4cEluZm8p DQo+IA0KPiArICAgICAgICBzZWxmLmVudGVyUnVsZShsb2NhbGN0eCwgNDAyLCBzZWxmLlJVTEVf dmZyRXhwcmVzc2lvbk1hcCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX2xhID0gMCAjIFRva2VuIHR5 cGUNCj4gDQo+ICsgICAgICAgIHRyeToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLmVudGVyT3V0 ZXJBbHQobG9jYWxjdHgsIDEpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NjAN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLm1hdGNoKFZmclN5bnRheFBhcnNlci5NYXApDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NjENCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5PcGVuUGFyZW4pDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5zdGF0ZSA9IDI5NjINCj4gDQo+ICsgICAgICAgICAgICBzZWxmLnZmclN0YXRlbWVudEV4cHJl c3Npb25TdWIoKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTYzDQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29sb24pDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NzENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJI YW5kbGVyLnN5bmMoc2VsZikNCj4gDQo+ICsgICAgICAgICAgICBfbGEgPSBzZWxmLl9pbnB1dC5M QSgxKQ0KPiANCj4gKyAgICAgICAgICAgIHdoaWxlIF9sYT09VmZyU3ludGF4UGFyc2VyLk9wZW5Q YXJlbiBvciAoKCgoX2xhIC0gMTkyKSkgJiB+MHgzZikgPT0gMA0KPiBhbmQgKCgxIDw8IChfbGEg LSAxOTIpKSAmICgoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkNvbmQgLSAxOTIpKSB8ICgxIDw8DQo+ IChWZnJTeW50YXhQYXJzZXIuRmluZCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5N aWQgLSAxOTIpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuVG9rIC0gMTkyKSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlNwYW4gLSAxOTIpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJz ZXIuRHVwIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlZhckVxVmFsIC0gMTkyKSkg fCAoMQ0KPiA8PCAoVmZyU3ludGF4UGFyc2VyLklkRXFWYWwgLSAxOTIpKSB8ICgxIDw8IChWZnJT eW50YXhQYXJzZXIuSWRFcUlkIC0gMTkyKSkgfA0KPiAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLklk RXFWYWxMaXN0IC0gMTkyKSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVm IC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlJ1bGVSZWYgLSAxOTIpKQ0KPiB8ICgx IDw8IChWZnJTeW50YXhQYXJzZXIuU3RyaW5nUmVmIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4 UGFyc2VyLlB1c2hUaGlzIC0NCj4gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlNlY3Vy aXR5IC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkdldCAtDQo+IDE5MikpIHwgKDEg PDwgKFZmclN5bnRheFBhcnNlci5UcnVlU3ltYm9sIC0gMTkyKSkgfCAoMSA8PA0KPiAoVmZyU3lu dGF4UGFyc2VyLkZhbHNlU3ltYm9sIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLk9u ZSAtIDE5MikpIHwNCj4gKDEgPDwgKFZmclN5bnRheFBhcnNlci5PbmVzIC0gMTkyKSkgfCAoMSA8 PCAoVmZyU3ludGF4UGFyc2VyLlplcm8gLSAxOTIpKSB8ICgxDQo+IDw8IChWZnJTeW50YXhQYXJz ZXIuVW5kZWZpbmVkIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlZlcnNpb24gLQ0K PiAxOTIpKSB8ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTGVuZ3RoIC0gMTkyKSkgfCAoMSA8PCAo VmZyU3ludGF4UGFyc2VyLk5PVCAtDQo+IDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5T ZXQgLSAxOTIpKSB8ICgxIDw8DQo+IChWZnJTeW50YXhQYXJzZXIuQml0V2lzZU5vdCAtIDE5Mikp IHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Cb29sVmFsIC0gMTkyKSkNCj4gfCAoMSA8PCAoVmZy U3ludGF4UGFyc2VyLlN0cmluZ1ZhbCAtIDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5V bkludFZhbCAtDQo+IDE5MikpIHwgKDEgPDwgKFZmclN5bnRheFBhcnNlci5Ub1VwcGVyIC0gMTky KSkgfCAoMSA8PA0KPiAoVmZyU3ludGF4UGFyc2VyLlRvTG93ZXIgLSAxOTIpKSB8ICgxIDw8IChW ZnJTeW50YXhQYXJzZXIuTWF0Y2ggLSAxOTIpKSB8ICgxDQo+IDw8IChWZnJTeW50YXhQYXJzZXIu TWF0Y2gyIC0gMTkyKSkgfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLkNhdGVuYXRlIC0gMTkyKSkN Cj4gfCAoMSA8PCAoVmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uUmVmVmFsIC0gMTkyKSkgfCAoMSA8 PA0KPiAoVmZyU3ludGF4UGFyc2VyLlN0cmluZ1JlZlZhbCAtIDE5MikpIHwgKDEgPDwgKFZmclN5 bnRheFBhcnNlci5NYXAgLSAxOTIpKSB8DQo+ICgxIDw8IChWZnJTeW50YXhQYXJzZXIuTnVtYmVy IC0gMTkyKSkpKSAhPSAwKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5 NjQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NjUNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5tYXRjaChWZnJTeW50YXhQYXJzZXIuQ29tbWEpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuc3RhdGUgPSAyOTY2DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu dmZyU3RhdGVtZW50RXhwcmVzc2lvbigpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuc3Rh dGUgPSAyOTY3DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYubWF0Y2goVmZyU3ludGF4UGFy c2VyLlNlbWljb2xvbikNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NzMN Cj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5zeW5jKHNlbGYpDQo+IA0K PiArICAgICAgICAgICAgICAgIF9sYSA9IHNlbGYuX2lucHV0LkxBKDEpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IDI5NzQNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Lm1hdGNoKFZmclN5bnRheFBhcnNlci5DbG9zZVBhcmVuKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0 IFJlY29nbml0aW9uRXhjZXB0aW9uIGFzIHJlOg0KPiANCj4gKyAgICAgICAgICAgIGxvY2FsY3R4 LmV4Y2VwdGlvbiA9IHJlDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fZXJySGFuZGxlci5yZXBv cnRFcnJvcihzZWxmLCByZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9lcnJIYW5kbGVyLnJl Y292ZXIoc2VsZiwgcmUpDQo+IA0KPiArICAgICAgICBmaW5hbGx5Og0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuZXhpdFJ1bGUoKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGxvY2FsY3R4DQo+IA0K PiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvVmZyU3lu dGF4VmlzaXRvci5weQ0KPiBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1Zm clN5bnRheFZpc2l0b3IucHkNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMC4uNDMwNzhmOTE0YQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL0Jhc2VUb29scy9Tb3Vy Y2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclN5bnRheFZpc2l0b3IucHkNCj4gQEAgLTAsMCArMSw1 MTA2IEBADQo+ICtmcm9tIGNnaSBpbXBvcnQgcHJpbnRfZW52aXJvbl91c2FnZQ0KPiANCj4gK2Zy b20gZW1haWwuZXJyb3JzIGltcG9ydCBOb25BU0NJSUxvY2FsUGFydERlZmVjdCwgTm9uUHJpbnRh YmxlRGVmZWN0DQo+IA0KPiArZnJvbSBlbnVtIGltcG9ydCBGbGFnDQo+IA0KPiArZnJvbSBmaWxl aW5wdXQgaW1wb3J0IGxpbmVubw0KPiANCj4gK2Zyb20gaHR0cC5jbGllbnQgaW1wb3J0IFJlc3Bv bnNlTm90UmVhZHkNCj4gDQo+ICtmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY291bnQNCj4gDQo+ICtm cm9tIG1vZHVsZWZpbmRlciBpbXBvcnQgU1RPUkVfTkFNRQ0KPiANCj4gK2Zyb20gbXNpbGliLnNj aGVtYSBpbXBvcnQgQ3JlYXRlRm9sZGVyDQo+IA0KPiArZnJvbSByZSBpbXBvcnQgVA0KPiANCj4g K2Zyb20gc3JlX3BhcnNlIGltcG9ydCBGTEFHUw0KPiANCj4gK2Zyb20gdG9rZW5pemUgaW1wb3J0 IE51bWJlcg0KPiANCj4gK2Zyb20gYW50bHI0IGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21w aWxlci5Db21tb25DdHlwZXMgaW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLlZmckZv cm1Qa2cgaW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLlZmclV0aWxpdHkgaW1wb3J0 ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLlZmclRyZWUgaW1wb3J0ICoNCj4gDQo+ICtpbXBv cnQgY3R5cGVzDQo+IA0KPiAraW1wb3J0IHN0cnVjdA0KPiANCj4gKw0KPiANCj4gK2lmIF9fbmFt ZV9fIGlzIG5vdCBOb25lIGFuZCAiLiIgaW4gX19uYW1lX186DQo+IA0KPiArICAgIGZyb20gLlZm clN5bnRheFBhcnNlciBpbXBvcnQgVmZyU3ludGF4UGFyc2VyDQo+IA0KPiArZWxzZToNCj4gDQo+ ICsgICAgZnJvbSBWZnJTeW50YXhQYXJzZXIgaW1wb3J0IFZmclN5bnRheFBhcnNlcg0KPiANCj4g Kw0KPiANCj4gK2dDVmZyVmFyRGF0YVR5cGVEQiA9IENWZnJWYXJEYXRhVHlwZURCKCkNCj4gDQo+ ICtnQ1ZmckRlZmF1bHRTdG9yZSA9ICBDVmZyRGVmYXVsdFN0b3JlKCkNCj4gDQo+ICtnQ1ZmckRh dGFTdG9yYWdlID0gQ1ZmckRhdGFTdG9yYWdlKCkNCj4gDQo+ICsNCj4gDQo+ICsjIFRoaXMgY2xh c3MgZGVmaW5lcyBhIGNvbXBsZXRlIGdlbmVyaWMgdmlzaXRvciBmb3IgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlci4NCj4gDQo+ICtjbGFzcyBWZnJTeW50YXhWaXNp dG9yKFBhcnNlVHJlZVZpc2l0b3IpOg0KPiANCj4gKyAgICBnWmVyb0VmaUlmclR5cGVWYWx1ZSA9 IEVGSV9JRlJfVFlQRV9WQUxVRSgpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhz ZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCA9IE5vbmUNCj4g DQo+ICsgICAgICAgIHNlbGYuX19QYXJzZXJTdGF0dXMgPSAwDQo+IA0KPiArICAgICAgICBzZWxm Ll9fQ0lmck9wSGRySW5kZXggPSAtMQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0NvbnN0YW50T25s eUluRXhwcmVzc2lvbiA9IEZhbHNlDQo+IA0KPiArICAgICAgICBzZWxmLl9fVXNlZERlZmF1bHRB cnJheSA9IFtdDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLl9fQ1ZmclJ1bGVzREIgPSBD VmZyUnVsZXNEQigpDQo+IA0KPiArICAgICAgICBzZWxmLl9fQ0lmck9wSGRyID0gW10gICMNCj4g DQo+ICsgICAgICAgIHNlbGYuX19DSWZyT3BIZHJMaW5lTm8gPSBbXQ0KPiANCj4gKyAgICAgICAg c2VsZi5fX0N1cnJRZXN0VmFySW5mbyA9IEVGSV9WQVJTVE9SRV9JTkZPKCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHNlbGYuX19DVmZyUXVlc3Rpb25EQiA9IENWZnJRdWVzdGlvbkRCKCkNCj4g DQo+ICsgICAgICAgIHNlbGYuX19DdXJyZW50UXVlc3Rpb24gPSBOb25lDQo+IA0KPiArICAgICAg ICBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEgPSBOb25lICMNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19Jc1N0cmluZ09wID0gRmFsc2UNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Jc09y ZGVyZWRMaXN0ID0gRmFsc2UNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Jc0NoZWNrQm94T3AgPSBG YWxzZQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX1Jvb3QgPSBWZnJUcmVlTm9kZSgpDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciN2ZnJQcm9ncmFtLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJQcm9ncmFt KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyUHJvZ3JhbUNvbnRleHQpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgI3NlbGYuX19DVmZyUXVlc3Rpb25EQi5QcmludEFsbFF1ZXN0aW9uKCd0 ZXN0XFxRdWVzdGlvbnMudHh0JykNCj4gDQo+ICsgICAgICAgICNnQ1ZmclZhckRhdGFUeXBlREIu RHVtcCgidGVzdFxcRGF0YVR5cGVJbmZvLnR4dCIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBy ZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ByYWdtYVBhY2tTaG93 RGVmLg0KPiANCj4gKyAgICBkZWYgdmlzaXRQcmFnbWFQYWNrU2hvd0RlZihzZWxmLA0KPiBjdHg6 VmZyU3ludGF4UGFyc2VyLlByYWdtYVBhY2tTaG93RGVmQ29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIGdDVmZyVmFy RGF0YVR5cGVEQi5QYWNrKExpbmUsIFZGUl9QQUNLX1NIT1cpDQo+IA0KPiArICAgICAgICByZXR1 cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ByYWdtYVBh Y2tTdGFja0RlZi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0UHJhZ21hUGFja1N0YWNrRGVmKHNlbGYs DQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuUHJhZ21hUGFja1N0YWNrRGVmQ29udGV4dCk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBJZGVudGlmaWVyID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmlu Z0lkZW50aWZpZXIoKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHN0cihjdHguZ2V0Q2hp bGQoMCkpID09ICdwdXNoJzoNCj4gDQo+ICsgICAgICAgICAgICBBY3Rpb24gPSBWRlJfUEFDS19Q VVNIDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIEFjdGlvbiA9IFZG Ul9QQUNLX1BPUA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgQWN0aW9uIHw9IFZGUl9QQUNLX0FTU0lHTg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgUGFja051bWJlciA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KCksIERFRkFVTFRfUEFDS19BTElHTikNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQu bGluZQ0KPiANCj4gKyAgICAgICAgZ0NWZnJWYXJEYXRhVHlwZURCLlBhY2soTGluZSwgQWN0aW9u LCBJZGVudGlmaWVyLCBQYWNrTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNwcmFnbWFQYWNrTnVtYmVyLg0K PiANCj4gKyAgICBkZWYgdmlzaXRQcmFnbWFQYWNrTnVtYmVyKHNlbGYsDQo+IGN0eDpWZnJTeW50 YXhQYXJzZXIuUHJhZ21hUGFja051bWJlckNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBQYWNrTnVtYmVyID0gc2Vs Zi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSwgREVGQVVMVF9QQUNLX0FMSUdOKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZ0NWZnJWYXJEYXRhVHlwZURCLlBhY2soTGluZSwgVkZSX1BBQ0tfQVNT SUdOLCBOb25lLA0KPiBQYWNrTnVtYmVyKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJQcmFnbWFQYWNrRGVm aW5pdGlvbi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyUHJhZ21hUGFja0RlZmluaXRpb24oDQo+ IA0KPiArICAgICAgICAgICAgc2VsZiwgY3R4OiBWZnJTeW50YXhQYXJzZXIuVmZyUHJhZ21hUGFj a0RlZmluaXRpb25Db250ZXh0KToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRGF0YVN0cnVjdERlZmluaXRpb24u DQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckRhdGFTdHJ1Y3REZWZpbml0aW9uKHNlbGYsIGN0eDoN Cj4gVmZyU3ludGF4UGFyc2VyLlZmckRhdGFTdHJ1Y3REZWZpbml0aW9uQ29udGV4dCk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBnQ1ZmclZhckRhdGFUeXBlREIuRGVjbGFyZURhdGFUeXBlQmVn aW4oKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk4xICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5TZXROZXdUeXBlTmFt ZShjdHguTjEudGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJl dHVybkNvZGUsIGN0eC5OMS5saW5lLCBjdHguTjEudGV4dCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGlmIGN0eC5OMiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBn Q1ZmclZhckRhdGFUeXBlREIuU2V0TmV3VHlwZU5hbWUoY3R4Lk4yLnRleHQpDQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTjIubGluZSwgY3R4 Lk4yLnRleHQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZ0NWZnJWYXJEYXRhVHlwZURCLkRlY2xhcmVEYXRh VHlwZUVuZCgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gTm9uZQ0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjdmZyRGF0YVVuaW9uRGVmaW5pdGlvbi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0 VmZyRGF0YVVuaW9uRGVmaW5pdGlvbihzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckRh dGFVbmlvbkRlZmluaXRpb25Db250ZXh0KToNCj4gDQo+ICsgICAgICAgIGdDVmZyVmFyRGF0YVR5 cGVEQi5EZWNsYXJlRGF0YVR5cGVCZWdpbigpDQo+IA0KPiArICAgICAgICBpZiBjdHguTjEgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURC LlNldE5ld1R5cGVOYW1lKGN0eC5OMS50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4xLmxpbmUsIGN0eC5OMS50ZXh0KQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk4yICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg UmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5TZXROZXdUeXBlTmFtZShjdHguTjIudGV4 dCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0 eC5OMi5saW5lLCBjdHguTjIudGV4dCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBnQ1ZmclZhckRhdGFUeXBl REIuRGVjbGFyZURhdGFUeXBlRW5kKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBOb25lDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciN2ZnJEYXRhU3RydWN0RmllbGRzLg0KPiANCj4gKyAgICBkZWYgdmlz aXRWZnJEYXRhU3RydWN0RmllbGRzKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRGF0 YVN0cnVjdEZpZWxkc0NvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0Rmll bGQ2NC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0RGF0YVN0cnVjdEZpZWxkNjQoc2VsZiwNCj4gY3R4 OlZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0RmllbGQ2NENvbnRleHQpOg0KPiANCj4gKyAgICAg ICAgQXJyYXlOdW0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4gKyAgICAg ICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKGN0eC5O LnRleHQsDQo+ICdVSU5UNjQnLCBBcnJheU51bSwgY3R4LkZpZWxkSW5VbmlvbikNCj4gDQo+ICsg ICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwgY3R4Lk4u dGV4dCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkMzIuDQo+IA0KPiArICAgIGRlZiB2aXNp dERhdGFTdHJ1Y3RGaWVsZDMyKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVj dEZpZWxkMzJDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIEFycmF5TnVtID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoKSkNCj4gDQo+ICsgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRh dGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LA0KPiAnVUlOVDMyJywgQXJyYXlO dW0sIGN0eC5GaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVy KFJldHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+IA0KPiArICAgICAgICByZXR1 cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg IyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1 Y3RGaWVsZDE2Lg0KPiANCj4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGQxNihzZWxmLA0K PiBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZDE2Q29udGV4dCk6DQo+IA0KPiAr ICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiAr ICAgICAgICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQo Y3R4Lk4udGV4dCwNCj4gJ1VJTlQxNicsIEFycmF5TnVtLCBjdHguRmllbGRJblVuaW9uKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5lLCBj dHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGQ4Lg0KPiANCj4gKyAgICBkZWYg dmlzaXREYXRhU3RydWN0RmllbGQ4KHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0 cnVjdEZpZWxkOENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4gKyAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFy RGF0YVR5cGVEQi5EYXRhVHlwZUFkZEZpZWxkKGN0eC5OLnRleHQsDQo+ICdVSU5UOCcsIEFycmF5 TnVtLCBjdHguRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxl cihSZXR1cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgcmV0 dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3Ry dWN0RmllbGRCb29sLg0KPiANCj4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGRCb29sKHNl bGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkQm9vbENvbnRleHQpOg0K PiANCj4gKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0K PiANCj4gKyAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFk ZEZpZWxkKGN0eC5OLnRleHQsDQo+ICdCT09MRUFOJywgQXJyYXlOdW0sIGN0eC5GaWVsZEluVW5p b24pDQo+IA0KPiArICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5O LmxpbmUsIGN0eC5OLnRleHQpDQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZFN0cmluZy4NCj4g DQo+ICsgICAgZGVmIHZpc2l0RGF0YVN0cnVjdEZpZWxkU3RyaW5nKHNlbGYsDQo+IGN0eDpWZnJT eW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkU3RyaW5nQ29udGV4dCk6DQo+IA0KPiArICAgICAg ICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAg ICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQoY3R4Lk4u dGV4dCwNCj4gJ0VGSV9TVFJJTkdfSUQnLCBBcnJheU51bSwgY3R4LkZpZWxkSW5VbmlvbikNCj4g DQo+ICsgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4Lk4ubGluZSwg Y3R4Lk4udGV4dCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9k dWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZGF0YVN0cnVjdEZpZWxkRGF0ZS4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0RGF0YVN0cnVjdEZpZWxkRGF0ZShzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2Vy LkRhdGFTdHJ1Y3RGaWVsZERhdGVDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIEFycmF5TnVtID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gDQo+ICsgICAgICAgIFJldHVybkNvZGUg PSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LA0KPiAnRUZJ X0hJSV9EQVRFJywgQXJyYXlOdW0sIGN0eC5GaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBz ZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+ IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI2RhdGFTdHJ1Y3RGaWVsZFRpbWUuDQo+IA0KPiArICAgIGRlZiB2aXNpdERhdGFT dHJ1Y3RGaWVsZFRpbWUoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Rmll bGRUaW1lQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBBcnJheU51bSA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBSZXR1cm5Db2RlID0gZ0NWZnJWYXJEYXRh VHlwZURCLkRhdGFUeXBlQWRkRmllbGQoY3R4Lk4udGV4dCwNCj4gJ0VGSV9ISUlfVElNRScsIEFy cmF5TnVtLCBjdHguRmllbGRJblVuaW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihSZXR1cm5Db2RlLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRh U3RydWN0RmllbGRSZWYuDQo+IA0KPiArICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RGaWVsZFJlZihz ZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLkRhdGFTdHJ1Y3RGaWVsZFJlZkNvbnRleHQpOg0K PiANCj4gKyAgICAgICAgQXJyYXlOdW0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0K PiANCj4gKyAgICAgICAgUmV0dXJuQ29kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFk ZEZpZWxkKGN0eC5OLnRleHQsDQo+ICdFRklfSElJX1JFRicsIEFycmF5TnVtLCBjdHguRmllbGRJ blVuaW9uKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBj dHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0RmllbGRVc2VyLg0K PiANCj4gKyAgICBkZWYgdmlzaXREYXRhU3RydWN0RmllbGRVc2VyKHNlbGYsDQo+IGN0eDpWZnJT eW50YXhQYXJzZXIuRGF0YVN0cnVjdEZpZWxkVXNlckNvbnRleHQpOg0KPiANCj4gKyAgICAgICAg QXJyYXlOdW0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4gKyAgICAgICAg aWYgY3R4LlQudGV4dCAhPSAnQ0hBUjE2JzoNCj4gDQo+ICsgICAgICAgICAgICBSZXR1cm5Db2Rl ID0gZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkRmllbGQoY3R4Lk4udGV4dCwNCj4gY3R4 LlQudGV4dCwgQXJyYXlOdW0sIGN0eC5GaWVsZEluVW5pb24pDQo+IA0KPiArICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgIFJldHVybkNvZGUgPSBnQ1ZmclZhckRhdGFUeXBlREIuRGF0 YVR5cGVBZGRGaWVsZChjdHguTi50ZXh0LA0KPiAnVUlOVDE2JywgQXJyYXlOdW0sIGN0eC5GaWVs ZEluVW5pb24pDQo+IA0KPiArICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUs IGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2RhdGFTdHJ1Y3RCaXRGaWVsZDY0Lg0KPiANCj4g KyAgICBkZWYgdmlzaXREYXRhU3RydWN0Qml0RmllbGQ2NChzZWxmLA0KPiBjdHg6VmZyU3ludGF4 UGFyc2VyLkRhdGFTdHJ1Y3RCaXRGaWVsZDY0Q29udGV4dCk6DQo+IA0KPiArICAgICAgICBXaWR0 aCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBpZiBjdHgu TiAhPSBOb25lOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyVmFyRGF0YVR5 cGVEQi5EYXRhVHlwZUFkZEJpdEZpZWxkKGN0eC5OLnRleHQsDQo+ICdVSU5UNjQnLCBXaWR0aCwg Y3R4LkZpZWxkSW5VbmlvbiksIGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+IA0KPiArICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJWYXJE YXRhVHlwZURCLkRhdGFUeXBlQWRkQml0RmllbGQoTm9uZSwNCj4gJ1VJTlQ2NCcsIFdpZHRoLCBj dHguRmllbGRJblVuaW9uKSwgY3R4LkQubGluZSwgY3R4LkQudGV4dCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjZGF0YVN0cnVjdEJpdEZpZWxkMzIuDQo+IA0KPiArICAgIGRlZiB2aXNpdERhdGFTdHJ1 Y3RCaXRGaWVsZDMyKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0YVN0cnVjdEJpdEZp ZWxkMzJDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIFdpZHRoID0gc2VsZi5fX1RyYW5zTnVtKGN0 eC5OdW1iZXIoKSkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5OICE9IE5vbmU6DQo+IA0KPiArDQo+ IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlQWRkQml0Rmll bGQoY3R4Lk4udGV4dCwNCj4gJ1VJTlQzMicsIFdpZHRoLCBjdHguRmllbGRJblVuaW9uKSwgY3R4 Lk4ubGluZSwgY3R4Lk4udGV4dCkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRC aXRGaWVsZChOb25lLA0KPiAnVUlOVDMyJywgV2lkdGgsIGN0eC5GaWVsZEluVW5pb24pLCBjdHgu RC5saW5lLCBjdHguRC50ZXh0KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkYXRhU3RydWN0Qml0RmllbGQxNi4NCj4g DQo+ICsgICAgZGVmIHZpc2l0RGF0YVN0cnVjdEJpdEZpZWxkMTYoc2VsZiwNCj4gY3R4OlZmclN5 bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQxNkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAg V2lkdGggPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4gKyAgICAgICAgaWYg Y3R4Lk4gIT0gTm9uZToNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmclZhckRh dGFUeXBlREIuRGF0YVR5cGVBZGRCaXRGaWVsZChjdHguTi50ZXh0LA0KPiAnVUlOVDE2JywgV2lk dGgsIGN0eC5GaWVsZEluVW5pb24pLCBjdHguTi5saW5lLCBjdHguTi50ZXh0KQ0KPiANCj4gKyAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZy VmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEJpdEZpZWxkKE5vbmUsDQo+ICdVSU5UMTYnLCBXaWR0 aCwgY3R4LkZpZWxkSW5VbmlvbiksIGN0eC5ELmxpbmUsIGN0eC5ELnRleHQpDQo+IA0KPiArICAg ICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I2RhdGFTdHJ1Y3RCaXRGaWVsZDguDQo+IA0KPiArICAgIGRlZiB2aXNpdERhdGFTdHJ1Y3RCaXRG aWVsZDgoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5EYXRhU3RydWN0Qml0RmllbGQ4Q29u dGV4dCk6DQo+IA0KPiArICAgICAgICBXaWR0aCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVy KCkpDQo+IA0KPiArICAgICAgICBpZiBjdHguTiAhPSBOb25lOg0KPiANCj4gKw0KPiBzZWxmLl9f RXJyb3JIYW5kbGVyKGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUFkZEJpdEZpZWxkKGN0eC5O LnRleHQsDQo+ICdVSU5UOCcsIFdpZHRoLCBjdHguRmllbGRJblVuaW9uKSwgY3R4Lk4ubGluZSwg Y3R4Lk4udGV4dCkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihnQ1ZmclZhckRhdGFUeXBlREIuRGF0YVR5cGVBZGRCaXRGaWVsZChO b25lLA0KPiAnVUlOVDgnLCBXaWR0aCwgY3R4LkZpZWxkSW5VbmlvbiksIGN0eC5ELmxpbmUsIGN0 eC5ELnRleHQpDQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9fRGVjbGFyZVN0YW5kYXJkRGVmYXVsdFN0b3JhZ2Uo c2VsZiwgTGluZU5vKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIERTT2JqID0gQ0lmckRlZmF1 bHRTdG9yZSgpDQo+IA0KPiArICAgICAgICBnQ1ZmckRlZmF1bHRTdG9yZS5SZWdpc3RlckRlZmF1 bHRTdG9yZShEU09iai5HZXREZWZhdWx0U3RvcmUoKSwNCj4gIlN0YW5kYXJkIERlZmF1bHRzIiwg RUZJX1NUUklOR19JRF9JTlZBTElELA0KPiBFRklfSElJX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQp DQo+IA0KPiArICAgICAgICBEU09iai5TZXRMaW5lTm8gKExpbmVObykNCj4gDQo+ICsgICAgICAg IERTT2JqLlNldERlZmF1bHROYW1lIChFRklfU1RSSU5HX0lEX0lOVkFMSUQpDQo+IA0KPiArICAg ICAgICBEU09iai5TZXREZWZhdWx0SWQgKEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIERTT2JqTUYgPSBDSWZyRGVmYXVsdFN0b3JlKCkNCj4g DQo+ICsgICAgICAgIGdDVmZyRGVmYXVsdFN0b3JlLlJlZ2lzdGVyRGVmYXVsdFN0b3JlKERTT2Jq TUYuR2V0RGVmYXVsdFN0b3JlKCksDQo+ICJTdGFuZGFyZCBNYW51RmFjdHVyaW5nIiwgRUZJX1NU UklOR19JRF9JTlZBTElELA0KPiBFRklfSElJX0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RVUklORykN Cj4gDQo+ICsgICAgICAgIERTT2JqTUYuU2V0TGluZU5vIChMaW5lTm8pDQo+IA0KPiArICAgICAg ICBEU09iak1GLlNldERlZmF1bHROYW1lIChFRklfU1RSSU5HX0lEX0lOVkFMSUQpDQo+IA0KPiAr ICAgICAgICBEU09iak1GLlNldERlZmF1bHRJZCAoRUZJX0hJSV9ERUZBVUxUX0NMQVNTX01BTlVG QUNUVVJJTkcpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3JtU2V0RGVmaW5pdGlvbi4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VmZyRm9ybVNldERlZmluaXRpb24oc2VsZiwNCj4gY3R4OlZmclN5 bnRheFBhcnNlci5WZnJGb3JtU2V0RGVmaW5pdGlvbkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAg c2VsZi5fX0luc2VydENoaWxkKHNlbGYuX19Sb290LCBjdHgpDQo+IA0KPiArICAgICAgICBzZWxm Ll9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIGN0eC5jbGFzc0RlZmluaXRpb24oKSkNCj4gDQo+ICsg ICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgY3R4LnN1YmNsYXNzRGVmaW5pdGlv bigpKQ0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAg ICBzZWxmLl9fRGVjbGFyZVN0YW5kYXJkRGVmYXVsdFN0b3JhZ2UoTGluZSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBDbGFz c0d1aWROdW0gPSAwDQo+IA0KPiArICAgICAgICBHdWlkTGlzdCA9IFtdDQo+IA0KPiArICAgICAg ICBpZiBjdHguY2xhc3NndWlkRGVmaW5pdGlvbigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgR3VpZExpc3QgPSBjdHguY2xhc3NndWlkRGVmaW5pdGlvbigpLkd1aWRMaXN0DQo+IA0KPiAr ICAgICAgICAgICAgQ2xhc3NHdWlkTnVtID0gbGVuKEd1aWRMaXN0KQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgRGVmYXVsdENsYXNzR3VpZCA9IEVGSV9ISUlfUExBVEZPUk1fU0VUVVBfRk9STVNF VF9HVUlEDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiAoc2VsZi5fX092ZXJyaWRlQ2xhc3NH dWlkICE9IE5vbmUgYW5kIENsYXNzR3VpZE51bSA+PTQpOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4g TGluZSwgTm9uZSwgJ0FscmVhZHkgaGFzIDQgY2xhc3MgZ3VpZHMsIGNhbiBub3QgYWRkIGV4dHJh IGNsYXNzIGd1aWQhJykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIENsYXNzR3VpZE51bSA9 PSAwOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0gID0gMg0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIENsYXNzR3VpZE51bSAgPSAx DQo+IA0KPiArICAgICAgICAgICAgRlNPYmogPSBDSWZyRm9ybVNldChzaXplb2YoRUZJX0lGUl9G T1JNX1NFVCkgKyBDbGFzc0d1aWROdW0gKg0KPiBzaXplb2YoRUZJX0dVSUQpKQ0KPiANCj4gKyAg ICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChEZWZhdWx0Q2xhc3NHdWlkKQ0KPiANCj4gKyAg ICAgICAgICAgIGlmIChzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZSk6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1 aWQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIENsYXNzR3VpZE51bSA9PSAxOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0gICs9IDENCj4gDQo+ICsgICAgICAgICAg ICBGU09iaiA9IENJZnJGb3JtU2V0KHNpemVvZihFRklfSUZSX0ZPUk1fU0VUKSArIENsYXNzR3Vp ZE51bSAqDQo+IHNpemVvZihFRklfR1VJRCkpDQo+IA0KPiArICAgICAgICAgICAgRlNPYmouU2V0 Q2xhc3NHdWlkKEd1aWRMaXN0WzBdKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIChzZWxmLl9fT3Zl cnJpZGVDbGFzc0d1aWQgIT0gTm9uZSk6DQo+IA0KPiArICAgICAgICAgICAgICAgIEZTT2JqLlNl dENsYXNzR3VpZChzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBlbGlmIENsYXNzR3VpZE51bSA9PSAyOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYu X19PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBDbGFz c0d1aWROdW0gKz0gMQ0KPiANCj4gKyAgICAgICAgICAgIEZTT2JqID0gQ0lmckZvcm1TZXQoc2l6 ZW9mKEVGSV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICoNCj4gc2l6ZW9mKEVGSV9HVUlE KSkNCj4gDQo+ICsgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMF0pDQo+ IA0KPiArICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzFdKQ0KPiANCj4g KyAgICAgICAgICAgIGlmIChzZWxmLl9fT3ZlcnJpZGVDbGFzc0d1aWQgIT0gTm9uZSk6DQo+IA0K PiArICAgICAgICAgICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChzZWxmLl9fT3ZlcnJpZGVDbGFz c0d1aWQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIENsYXNzR3VpZE51bSA9PSAzOg0K PiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCAhPSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICBDbGFzc0d1aWROdW0gICs9IDENCj4gDQo+ICsgICAgICAg ICAgICBGU09iaiA9IENJZnJGb3JtU2V0KHNpemVvZihFRklfSUZSX0ZPUk1fU0VUKSArIENsYXNz R3VpZE51bSAqDQo+IHNpemVvZihFRklfR1VJRCkpDQo+IA0KPiArICAgICAgICAgICAgRlNPYmou U2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzBdKQ0KPiANCj4gKyAgICAgICAgICAgIEZTT2JqLlNldENs YXNzR3VpZChHdWlkTGlzdFsxXSkNCj4gDQo+ICsgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1 aWQoR3VpZExpc3RbMl0pDQo+IA0KPiArICAgICAgICAgICAgaWYgKHNlbGYuX19PdmVycmlkZUNs YXNzR3VpZCAhPSBOb25lKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NH dWlkKHNlbGYuX19PdmVycmlkZUNsYXNzR3VpZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVs aWYgQ2xhc3NHdWlkTnVtID09IDQ6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5fX092ZXJy aWRlQ2xhc3NHdWlkICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIENsYXNzR3VpZE51 bSAgKz0gMQ0KPiANCj4gKyAgICAgICAgICAgIEZTT2JqID0gQ0lmckZvcm1TZXQoc2l6ZW9mKEVG SV9JRlJfRk9STV9TRVQpICsgQ2xhc3NHdWlkTnVtICoNCj4gc2l6ZW9mKEVGSV9HVUlEKSkNCj4g DQo+ICsgICAgICAgICAgICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbMF0pDQo+IA0KPiAr ICAgICAgICAgICAgRlNPYmouU2V0Q2xhc3NHdWlkKEd1aWRMaXN0WzFdKQ0KPiANCj4gKyAgICAg ICAgICAgIEZTT2JqLlNldENsYXNzR3VpZChHdWlkTGlzdFsyXSkNCj4gDQo+ICsgICAgICAgICAg ICBGU09iai5TZXRDbGFzc0d1aWQoR3VpZExpc3RbM10pDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBGU09iai5TZXRMaW5lTm8oTGluZSkNCj4gDQo+ICsgICAgICAgIEZTT2JqLlNldEd1aWQoY3R4 Lmd1aWREZWZpbml0aW9uKCkuR3VpZCkNCj4gDQo+ICsgICAgICAgIEZTT2JqLlNldEZvcm1TZXRU aXRsZShzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkpDQo+IA0KPiArICAgICAgICBGU09i ai5TZXRIZWxwKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBGU09iag0KPiANCj4gKyAgICAgICAgIyBEZWNsYXJl IHVuZGVmaW5lZCBRdWVzdGlvbiBzbyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lv bi4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj Y2xhc3NndWlkRGVmaW5pdGlvbi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0Q2xhc3NndWlkRGVmaW5p dGlvbihzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLkNsYXNzZ3VpZERlZmluaXRpb25Db250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBmb3IgR3VpZEN0eCBpbiBjdHguZ3VpZERlZmluaXRpb24o KToNCj4gDQo+ICsgICAgICAgICAgICBjdHguR3VpZExpc3QuYXBwZW5kKEd1aWRDdHguR3VpZCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjY2xhc3NEZWZpbml0aW9uLg0KPiANCj4gKyAgICBkZWYgdmlzaXRDbGFzc0RlZmluaXRp b24oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5DbGFzc0RlZmluaXRpb25Db250ZXh0KToNCj4g DQo+ICsgICAgICAgIENPYmogPSBDSWZyQ2xhc3MoKQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIENsYXNzID0gMA0KPiANCj4gKyAgICAgICAg Zm9yIENsYXNzTmFtZUN0eCBpbiBjdHgudmFsaWRDbGFzc05hbWVzKCk6DQo+IA0KPiArICAgICAg ICAgICAgQ2xhc3MgfD0gQ2xhc3NOYW1lQ3R4LkNsYXNzTmFtZQ0KPiANCj4gKyAgICAgICAgTGlu ZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBDT2JqLlNldExpbmVObyhMaW5lKQ0K PiANCj4gKyAgICAgICAgQ09iai5TZXRDbGFzcyhDbGFzcykNCj4gDQo+ICsgICAgICAgIGN0eC5O b2RlLkRhdGEgPSBDT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZhbGlkQ2xhc3NOYW1lcy4NCj4gDQo+ICsgICAgZGVmIHZp c2l0VmFsaWRDbGFzc05hbWVzKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmFsaWRDbGFz c05hbWVzQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LkNsYXNzTm9uRGV2aWNlKCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguQ2xhc3NOYW1lID0gRUZJX05PTl9ERVZJ Q0VfQ0xBU1MNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzRGlza0RldmljZSgpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9ESVNLX0RFVklDRV9D TEFTUw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguQ2xhc3NWaWRlb0RldmljZSgpICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9WSURFT19ERVZJQ0VfQ0xB U1MNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzTmV0d29ya0RldmljZSgpICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9ORVRXT1JLX0RFVklDRV9D TEFTUw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguQ2xhc3NJbnB1dERldmljZSgpICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9JTlBVVF9ERVZJQ0VfQ0xB U1MNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzT25Cb2FyZERldmljZSgpICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgY3R4LkNsYXNzTmFtZSA9IEVGSV9PTl9CT0FSRF9ERVZJQ0Vf Q0xBU1MNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LkNsYXNzT3RoZXJEZXZpY2UoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5DbGFzc05hbWUgPSBFRklfT1RIRVJfREVWSUNFX0NM QVNTDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5DbGFzc05h bWUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgcmV0dXJuIGN0eC5DbGFzc05hbWUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3N1YmNsYXNzRGVm aW5pdGlvbi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0U3ViY2xhc3NEZWZpbml0aW9uKHNlbGYsDQo+ IGN0eDpWZnJTeW50YXhQYXJzZXIuU3ViY2xhc3NEZWZpbml0aW9uQ29udGV4dCk6DQo+IA0KPiAr ICAgICAgICBTdWJPYmogPSBDSWZyU3ViQ2xhc3MoKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIExpbmUgPSBj dHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgU3ViT2JqLlNldExpbmVObyhMaW5lKQ0KPiAN Cj4gKyAgICAgICAgU3ViQ2xhc3MgPSAwDQo+IA0KPiArICAgICAgICBpZiBjdHguU3ViY2xhc3NT ZXR1cEFwcGxpY2F0aW9uKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBTdWJDbGFzcyB8 PSBFRklfU0VUVVBfQVBQTElDQVRJT05fU1VCQ0xBU1MNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4 LlN1YmNsYXNzR2VuZXJhbEFwcGxpY2F0aW9uKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBTdWJDbGFzcyB8PSBFRklfR0VORVJBTF9BUFBMSUNBVElPTl9TVUJDTEFTUw0KPiANCj4gKyAg ICAgICAgZWxpZiBjdHguU3ViY2xhc3NGcm9udFBhZ2UoKSAhPSBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgIFN1YkNsYXNzIHw9IEVGSV9GUk9OVF9QQUdFX1NVQkNMQVNTDQo+IA0KPiArICAgICAg ICBlbGlmIGN0eC5TdWJjbGFzc1NpbmdsZVVzZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgU3ViQ2xhc3MgfD0gRUZJX1NJTkdMRV9VU0VfU1VCQ0xBU1MNCj4gDQo+ICsgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgU3ViQ2xhc3MgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51 bWJlcigpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgU3ViT2JqLlNldFN1YkNsYXNzKFN1YkNs YXNzKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFN1Yk9iag0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3Jt U2V0TGlzdC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyRm9ybVNldExpc3Qoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5WZnJGb3JtU2V0TGlzdENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmckZv cm1TZXQoKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUs IEN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjdmZyRm9ybVNldC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyRm9ybVNldChzZWxmLCBjdHg6 VmZyU3ludGF4UGFyc2VyLlZmckZvcm1TZXRDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyRm9y bURlZmluaXRpb24oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4 LnZmckZvcm1EZWZpbml0aW9uKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmckZvcm1N YXBEZWZpbml0aW9uKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJGb3JtTWFwRGVmaW5pdGlvbigpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJT dGF0ZW1lbnRJbWFnZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBj dHgudmZyU3RhdGVtZW50SW1hZ2UoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3Rh dGVtZW50VmFyU3RvcmVMaW5lYXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5O b2RlID0gY3R4LnZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKCkuTm9kZQ0KPiANCj4gKyAgICAg ICAgaWYgY3R4LnZmclN0YXRlbWVudFZhclN0b3JlRWZpKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaSgpLk5vZGUNCj4g DQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZSgpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50VmFyU3Rv cmVOYW1lVmFsdWUoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RGVm YXVsdFN0b3JlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJTdGF0ZW1lbnREZWZhdWx0U3RvcmUoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZy U3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg Y3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50RGlzYWJsZUlmRm9ybVNldCgpLk5vZGUNCj4gDQo+ ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmRm9ybVNldCgpICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50U3VwcHJlc3NJ ZkZvcm1TZXQoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50RXh0ZW5z aW9uKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0 ZW1lbnRFeHRlbnNpb24oKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4 Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERlZmF1bHRTdG9yZS4NCj4gDQo+ICsg ICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlKHNlbGYsDQo+IGN0eDpWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50RGVmYXVsdFN0b3JlQ29udGV4dCk6DQo+IA0KPiArICAgICAg ICBEU09iaiA9IENJZnJEZWZhdWx0U3RvcmUoKQ0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5z dGFydC5saW5lDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgUmVmTmFtZSA9IGN0eC5OLnRleHQNCj4gDQo+ICsgICAgICAgIERl ZmF1bHRTdG9yZU5hbWVJZCA9IHNlbGYuX19UcmFuc051bShjdHguUy50ZXh0KQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgRGVmYXVsdElkID0gRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJE IGlmIGN0eC5BdHRyaWJ1dGUoKT09DQo+IE5vbmUgZWxzZSBzZWxmLl9fVHJhbnNOdW0oY3R4LkEu dGV4dCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGdDVmZyRGVmYXVsdFN0b3JlLkRlZmF1 bHRJZFJlZ2lzdGVyZWQoRGVmYXVsdElkKSA9PSBGYWxzZToNCj4gDQo+ICsNCj4gc2VsZi5fX0Vy cm9ySGFuZGxlcihnQ1ZmckRlZmF1bHRTdG9yZS5SZWdpc3RlckRlZmF1bHRTdG9yZShEU09iai5H ZXREZWZhDQo+IHVsdFN0b3JlKCksIFJlZk5hbWUsIERlZmF1bHRTdG9yZU5hbWVJZCwgRGVmYXVs dElkKSAsIExpbmUpDQo+IA0KPiArICAgICAgICAgICAgRFNPYmouU2V0RGVmYXVsdE5hbWUoRGVm YXVsdFN0b3JlTmFtZUlkKQ0KPiANCj4gKyAgICAgICAgICAgIERTT2JqLlNldERlZmF1bHRJZCAo RGVmYXVsdElkKQ0KPiANCj4gKyAgICAgICAgICAgIERTT2JqLlNldExpbmVObyhMaW5lKQ0KPiAN Cj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBwTm9kZSwgUmV0dXJuQ29kZSA9 DQo+IGdDVmZyRGVmYXVsdFN0b3JlLlJlUmVnaXN0ZXJEZWZhdWx0U3RvcmVCeUlkKERlZmF1bHRJ ZCwgUmVmTmFtZSwNCj4gRGVmYXVsdFN0b3JlTmFtZUlkKQ0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBE U09iai5TZXREZWZhdWx0U3RvcmUgPSBwTm9kZS5PYmpBZGRyDQo+IA0KPiArICAgICAgICAgICAg RFNPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5E YXRhID0gRFNPYmoNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXIuDQo+IA0KPiAr ICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFZhclN0b3JlTGluZWFyKHNlbGYsDQo+IGN0eDpWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyU3RvcmVMaW5lYXJDb250ZXh0KToNCj4gDQo+ICsg ICAgICAgIFZTT2JqID0gQ0lmclZhclN0b3JlKCkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ ICsgICAgICAgIFZTT2JqLlNldExpbmVObyhMaW5lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg VHlwZU5hbWUgPSBzdHIoY3R4LmdldENoaWxkKDEpKQ0KPiANCj4gKyAgICAgICAgaWYgVHlwZU5h bWUgPT0gJ0NIQVIxNic6DQo+IA0KPiArICAgICAgICAgICAgVHlwZU5hbWUgPSAnVUlOVDE2Jw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgSXNCaXRWYXJTdG9yZSA9IEZhbHNlDQo+IA0KPiArICAg ICAgICBpZiBjdHguVE4gIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBJc0JpdFZhclN0b3Jl ID0gZ0NWZnJWYXJEYXRhVHlwZURCLkRhdGFUeXBlSGFzQml0RmllbGQoY3R4LlROLnRleHQpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBWYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFM SUQNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5WYXJJZCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgVmFyU3RvcmVJZCA9IHNlbGYuX19UcmFuc051bShjdHguSUQudGV4dCkNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihWYXJTdG9yZUlkIT0wLCBUcnVl LCBjdHguSUQubGluZSwNCj4gY3R4LklELnRleHQsICd2YXJpZCAwIGlzIG5vdCBhbGxvd2VkLicp DQo+IA0KPiArICAgICAgICBTdG9yZU5hbWUgPSBjdHguU04udGV4dA0KPiANCj4gKyAgICAgICAg R3VpZCA9IGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9y SGFuZGxlcihnQ1ZmckRhdGFTdG9yYWdlLkRlY2xhcmVCdWZmZXJWYXJTdG9yZShTdG9yZU5hbWUs DQo+IEd1aWQsIGdDVmZyVmFyRGF0YVR5cGVEQiwgVHlwZU5hbWUsIFZhclN0b3JlSWQsIElzQml0 VmFyU3RvcmUpLCBMaW5lKQ0KPiANCj4gKyAgICAgICAgVlNPYmouU2V0R3VpZChHdWlkKQ0KPiAN Cj4gKyAgICAgICAgVmFyU3RvcmVJZCwgUmV0dXJuQ29kZSA9IGdDVmZyRGF0YVN0b3JhZ2UuR2V0 VmFyU3RvcmVJZChTdG9yZU5hbWUsDQo+IEd1aWQpDQo+IA0KPiArICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTi5saW5lLCBjdHguU04udGV4dCkNCj4gDQo+ICsg ICAgICAgIFZTT2JqLlNldFZhclN0b3JlSWQoVmFyU3RvcmVJZCkNCj4gDQo+ICsgICAgICAgIFNp emUsIFJldHVybkNvZGUgPQ0KPiBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlU eXBlTmFtZShUeXBlTmFtZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0 dXJuQ29kZSwgTGluZSkNCj4gDQo+ICsgICAgICAgIFZTT2JqLlNldFNpemUoU2l6ZSkNCj4gDQo+ ICsgICAgICAgIFZTT2JqLlNldE5hbWUoU3RvcmVOYW1lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgY3R4Lk5vZGUuRGF0YSA9IFZTT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g VlNPYmoNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFZhclN0b3JlRWZpLg0K PiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRWYXJTdG9yZUVmaShzZWxmLA0KPiBjdHg6 VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFZhclN0b3JlRWZpQ29udGV4dCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBWU0VPYmogPSBDSWZyVmFyU3RvcmVFZmkoKQ0KPiANCj4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3Rh cnQubGluZQ0KPiANCj4gKyAgICAgICAgVlNFT2JqLlNldExpbmVObyhMaW5lKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgR3VpZCA9IGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIEN1c3RvbWl6ZWROYW1lID0gRmFsc2UNCj4gDQo+ICsgICAgICAgIElz Qml0VmFyU3RvcmUgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAgVmFyU3RvcmVJZCA9IEVGSV9WQVJT VE9SRV9JRF9JTlZBTElEDQo+IA0KPiArICAgICAgICBJc1VFRkkyM0VmaVZhcnN0b3JlID0gVHJ1 ZQ0KPiANCj4gKyAgICAgICAgUmV0dXJuQ29kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIFR5cGVOYW1lID0gc3RyKGN0eC5nZXRDaGlsZCgxKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGlmIFR5cGVOYW1lID09ICdDSEFSMTYnOg0KPiANCj4gKyAgICAgICAgICAgIFR5cGVOYW1l ID0gJ1VJTlQxNicNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LlROICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgQ3VzdG9taXplZE5hbWUgPSBUcnVlDQo+IA0KPiArICAgICAg ICAgICAgSXNCaXRWYXJTdG9yZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5EYXRhVHlwZUhhc0JpdEZp ZWxkKFR5cGVOYW1lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LlZhcklkKCkgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0 eC5JRC50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19Db21wYXJlRXJyb3JIYW5kbGVy KFZhclN0b3JlSWQhPTAsIFRydWUsIGN0eC5JRC5saW5lLA0KPiBjdHguSUQudGV4dCwgJ3Zhcmlk IDAgaXMgbm90IGFsbG93ZWQuJykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEF0dHJpYnV0ZXMg PSAwDQo+IA0KPiArICAgICAgICBmb3IgQXRyQ3R4IGluIGN0eC52ZnJWYXJTdG9yZUVmaUF0dHIo KToNCj4gDQo+ICsgICAgICAgICAgICBBdHRyaWJ1dGVzIHw9IEF0ckN0eC5BdHRyDQo+IA0KPiAr ICAgICAgICBWU0VPYmouU2V0QXR0cmlidXRlcyhBdHRyaWJ1dGVzKQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgaWYgY3R4LlNOICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgU3RvcmVOYW1l ID0gY3R4LlNOLnRleHQNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg SXNVRUZJMjNFZmlWYXJzdG9yZSA9IEZhbHNlDQo+IA0KPiArICAgICAgICAgICAgTmFtZVN0cmlu Z0lkID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5WTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIFN0 b3JlTmFtZSA9DQo+IGdDVmZyU3RyaW5nREIuR2V0VmFyU3RvcmVOYW1lRnJvbVN0cmluZ0lkKE5h bWVTdHJpbmdJZCkgIw0KPiANCj4gKyAgICAgICAgICAgIGlmIFN0b3JlTmFtZSA9PSBOb25lOg0K PiANCj4gKw0KPiBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX1VOU1VQUE9SDQo+IFRFRCwgY3R4LlZOLmxpbmUsICdDYW5cJ3QgZ2V0IHZhcnN0 b3JlIG5hbWUgZm9yIHRoaXMgU3RyaW5nSWQhJykNCj4gDQo+ICsgICAgICAgICAgICBpZiBub3Qo Q3VzdG9taXplZE5hbWUpOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5k bGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gTGluZSwgJ09sZCBz dHlsZSBlZml2YXJzdG9yZSBtdXN0IGhhdmUgU3RyaW5nIElkZW50aWZpZXIhJykNCj4gDQo+ICsg ICAgICAgICAgICBTaXplID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OLnRleHQpDQo+IA0KPiArICAg ICAgICAgICAgaWYgU2l6ZSA9PSAxOiBUeXBlTmFtZSA9ICdVSU5UOCcNCj4gDQo+ICsgICAgICAg ICAgICBlbGlmIFNpemUgPT0gMjogVHlwZU5hbWUgPSAnVUlOVDE2Jw0KPiANCj4gKyAgICAgICAg ICAgIGVsaWYgU2l6ZSA9PSA0OiBUeXBlTmFtZSA9ICdVSU5UMzInDQo+IA0KPiArICAgICAgICAg ICAgZWxpZiBTaXplID09IDg6IFR5cGVOYW1lID0gJ1VJTlQ2NCcNCj4gDQo+ICsgICAgICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gY3R4Lk4ubGluZSwgY3R4Lk4udGV4 dCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIElzVUVGSTIzRWZpVmFyc3RvcmU6DQo+IA0K PiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJEYXRhU3RvcmFnZS5EZWNsYXJlQnVmZmVy VmFyU3RvcmUoU3RvcmVOYW1lLA0KPiBHdWlkLCBnQ1ZmclZhckRhdGFUeXBlREIsIFR5cGVOYW1l LCBWYXJTdG9yZUlkLCBJc0JpdFZhclN0b3JlLA0KPiBBdHRyaWJ1dGVzKSwgTGluZSkNCj4gDQo+ ICsgICAgICAgICAgICBWYXJTdG9yZUlkLCBSZXR1cm5Db2RlID0NCj4gZ0NWZnJEYXRhU3RvcmFn ZS5HZXRWYXJTdG9yZUlkKFN0b3JlTmFtZSwgR3VpZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5TTi5saW5lLCBjdHguU04udGV4dCkNCj4g DQo+ICsgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0NCj4gZ0NWZnJWYXJEYXRhVHlwZURC LkdldERhdGFUeXBlU2l6ZUJ5VHlwZU5hbWUoVHlwZU5hbWUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lKQ0KPiANCj4gKyAgICAgICAgZWxz ZToNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmckRhdGFTdG9yYWdlLkRlY2xh cmVCdWZmZXJWYXJTdG9yZShzZWxmLl9fR2V0VGV4DQo+IHQoY3R4LlROKSwgR3VpZCwgZ0NWZnJW YXJEYXRhVHlwZURCLCBUeXBlTmFtZSwgVmFyU3RvcmVJZCwgSXNCaXRWYXJTdG9yZSwNCj4gQXR0 cmlidXRlcyksIExpbmUpICMNCj4gDQo+ICsgICAgICAgICAgICBWYXJTdG9yZUlkLCBSZXR1cm5D b2RlID0NCj4gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZUlkKHNlbGYuX19HZXRUZXh0KGN0 eC5UTiksIEd1aWQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1 cm5Db2RlLCBjdHguVk4ubGluZSwgY3R4LlZOLnRleHQpDQo+IA0KPiArICAgICAgICAgICAgU2l6 ZSwgUmV0dXJuQ29kZSA9DQo+IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeVR5 cGVOYW1lKFR5cGVOYW1lKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIo UmV0dXJuQ29kZSwgY3R4Lk4ubGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFZTRU9iai5T ZXRHdWlkKEd1aWQpDQo+IA0KPiArICAgICAgICBWU0VPYmouU2V0VmFyU3RvcmVJZCAoVmFyU3Rv cmVJZCkNCj4gDQo+ICsgICAgICAgIFZTRU9iai5TZXRTaXplKFNpemUpDQo+IA0KPiArICAgICAg ICBWU0VPYmouU2V0TmFtZShTdG9yZU5hbWUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBjdHgu Tm9kZS5EYXRhID0gVlNFT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3ZmclZhclN0b3JlRWZpQXR0ci4NCj4gDQo+ICsgICAgZGVmIHZpc2l0 VmZyVmFyU3RvcmVFZmlBdHRyKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyVmFyU3Rv cmVFZmlBdHRyQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgY3R4LkF0dHIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcigpKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5BdHRyDQo+IA0KPiArDQo+IA0K PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNl ciN2ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZy U3RhdGVtZW50VmFyU3RvcmVOYW1lVmFsdWUoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5W ZnJTdGF0ZW1lbnRWYXJTdG9yZU5hbWVWYWx1ZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgVlNOVk9iaiA9IENJZnJWYXJTdG9yZU5hbWVWYWx1ZSgpDQo+IA0KPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgR3VpZCA9IGN0 eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQNCj4gDQo+ICsgICAgICAgIEhhc1ZhclN0b3JlSWQgPSBG YWxzZQ0KPiANCj4gKyAgICAgICAgVmFyU3RvcmVJZCA9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElE DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguVmFySWQoKSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIEhhc1ZhclN0b3JlSWQgPSBUcnVlDQo+IA0KPiArICAgICAgICAgICAgVmFy U3RvcmVJZCA9IHNlbGYuX19UcmFuc051bShjdHguSUQudGV4dCkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihWYXJTdG9yZUlkICE9MCwgVHJ1ZSwgY3R4LklE LmxpbmUsDQo+IGN0eC5JRC50ZXh0LCAndmFyaWQgMCBpcyBub3QgYWxsb3dlZCcpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBTdG9yZU5hbWUgPSBjdHguU04udGV4dA0KPiANCj4gKyAgICAgICAg Q3JlYXRlZCA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzSW5kZXggPSAwIGlmICBI YXNWYXJTdG9yZUlkID09IEZhbHNlIGVsc2UgMQ0KPiANCj4gKyAgICAgICAgZUluZGV4ID0gbGVu KGN0eC5OYW1lKCkpDQo+IA0KPiArICAgICAgICBmb3IgaSBpbiByYW5nZShzSW5kZXgsIGVJbmRl eCk6DQo+IA0KPiArICAgICAgICAgICAgaWYgQ3JlYXRlZCA9PSBGYWxzZToNCj4gDQo+ICsNCj4g c2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmckRhdGFTdG9yYWdlLkRlY2xhcmVOYW1lVmFyU3RvcmVC ZWdpbihTdG9yZU5hDQo+IG1lLCBWYXJTdG9yZUlkKSwgY3R4LlNOLmxpbmUsIGN0eC5TTi50ZXh0 KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBDcmVhdGVkID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAg ICAgIEl0ZW0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihpKSkNCj4gDQo+ICsgICAgICAg ICAgICBnQ1ZmckRhdGFTdG9yYWdlLk5hbWVUYWJsZUFkZEl0ZW0oSXRlbSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGdDVmZyRGF0YVN0b3JhZ2UuRGVjbGFyZU5hbWVWYXJTdG9yZUVuZChHdWlk KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVlNOVk9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0Lmxp bmUpDQo+IA0KPiArICAgICAgICBWU05WT2JqLlNldEd1aWQoR3VpZCkNCj4gDQo+ICsgICAgICAg IFZhcnN0b3JlSWQsIFJldHVybkNvZGUgPSBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQo U3RvcmVOYW1lLA0KPiBHdWlkKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihS ZXR1cm5Db2RlLCBjdHguU04ubGluZSwgY3R4LlNOLnRleHQpDQo+IA0KPiArICAgICAgICBWU05W T2JqLlNldFZhclN0b3JlSWQoVmFyc3RvcmVJZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0 eC5Ob2RlLkRhdGEgPSBWU05WT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4 Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQuDQo+IA0K PiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERpc2FibGVJZkZvcm1TZXQoc2VsZiwNCj4gY3R4 OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnREaXNhYmxlSWZGb3JtU2V0Q29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBESU9iaiA9IENJZnJEaXNhYmxlSWYoKQ0KPiANCj4gKyAg ICAgICAgRElPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5fX0NvbnN0YW50T25seUluRXhwcmVzc2lvbiA9IFRydWUNCj4gDQo+ICsgICAgICAgIGN0eC5O b2RlLkRhdGEgPSBESU9iag0KPiANCj4gKyAgICAgICAgQ29uZGl0aW9uID0gJ2Rpc2FibGVpZicg KyAnICcgKw0KPiBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhw cmVzc2lvbigpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gQ29uZGl0aW9u DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdXBw cmVzc0lmRm9ybVNldC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJ ZkZvcm1TZXQoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBwcmVz c0lmRm9ybVNldENvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgU0lPYmogPSBDSWZy U3VwcHJlc3NJZigpDQo+IA0KPiArICAgICAgICBTSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0Lmxp bmUpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gU0lPYmoNCj4gDQo+ICsgICAgICAg IENvbmRpdGlvbiA9ICdzdXBwcmVzc2lmJyArICcgJyArDQo+IHNlbGYuX19FeHRyYWN0T3JpZ2lu YWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiArICAgICAgICBjdHgu Tm9kZS5Db25kaXRpb24gPSBDb25kaXRpb24NCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI2d1aWRTdWJEZWZpbml0aW9uLg0KPiANCj4gKyAgICBkZWYgdmlzaXRHdWlkU3ViRGVm aW5pdGlvbihzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLkd1aWRTdWJEZWZpbml0aW9uQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBjdHguR3VpZC5EYXRhNFswXSA9IHNlbGYu X19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgY3R4Lkd1aWQuRGF0YTRb MV0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gDQo+ICsgICAgICAgIGN0eC5H dWlkLkRhdGE0WzJdID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMikpDQo+IA0KPiArICAg ICAgICBjdHguR3VpZC5EYXRhNFszXSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDMpKQ0K PiANCj4gKyAgICAgICAgY3R4Lkd1aWQuRGF0YTRbNF0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51 bWJlcig0KSkNCj4gDQo+ICsgICAgICAgIGN0eC5HdWlkLkRhdGE0WzVdID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoNSkpDQo+IA0KPiArICAgICAgICBjdHguR3VpZC5EYXRhNFs2XSA9IHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKDYpKQ0KPiANCj4gKyAgICAgICAgY3R4Lkd1aWQuRGF0 YTRbN10gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcig3KSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjZ3VpZERlZmluaXRpb24uDQo+IA0KPiArICAgIGRlZiB2aXNpdEd1aWREZWZpbml0aW9uKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuR3VpZERlZmluaXRpb25Db250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBjdHguR3VpZC5EYXRhMSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0K PiANCj4gKyAgICAgICAgY3R4Lkd1aWQuRGF0YTIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJl cigxKSkNCj4gDQo+ICsgICAgICAgIGN0eC5HdWlkLkRhdGEzID0gc2VsZi5fX1RyYW5zTnVtKGN0 eC5OdW1iZXIoMikpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gTm9uZQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjZ2V0U3RyaW5nSWQuDQo+IA0KPiArICAgIGRlZiB2aXNpdEdldFN0cmlu Z0lkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuR2V0U3RyaW5nSWRDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGN0eC5TdHJpbmdJZCA9IHNlbGYuX19UcmFuc051bShjdHguTnVt YmVyKCkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEhlYWRlci4NCj4gDQo+ICsg ICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SGVhZGVyKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJz ZXIuVmZyU3RhdGVtZW50SGVhZGVyQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBj dHguT3BPYmogPSBjdHgucGFyZW50Q3R4Lk9wT2JqDQo+IA0KPiArICAgICAgICBpZiBjdHguT3BP YmogIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBQcm9tcHQgPSBzZWxmLl9fVHJhbnNOdW0o Y3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAgICAgICAgICBjdHguT3BPYmouU2V0UHJvbXB0KFBy b21wdCkNCj4gDQo+ICsgICAgICAgICAgICBIZWxwID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1i ZXIoMSkpDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk9wT2JqLlNldEhlbHAoSGVscCkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyUXVlc3Rpb25IZWFkZXIuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZm clF1ZXN0aW9uSGVhZGVyKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25I ZWFkZXJDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5PcE9iaiA9IGN0eC5w YXJlbnRDdHguT3BPYmoNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclF1ZXN0aW9uQmFzZUluZm8uDQo+IA0KPiAr ICAgIGRlZiB2aXNpdFZmclF1ZXN0aW9uQmFzZUluZm8oc2VsZiwNCj4gY3R4OlZmclN5bnRheFBh cnNlci5WZnJRdWVzdGlvbkJhc2VJbmZvQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBjdHguT3BPYmogPSBjdHgucGFyZW50Q3R4Lk9wT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9PVEhFUg0KPiANCj4gKyAgICAg ICAgY3R4LkJhc2VJbmZvLlZhclRvdGFsU2l6ZSA9IDANCj4gDQo+ICsgICAgICAgIGN0eC5CYXNl SW5mby5JbmZvLlZhck9mZnNldCA9IEVGSV9WQVJPRkZTRVRfSU5WQUxJRA0KPiANCj4gKyAgICAg ICAgY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQgPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KPiAN Cj4gKyAgICAgICAgY3R4LkJhc2VJbmZvLklzQml0VmFyID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIFFOYW1lID0gTm9uZQ0KPiANCj4gKyAgICAgICAgUUlkID0gRUZJX1FVRVNUSU9O X0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIFJldHVybkNvZGUgPSBOb25lDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgaWYg Y3R4Lk5hbWUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFFOYW1lID0gY3R4LlFOLnRl eHQNCj4gDQo+ICsgICAgICAgICAgICBSZXR1cm5Db2RlID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRC LkZpbmRRdWVzdGlvbkJ5TmFtZShRTmFtZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fQ29t cGFyZUVycm9ySGFuZGxlcihSZXR1cm5Db2RlLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f VU5ERUZJTkVELCBjdHguUU4ubGluZSwgY3R4LlFOLnRleHQsICdoYXMNCj4gYWxyZWFkeSBiZWVu IHVzZWQgcGxlYXNlIHVzZWQgYW50aGVyIG5hbWUnKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg VmFySWRTdHIgPSAnJyBpZiBjdHguVmFySWQoKSA9PSBOb25lIGVsc2UgIGN0eC52ZnJTdG9yYWdl VmFySWQoKS5WYXJJZFN0cg0KPiANCj4gKyAgICAgICAgaWYgY3R4LlF1ZXN0aW9uSWQoKSAhPSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIFFJZCA9IHNlbGYuX19UcmFuc051bShjdHguSUQudGV4 dCkNCj4gDQo+ICsgICAgICAgICAgICBSZXR1cm5Db2RlID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRC LkZpbmRRdWVzdGlvbkJ5SWQoUUlkKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19Db21wYXJl RXJyb3JIYW5kbGVyKFJldHVybkNvZGUsDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRF RklORUQsIGN0eC5JRC5saW5lLCBjdHguSUQudGV4dCwgJ2hhcw0KPiBhbHJlYWR5IGJlZW4gdXNl ZCBwbGVhc2UgdXNlZCBhbnRoZXIgbnVtYmVyJykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlm IGN0eC5RVHlwZSA9PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTDoNCj4gDQo+ICsg ICAgICAgICAgICBpZiBzZWxmLl9fSXNDaGVja0JveE9wOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9CT09MRUFODQo+IA0KPiArICAg ICAgICAgICAgUUlkLCBSZXR1cm5Db2RlID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVy UXVlc3Rpb24oUU5hbWUsDQo+IFZhcklkU3RyLCBRSWQpDQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHguc3RhcnQubGluZSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGVsaWYgY3R4LlFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05f REFURToNCj4gDQo+ICsgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJf VFlQRV9EQVRFDQo+IA0KPiArICAgICAgICAgICAgUUlkLCBSZXR1cm5Db2RlID0NCj4gc2VsZi5f X0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVyTmV3RGF0ZVF1ZXN0aW9uKFFOYW1lLCBWYXJJZFN0ciwg UUlkKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwg Y3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5RVHlwZSA9 PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUU6DQo+IA0KPiArICAgICAgICAgICAgY3R4 LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVfVElNRQ0KPiANCj4gKyAgICAgICAgICAg IFFJZCwgUmV0dXJuQ29kZSA9DQo+IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5SZWdpc3Rlck5ld1Rp bWVRdWVzdGlvbihRTmFtZSwgVmFySWRTdHIsIFFJZCkNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZWxpZiBjdHguUVR5cGUgPT0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9S RUY6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZ UEVfUkVGDQo+IA0KPiArICAgICAgICAgICAgaWYgVmFySWRTdHIgIT0gJyc6ICNzdGFuZCBmb3Ig cXVlc3Rpb24gd2l0aCBzdG9yYWdlLg0KPiANCj4gKyAgICAgICAgICAgICAgICBRSWQsIFJldHVy bkNvZGUgPQ0KPiBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuUmVnaXN0ZXJSZWZRdWVzdGlvbihRTmFt ZSwgVmFySWRTdHIsIFFJZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihSZXR1cm5Db2RlLCBjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICBRSWQsIFJldHVybkNvZGUgPQ0KPiBzZWxmLl9fQ1Zm clF1ZXN0aW9uREIuUmVnaXN0ZXJRdWVzdGlvbihRTmFtZSwgTm9uZSwgUUlkKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIGN0eC5zdGFydC5s aW5lKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUiwNCj4gY3R4LnN0 YXJ0LmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv ID0gY3R4LkJhc2VJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguT3BPYmogIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguT3BPYmouU2V0UXVlc3Rpb25JZChRSWQpDQo+ IA0KPiArICAgICAgICAgICAgaWYgY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNU T1JFX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5PcE9iai5TZXRWYXJT dG9yZUluZm8oY3R4LkJhc2VJbmZvKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0 eC5PcE9iag0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjcXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxk Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRRdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoc2VsZiwNCj4g Y3R4OlZmclN5bnRheFBhcnNlci5RdWVzdGlvbmhlYWRlckZsYWdzRmllbGRDb250ZXh0KToNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAg ICAgICBpZiBjdHguUmVhZE9ubHlGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBj dHguUUhGbGFnID0gMHgwMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguSW50ZXJh Y3RpdmVGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguUUhGbGFnID0gMHgw NA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguUmVzZXRSZXF1aXJlZEZsYWcoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5RSEZsYWcgPSAweDEwDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBlbGlmIGN0eC5SZXN0U3R5bGVGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICBjdHguUUhGbGFnID0gMHgyMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxp ZiBjdHguUmVjb25uZWN0UmVxdWlyZWRGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBjdHguUUhGbGFnID0gMHg0MA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguT3B0 aW9uT25seUZsYWcoKSAhPSBOb25lOg0KPiANCj4gKw0KPiBnQ1ZmckVycm9ySGFuZGxlLkhhbmRs ZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZSX1dBUk5JTg0KPiBHX09CU09MRVRFRF9G UkFNRVdPUktfT1BDT0RFLCBjdHguTy5saW5lLCBjdHguTy50ZXh0KQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZWxpZiBjdHguTlZBY2Nlc3NGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsNCj4gZ0NW ZnJFcnJvckhhbmRsZS5IYW5kbGVXYXJuaW5nKEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJO SU4NCj4gR19PQlNPTEVURURfRlJBTUVXT1JLX09QQ09ERSwgY3R4Lk4ubGluZSwgY3R4Lk4udGV4 dCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LkxhdGVDaGVja0ZsYWcoKSAhPSBO b25lOg0KPiANCj4gKw0KPiBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9X QVJOSU5HX0NPREUuVkZSX1dBUk5JTg0KPiBHX09CU09MRVRFRF9GUkFNRVdPUktfT1BDT0RFLCBj dHguTC5saW5lLCBjdHguTC50ZXh0KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0 eC5RSEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0b3JhZ2VWYXJJZFJ1bGUxLg0KPiANCj4gKyAgICBk ZWYgdmlzaXRWZnJTdG9yYWdlVmFySWRSdWxlMShzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2Vy LlZmclN0b3JhZ2VWYXJJZFJ1bGUxQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgU05hbWUgPSBj dHguU04xLnRleHQNCj4gDQo+ICsgICAgICAgIGN0eC5WYXJJZFN0ciArPSBTTmFtZQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgSWR4ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5JLnRleHQpDQo+IA0K PiArICAgICAgICBjdHguVmFySWRTdHIgKz0gJ1snDQo+IA0KPiArICAgICAgICBjdHguVmFySWRT dHIgKz0gY3R4LkkudGV4dA0KPiANCj4gKyAgICAgICAgY3R4LlZhcklkU3RyICs9ICddJw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQsIFJldHVybkNvZGUg PQ0KPiBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlSWQoU05hbWUpDQo+IA0KPiArICAgICAg ICBpZiBjdHguQ2hlY2tGbGFnIG9yIFJldHVybkNvZGUgPT0NCj4gVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihS ZXR1cm5Db2RlLCBjdHguU04xLmxpbmUsIGN0eC5TTjEudGV4dCkNCj4gDQo+ICsNCj4gc2VsZi5f X0Vycm9ySGFuZGxlcihnQ1ZmckRhdGFTdG9yYWdlLkdldE5hbWVWYXJTdG9yZUluZm8oY3R4LkJh c2VJbmZvLA0KPiBJZHgpLCBjdHguU04xLmxpbmUsIGN0eC5TTjEudGV4dCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHJldHVybiBjdHguVmFySWRTdHINCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zm clN0b3JhZ2VWYXJJZFJ1bGUyLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdG9yYWdlVmFySWRS dWxlMihzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0b3JhZ2VWYXJJZFJ1bGUyQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgVmFyU3RyID0gJycgIyB0eXBlLmZpZWxkDQo+IA0KPiAr ICAgICAgICBTTmFtZSA9IGN0eC5TTjIudGV4dA0KPiANCj4gKyAgICAgICAgY3R4LlZhcklkU3Ry ICs9IFNOYW1lDQo+IA0KPiArICAgICAgICBjdHguQmFzZUluZm8uVmFyU3RvcmVJZCwgUmV0dXJu Q29kZSA9DQo+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVJZChTTmFtZSkNCj4gDQo+ICsg ICAgICAgIGlmIGN0eC5DaGVja0ZsYWcgb3IgUmV0dXJuQ29kZSA9PQ0KPiBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5k bGVyKFJldHVybkNvZGUsIGN0eC5TTjIubGluZSwgY3R4LlNOMi50ZXh0KQ0KPiANCj4gKyAgICAg ICAgICAgIFZhclN0b3JlVHlwZSA9DQo+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBl KGN0eC5CYXNlSW5mby5WYXJTdG9yZUlkKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhclN0b3Jl VHlwZSA9PQ0KPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIg b3IgVmFyU3RvcmVUeXBlID09DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNU T1JFX0JVRkZFUl9CSVRTOg0KPiANCj4gKyAgICAgICAgICAgICAgICBUTmFtZSwgUmV0dXJuQ29k ZTIgPQ0KPiBnQ1ZmckRhdGFTdG9yYWdlLkdldEJ1ZmZlclZhclN0b3JlRGF0YVR5cGVOYW1lKGN0 eC5CYXNlSW5mby5WYXJTdG9yZUkNCj4gZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlMiwgY3R4LlNOMi5saW5lLCBjdHguU04yLnRleHQpDQo+ IA0KPiArICAgICAgICAgICAgICAgIFZhclN0ciArPSBUTmFtZQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgQ291bnQgPSBsZW4oY3R4LkRvdCgpKQ0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFu Z2UoMCwgQ291bnQpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGN0eC5DaGVja0ZsYWcgb3IgUmV0 dXJuQ29kZSA9PQ0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgY29uZCA9IChWYXJTdG9yZVR5cGUgIT0NCj4gRUZJX1ZGUl9WQVJTVE9S RV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSKSBhbmQNCj4gKFZhclN0b3JlVHlwZSAhPQ0K PiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVJfQklUUykNCj4g DQo+ICsgICAgICAgICAgICAgICAgUmV0dXJuQ29kZSA9DQo+IFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9FRklWQVJTVE9SRV9VU0VfRVJST1IgaWYgY29uZCBlbHNlDQo+IFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOMi5saW5lLCBjdHguU04yLnRleHQpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgY3R4LlZhcklkU3RyICs9ICcuJw0KPiANCj4gKyAgICAgICAgICAg IFZhclN0ciArPSAnLicNCj4gDQo+ICsgICAgICAgICAgICBjdHguVmFySWRTdHIgKz0gY3R4LmFy cmF5TmFtZShpKS5TdWJTdHINCj4gDQo+ICsgICAgICAgICAgICBWYXJTdHIgKz0gY3R4LmFycmF5 TmFtZShpKS5TdWJTdHJaDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBWYXJTdG9yZVR5cGUg PT0gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfRUZJOg0KPiANCj4gKw0K PiBzZWxmLl9fRXJyb3JIYW5kbGVyKGdDVmZyRGF0YVN0b3JhZ2UuR2V0RWZpVmFyU3RvcmVJbmZv KGN0eC5CYXNlSW5mbyksDQo+IGN0eC5TTjIubGluZSwgY3R4LlNOMi50ZXh0KQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZWxpZiBWYXJTdG9yZVR5cGUgPT0NCj4gRUZJX1ZGUl9WQVJTVE9SRV9U WVBFLkVGSV9WRlJfVkFSU1RPUkVfQlVGRkVSIG9yIFZhclN0b3JlVHlwZSA9PQ0KPiBFRklfVkZS X1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVJfQklUUzoNCj4gDQo+ICsgICAg ICAgICAgICBjdHguQmFzZUluZm8uSW5mby5WYXJPZmZzZXQsIGN0eC5CYXNlSW5mby5WYXJUeXBl LA0KPiBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplLCBjdHguQmFzZUluZm8uSXNCaXRWYXIsIFJl dHVybkNvZGUgPQ0KPiBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YUZpZWxkSW5mbyhWYXJTdHIp DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBjdHgu U04yLmxpbmUsIFZhclN0cikNCj4gDQo+ICsgICAgICAgICAgICBWYXJHdWlkID0NCj4gZ0NWZnJE YXRhU3RvcmFnZS5HZXRWYXJTdG9yZUd1aWQoY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihnQ1ZmckJ1ZmZlckNvbmZpZy5SZWdp c3RlcihTTmFtZSwgVmFyR3VpZCksDQo+IGN0eC5TTjIubGluZSkNCj4gDQo+ICsgICAgICAgICAg ICBEdW1teSA9IHNlbGYuZ1plcm9FZmlJZnJUeXBlVmFsdWUNCj4gDQo+ICsgICAgICAgICAgICBS ZXR1cm5Db2RlID0gVmZyUmV0dXJuQ29kZShnQ1ZmckJ1ZmZlckNvbmZpZy5Xcml0ZSgNCj4gDQo+ ICsgICAgICAgICAgICAgICAgJ2EnLA0KPiANCj4gKyAgICAgICAgICAgICAgICBTTmFtZSwNCj4g DQo+ICsgICAgICAgICAgICAgICAgVmFyR3VpZCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgTm9u ZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUsDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5JbmZvLlZhck9mZnNldCwNCj4gDQo+ICsgICAg ICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclRvdGFsU2l6ZSwNCj4gDQo+ICsgICAgICAgICAg ICAgICAgRHVtbXkpKSAj44CAdGhlIGRlZmluaXRpb24gb2YgZHVtbXkgaXMgbmVlZGVkIHRvIGNo ZWNrDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBj dHguU04yLmxpbmUpDQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJEYXRhU3Rv cmFnZS5BZGRCdWZmZXJWYXJTdG9yZUZpZWxkSW5mbyhjdHguQmFzZUkNCj4gbmZvKSwgY3R4LlNO Mi5saW5lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5WYXJJZFN0cg0KPiAN Cj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjdmZyQ29uc3RhbnRWYWx1ZUZpZWxkLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJD b25zdGFudFZhbHVlRmllbGQoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJDb25zdGFu dFZhbHVlRmllbGRDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBJbnREZWNTdHlsZSA9IEZhbHNlDQo+IA0KPiAr ICAgICAgICBpZiBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEgIT0gTm9uZSBhbmQNCj4gc2VsZi5f X0N1cnJlbnRNaW5NYXhEYXRhLklzTnVtZXJpY09wY29kZSgpOg0KPiANCj4gKyAgICAgICAgICAg IE51bWVyaWNRc3QgPSBDSWZyTnVtZXJpYyhzZWxmLl9fQ3VycmVudFF1ZXN0aW9uKSAjDQo+IA0K PiArICAgICAgICAgICAgSW50RGVjU3R5bGUgPSBUcnVlIGlmIChOdW1lcmljUXN0LkdldE51bWVy aWNGbGFncygpICYNCj4gRUZJX0lGUl9ESVNQTEFZKSA9PSAwIGVsc2UgRmFsc2UgIw0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgaWYgY3R4LlRydWVTeW1ib2woKSAhPSBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgIGN0eC5WYWx1ZS5iID0gMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBj dHguRmFsc2VTeW1ib2woKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYWx1ZS5i ID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguT25lKCkgIT0gTm9uZToNCj4g DQo+ICsgICAgICAgICAgICBjdHguVmFsdWUudTggPSBpbnQoY3R4LmdldFRleHQoKSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4Lk9uZXMoKSAhPSBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgIGN0eC5WYWx1ZS51NjQgPSBpbnQoY3R4LmdldFRleHQoKSkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGVsaWYgY3R4Llplcm8oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0 eC5WYWx1ZS51OCA9IGludChjdHguZ2V0VGV4dCgpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZWxpZiBjdHguQ29sb24oKSAhPSBbXToNCj4gDQo+ICsgICAgICAgICAgICBjdHguVmFsdWUudGlt ZS5Ib3VyID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+IA0KPiArICAgICAgICAg ICAgY3R4LlZhbHVlLnRpbWUuTWludXRlID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkp DQo+IA0KPiArICAgICAgICAgICAgY3R4LlZhbHVlLnRpbWUuU2Vjb25kID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoMikpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5TbGFz aCgpICE9IFtdOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYWx1ZS5kYXRlLlllYXIgPSBzZWxm Ll9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAgICAgICAgICBjdHguVmFsdWUu ZGF0ZS5Nb250aCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiANCj4gKyAgICAg ICAgICAgIGN0eC5WYWx1ZS5kYXRlLkRheSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDIp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguU2VtaWNvbG9uKCkgIT0gW106DQo+ IA0KPiArICAgICAgICAgICAgY3R4LlZhbHVlLnJlZi5RdWVzdGlvbklkID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoMCkpDQo+IA0KPiArICAgICAgICAgICAgY3R4LlZhbHVlLnJlZi5Gb3Jt SWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gDQo+ICsgICAgICAgICAgICBj dHguVmFsdWUucmVmLkRldmljZVBhdGggPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkN Cj4gDQo+ICsgICAgICAgICAgICBjdHguVmFsdWUucmVmLkZvcm1TZXRHdWlkID0gY3R4Lmd1aWRE ZWZpbml0aW9uKCkuR3VpZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguU3RyaW5n VG9rZW4oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYWx1ZS5zdHJpbmcgPSBz ZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVs aWYgY3R4Lk9wZW5CcmFjZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lkxpc3RU eXBlID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgICAgIFR5cGUgPSBzZWxmLl9fQ3VyclFlc3RWYXJJ bmZvLlZhclR5cGUNCj4gDQo+ICsgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4 Lk51bWJlcigpKSk6DQo+IA0KPiArICAgICAgICAgICAgICAgIFRlbXBWYWx1ZSA9IEVGSV9JRlJf VFlQRV9WQUxVRSgpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9U WVBFX05VTV9TSVpFXzg6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBUZW1wVmFsdWUudTgg PSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihpKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIGN0eC5WYWx1ZUxpc3QuYXBwZW5kKFRlbXBWYWx1ZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBUZW1wVmFsdWUudTE2ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5O dW1iZXIoaSkpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguVmFsdWVMaXN0LmFwcGVu ZChUZW1wVmFsdWUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVGVt cFZhbHVlLnUzMiA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKGkpKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgY3R4LlZhbHVlTGlzdC5hcHBlbmQoVGVtcFZhbHVlKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82 NDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFRlbXBWYWx1ZS51NjQgPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcihpKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1 ZUxpc3QuYXBwZW5kKFRlbXBWYWx1ZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgTmVnYXRpdmUgPSBUcnVlIGlmIGN0eC5OZWdhdGl2ZSgpICE9IE5vbmUgZWxzZSBG YWxzZQ0KPiANCj4gKyAgICAgICAgICAgICMgVGhlIHZhbHVlIHN0b3JlZCBpbiBiaXQgZmllbGRz IGlzIGFsd2F5cyBzZXQgdG8gVUlOVDMyIHR5cGUuDQo+IA0KPiArICAgICAgICAgICAgaWYgc2Vs Zi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4 LlZhbHVlLnUzMiA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIFR5cGUgPSBzZWxmLl9fQ3VyclFl c3RWYXJJbmZvLlZhclR5cGUNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklf SUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1 ZS51OCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg aWYgTmVnYXRpdmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICBjdHgu VmFsdWUudTggPiAweDgwOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4LnN0YXJ0LmxpbmUsICJJ TlQ4IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3Riwgc21hbGwgdGhhbiAtMHg4MCIpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgY3R4LlZhbHVlLnU4ID4gMHg3RjoNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9y SGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0 eC5zdGFydC5saW5lLCAiSU5UOCB0eXBlIGNhbid0IGJpZyB0aGFuIDB4N0YsIHNtYWxsIHRoYW4g LTB4ODAiKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgTmVnYXRpdmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlLnU4ID0gfmN0eC5WYWx1ZS51OCArIDEN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVf TlVNX1NJWkVfMTY6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguVmFsdWUudTE2ID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBpZiBJbnREZWNTdHlsZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBOZWdh dGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgIGN0eC5WYWx1ZS51 MTYgPiAweDgwMDA6DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiBjdHguc3RhcnQubGluZSwgIklOVDE2 IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGLCBzbWFsbCB0aGFuIC0weDgwMDAiKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlmIGN0eC5WYWx1ZS51MTYgPiAweDdGRkY6DQo+IA0KPiArDQo+IHNlbGYuX19F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0K PiBjdHguc3RhcnQubGluZSwgIklOVDE2IHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGLCBzbWFs bCB0aGFuIC0weDgwMDAiKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgTmVnYXRpdmU6 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlLnUxNiA9IH5jdHguVmFs dWUudTE2ICsgMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5W YWx1ZS51MzIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGlmIE5lZ2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAg Y3R4LlZhbHVlLnUzMiA+IDB4ODAwMDAwMDA6DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRs ZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiBjdHguc3Rh cnQubGluZSwgIklOVDMyIHR5cGUgY2FuJ3QgYmlnIHRoYW4gMHg3RkZGRkZGRiwgc21hbGwgdGhh biAtMHg4MDAwMDAwMCIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3R4LlZhbHVlLnUzMiA+IDBYN0ZG RkZGRkY6DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiBjdHguc3RhcnQubGluZSwgIklOVDMyIHR5cGUg Y2FuJ3QgYmlnIHRoYW4gMHg3RkZGRkZGRiwgc21hbGwgdGhhbiAtMHg4MDAwMDAwMCIpDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBpZiBOZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBjdHguVmFsdWUudTMyID0gfmN0eC5WYWx1ZS51MzIgKyAxDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0 Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlLnU2NCA9IHNlbGYuX19UcmFu c051bShjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVj U3R5bGU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTmVnYXRpdmU6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICBjdHguVmFsdWUudTY0ID4gMHg4MDAw MDAwMDAwMDAwMDAwOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4LnN0YXJ0LmxpbmUsICJJTlQ2 NCB0eXBlIGNhbid0IGJpZyB0aGFuIDB4N0ZGRkZGRkZGRkZGRkZGRiwgc21hbGwgdGhhbiAtDQo+ IDB4ODAwMDAwMDAwMDAwMDAwMCIpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3R4LlZhbHVlLnU2NCA+ IDB4N0ZGRkZGRkZGRkZGRkZGRjoNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0eC5zdGFydC5saW5l LCAiSU5UNjQgdHlwZSBjYW4ndCBiaWcgdGhhbiAweDdGRkZGRkZGRkZGRkZGRkYsIHNtYWxsIHRo YW4gLQ0KPiAweDgwMDAwMDAwMDAwMDAwMDAiKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg aWYgTmVnYXRpdmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4LlZhbHVlLnU2 NCA9IH5jdHguVmFsdWUudTY0ICsgMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBUeXBlID09IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgY3R4LlZhbHVlLmIgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfQk9PTEVBTjoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5WYWx1ZS5zdHJpbmcgPSBzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHgu VmFsdWUsIGN0eC5WYWx1ZUxpc3QNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckltYWdlVGFnLg0K PiANCj4gKyAgICBkZWYgdmlzaXRWZnJJbWFnZVRhZyhzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2Vy LlZmckltYWdlVGFnQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBJT2JqID0gQ0lm ckltYWdlKCkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr ICAgICAgICBJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIElP YmouU2V0SW1hZ2VJZChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCj4gDQo+ICsgICAg ICAgIGN0eC5Ob2RlLkRhdGEgPSBJT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckxvY2tlZFRhZy4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0VmZyTG9ja2VkVGFnKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyTG9ja2Vk VGFnQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMT2JqPUNJZnJMb2NrZWQoKQ0K PiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIExP YmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0 YSA9IExPYmoNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3RhdFRhZy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0 VmZyU3RhdGVtZW50U3RhdFRhZyhzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRl bWVudFN0YXRUYWdDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZySW1hZ2VUYWcoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmckltYWdlVGFnKCkuTm9kZQ0K PiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJMb2NrZWRUYWcoKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5v ZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRUYWdMaXN0Lg0KPiANCj4g KyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0VGFnTGlzdChzZWxmLA0KPiBjdHg6VmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRUYWdMaXN0Q29udGV4dCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgZm9yIEN0 eCBpbiBjdHgudmZyU3RhdGVtZW50U3RhdFRhZygpOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYu X19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJGb3JtRGVmaW5pdGlvbi4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VmZyRm9ybURlZmluaXRpb24oc2VsZiwNCj4gY3R4OlZmclN5bnRh eFBhcnNlci5WZnJGb3JtRGVmaW5pdGlvbkNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgRk9iaiA9IENJZnJGb3JtKCkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBGT2JqLlNldExpbmVObyhjdHguc3RhcnQubGlu ZSkNCj4gDQo+ICsgICAgICAgIEZvcm1JZCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDAp KQ0KPiANCj4gKyAgICAgICAgRk9iai5TZXRGb3JtSWQoRm9ybUlkKQ0KPiANCj4gKyAgICAgICAg Rm9ybVRpdGxlICA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiANCj4gKyAgICAg ICAgRk9iai5TZXRGb3JtVGl0bGUoRm9ybVRpdGxlKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg Y3R4Lk5vZGUuRGF0YSA9IEZPYmoNCj4gDQo+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmckZv cm0oKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIEN0 eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyRm9ybS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyRm9ybShzZWxmLCBjdHg6VmZyU3ludGF4 UGFyc2VyLlZmckZvcm1Db250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlz aXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50SW1hZ2Uo KSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVu dEltYWdlKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudExvY2tlZCgp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50 TG9ja2VkKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFJ1bGVzKCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRS dWxlcygpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnREZWZhdWx0KCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRE ZWZhdWx0KCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN0YXQoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFN0 YXQoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25zKCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRR dWVzdGlvbnMoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50Q29uZGl0 aW9uYWwoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0 YXRlbWVudENvbmRpdGlvbmFsKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRl bWVudExhYmVsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJTdGF0ZW1lbnRMYWJlbCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1l bnRCYW5uZXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZm clN0YXRlbWVudEJhbm5lcigpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1l bnRJbnZhbGlkKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJTdGF0ZW1lbnRJbnZhbGlkKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRl bWVudEV4dGVuc2lvbigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBj dHgudmZyU3RhdGVtZW50RXh0ZW5zaW9uKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZm clN0YXRlbWVudE1vZGFsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9 IGN0eC52ZnJTdGF0ZW1lbnRNb2RhbCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJT dGF0ZW1lbnRSZWZyZXNoRXZlbnQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5O b2RlID0gY3R4LnZmclN0YXRlbWVudFJlZnJlc2hFdmVudCgpLk5vZGUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAj IFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyRm9ybU1h cERlZmluaXRpb24uDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckZvcm1NYXBEZWZpbml0aW9uKHNl bGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRm9ybU1hcERlZmluaXRpb25Db250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEZNYXBPYmogPSBDSWZyRm9ybU1hcCgpDQo+IA0KPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0 eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBGTWFwT2JqLlNldExpbmVObyhMaW5lKQ0KPiAN Cj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKEZNYXBPYmouU2V0Rm9ybUlkKHNlbGYuX19UcmFu c051bShjdHguUzEudGV4dCkpLA0KPiBjdHguUzEubGluZSwgY3R4LlMxLmxpbmUpDQo+IA0KPiAr ICAgICAgICBGb3JtTWFwTWV0aG9kTnVtYmVyID0gbGVuKGN0eC5NYXBUaXRsZSgpKQ0KPiANCj4g KyAgICAgICAgaWYgRm9ybU1hcE1ldGhvZE51bWJlciA9PSAwOg0KPiANCj4gKw0KPiBzZWxmLl9f RXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwN Cj4gTGluZSwgJ05vIE1hcE1ldGhvZCBpcyBzZXQgZm9yIEZvcm1NYXAhJykNCj4gDQo+ICsgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgRm9ybU1hcE1l dGhvZE51bWJlcik6DQo+IA0KPiArICAgICAgICAgICAgICAgIEZNYXBPYmouU2V0Rm9ybU1hcE1l dGhvZChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihpKzEpKSwNCj4gY3R4Lmd1aWREZWZpbml0 aW9uKGkpLkd1aWQpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gRk1hcE9iag0KPiAN Cj4gKyAgICAgICAgZm9yIEN0eCBpbiBjdHgudmZyRm9ybSgpOg0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQg YSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRJbWFn ZS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SW1hZ2Uoc2VsZiwNCj4gY3R4OlZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbWFnZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rl ID0gY3R4LnZmckltYWdlVGFnKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRMb2NrZWQuDQo+IA0KPiArICAgIGRl ZiB2aXNpdFZmclN0YXRlbWVudExvY2tlZChzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudExvY2tlZENvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmckxvY2tl ZFRhZygpLk5vZGUNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyU3RhdGVtZW50UnVsZXMuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFJ1bGVz KHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UnVsZXNDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFJPYmogPSBDSWZyUnVsZSgpDQo+IA0KPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgUk9iai5T ZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBSdWxlTmFtZSA9IHNlbGYu X19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKCkpDQo+IA0KPiArICAgICAgICBzZWxmLl9f Q1ZmclJ1bGVzREIuUmVnaXN0ZXJSdWxlKFJ1bGVOYW1lKQ0KPiANCj4gKyAgICAgICAgUk9iai5T ZXRSdWxlSWQoc2VsZi5fX0NWZnJSdWxlc0RCLkdldFJ1bGVJZChSdWxlTmFtZSkpDQo+IA0KPiAr ICAgICAgICBjdHguTm9kZS5EYXRhID0gUk9iag0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRXhw cmVzc2lvbiA9DQo+IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRF eHByZXNzaW9uKCkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAjIGV4cHJlc3Npb24NCj4gDQo+ ICsgICAgICAgICMgZW5kIHJ1bGUNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjdmZyU3RhdGVtZW50U3RhdC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50U3RhdChzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50U3ViVGl0bGUoKSAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFN1YlRpdGxlKCkuTm9k ZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFN0YXRpY1RleHQoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFN0YXRpY1Rl eHQoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50Q3Jvc3NSZWZlcmVu Y2UoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRl bWVudENyb3NzUmVmZXJlbmNlKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2Rl DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdWJUaXRsZS4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGUoc2VsZiwNCj4gY3R4OlZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgU09iaiA9IGN0eC5PcE9iag0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTGluZSA9 IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBTT2JqLlNldExpbmVObyhMaW5lKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgUHJvbXB0ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo KSkNCj4gDQo+ICsgICAgICAgIFNPYmouU2V0UHJvbXB0KFByb21wdCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBpZiBjdHgudmZyU3VidGl0bGVGbGFncygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg U09iai5TZXRGbGFncyhjdHgudmZyU3VidGl0bGVGbGFncygpLlN1YkZsYWdzKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFNPYmoNCj4gDQo+ICsgICAgICAgIHNlbGYu X19JbnNlcnRDaGlsZChjdHguTm9kZSwgY3R4LnZmclN0YXRlbWVudFN0YXRUYWdMaXN0KCkpDQo+ IA0KPiArICAgICAgICAjIHNlcXVlbmNlIHF1ZXN0aW9uDQo+IA0KPiArICAgICAgICBmb3IgQ3R4 IGluIGN0eC52ZnJTdGF0ZW1lbnRTdWJUaXRsZUNvbXBvbmVudCgpOg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdWJUaXRs ZUNvbXBvbmVudC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3ViVGl0bGVDb21w b25lbnQoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdWJUaXRsZUNv bXBvbmVudENvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbnMoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFF1 ZXN0aW9ucygpLk5vZGUNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LnZmclN0YXRlbWVudFN0YXQo KSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVu dFN0YXQoKS5Ob2RlDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI3ZmclN1YnRpdGxlRmxhZ3MuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN1YnRp dGxlRmxhZ3Moc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdWJ0aXRsZUZsYWdzQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LnN1YnRpdGxl RmxhZ3NGaWVsZCgpOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5TdWJGbGFncyB8PSBGbGFnc0Zp ZWxkQ3R4LkZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBOb25lDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNzdWJ0aXRsZUZsYWdzRmllbGQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFN1 YnRpdGxlRmxhZ3NGaWVsZChzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlN1YnRpdGxlRmxh Z3NGaWVsZENvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkZsYWcgPSBzZWxmLl9fVHJhbnNOdW0o Y3R4Lk51bWJlcigpKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBj dHguRmxhZyA9IDB4MDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50U3RhdGljVGV4 dC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3RhdGljVGV4dChzZWxmLA0KPiBj dHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0YXRpY1RleHRDb250ZXh0KToNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBRSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAg SGVscCA9IHNlbGYuX19UcmFuc051bShjdHguUzEudGV4dCkNCj4gDQo+ICsgICAgICAgIFByb21w dCA9IHNlbGYuX19UcmFuc051bShjdHguUzIudGV4dCkNCj4gDQo+ICsgICAgICAgIFR4dFR3byA9 IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgaWYgY3R4LlMzICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgVHh0VHdvID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5TMy50ZXh0 KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVGV4dEZsYWdzID0gMA0KPiANCj4gKyAgICAgICAg Zm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LnN0YXRpY1RleHRGbGFnc0ZpZWxkKCk6DQo+IA0KPiAr ICAgICAgICAgICAgVGV4dEZsYWdzIHw9IEZsYWdzRmllbGRDdHguRmxhZw0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgaWYgVGV4dEZsYWdzICYgRUZJX0lGUl9GTEFHX0NBTExCQUNLOg0KPiANCj4g KyAgICAgICAgICAgIGlmIFR4dFR3byAhPSBFRklfU1RSSU5HX0lEX0lOVkFMSUQ6DQo+IA0KPiAr DQo+IGdDVmZyRXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZyhFRklfVkZSX1dBUk5JTkdfQ09ERS5W RlJfV0FSTklODQo+IEdfQUNUSU9OX1dJVEhfVEVYVF9UV08sIGN0eC5TMy5saW5lLCBjdHguUzMu dGV4dCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBBT2JqID0gQ0lmckFjdGlvbigpDQo+ IA0KPiArICAgICAgICAgICAgUUlkLCBfID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVy UXVlc3Rpb24oTm9uZSwgTm9uZSwgUUlkKQ0KPiANCj4gKyAgICAgICAgICAgIEFPYmouU2V0TGlu ZU5vKGN0eC5GLmxpbmUpDQo+IA0KPiArICAgICAgICAgICAgQU9iai5TZXRRdWVzdGlvbklkKFFJ ZCkNCj4gDQo+ICsgICAgICAgICAgICBBT2JqLlNldEhlbHAoSGVscCkNCj4gDQo+ICsgICAgICAg ICAgICBBT2JqLlNldFByb21wdChQcm9tcHQpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihBT2JqLlNldEZsYWdzKFRleHRGbGFncyksIGN0eC5GLmxpbmUpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgY3R4LktleSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg IEtleSA9IHNlbGYuX19UcmFuc051bShjdHguUzQudGV4dCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5fX0Fzc2lnblF1ZXN0aW9uS2V5KEFPYmosIEtleSkNCj4gDQo+ICsgICAgICAgICAg ICBjdHguTm9kZS5EYXRhID0gQU9iag0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlLk9wQ29k ZSA9IEVGSV9JRlJfQUNUSU9OX09QICMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgVE9iaiA9IENJZnJUZXh0KCkNCj4gDQo+ICsgICAgICAgICAgICBM aW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgICAgICBUT2JqLlNldExpbmVObyhM aW5lKQ0KPiANCj4gKyAgICAgICAgICAgIFRPYmouU2V0SGVscChIZWxwKQ0KPiANCj4gKyAgICAg ICAgICAgIFRPYmouU2V0UHJvbXB0KFByb21wdCkNCj4gDQo+ICsgICAgICAgICAgICBUT2JqLlNl dFRleHRUd28oVHh0VHdvKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBUT2Jq DQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3N0YXRpY1RleHRGbGFnc0ZpZWxkLg0KPiANCj4gKyAgICBkZWYgdmlz aXRTdGF0aWNUZXh0RmxhZ3NGaWVsZChzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlN0YXRp Y1RleHRGbGFnc0ZpZWxkQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkZsYWcgPSBzZWxmLl9fVHJhbnNOdW0o Y3R4Lk4udGV4dCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBjdHguRmxhZyAhPSAwOg0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9VTlNVUFBPUlRFRCwNCj4gY3R4Lk4ubGluZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgY3R4LkZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJG bGFnc0ZpZWxkKCkuUUhGbGFnDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkZs YWcNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJv ZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlLg0K PiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRDcm9zc1JlZmVyZW5jZShzZWxmLA0KPiBj dHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudENyb3NzUmVmZXJlbmNlQ29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAg ICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEdvdG8oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudEdvdG8oKS5Ob2RlDQo+IA0KPiArICAgICAg ICBlbGlmIGN0eC52ZnJTdGF0ZW1lbnRSZXNldEJ1dHRvbigpICE9IE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UmVzZXRCdXR0b24oKS5Ob2RlDQo+ IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsN Cj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3ZmclN0YXRlbWVudEdvdG8uDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEdv dG8oc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRHb3RvQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBSZWZUeXBlID0gNQ0KPiANCj4gKyAgICAgICAgRGV2 UGF0aCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4gKyAgICAgICAgUUlkID0gRUZJX1FV RVNUSU9OX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAgIEJpdE1hc2sgPSAwDQo+IA0KPiArICAg ICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIFI1T2JqID0gQ0lmclJl ZjUoKQ0KPiANCj4gKyAgICAgICAgUjVPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAg ICBjdHguT3BPYmogPSBSNU9iag0KPiANCj4gKyAgICAgICAgI2N0eC5PSE9iaiA9IFI1T2JqDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguRGV2aWNlUGF0aCgpICE9IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgUmVmVHlwZSA9IDQNCj4gDQo+ICsgICAgICAgICAgICBEZXZQYXRoID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+IA0KPiArICAgICAgICAgICAgRklkID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQo+IA0KPiArICAgICAgICAgICAgUUlkID0g c2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMikpDQo+IA0KPiArICAgICAgICAgICAgUjRPYmog PSBDSWZyUmVmNCgpDQo+IA0KPiArICAgICAgICAgICAgUjRPYmouU2V0TGluZU5vKExpbmUpDQo+ IA0KPiArICAgICAgICAgICAgUjRPYmouU2V0RGV2aWNlUGF0aChEZXZQYXRoKQ0KPiANCj4gKyAg ICAgICAgICAgIFI0T2JqLlNldEZvcm1JZChGSWQpDQo+IA0KPiArICAgICAgICAgICAgUjRPYmou U2V0UXVlc3Rpb25JZChRSWQpDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk9wT2JqID0gUjRPYmoN Cj4gDQo+ICsgICAgICAgICAgICAjY3R4Lk9IT2JqID0gUjRPYmoNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGVsaWYgY3R4LkZvcm1TZXRHdWlkKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBSZWZUeXBlID0gMw0KPiANCj4gKyAgICAgICAgICAgIEZJZCA9IHNlbGYuX19UcmFuc051bShj dHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgICAgIFFJZCA9IHNlbGYuX19UcmFuc051bShj dHguTnVtYmVyKDEpKQ0KPiANCj4gKyAgICAgICAgICAgIFIzT2JqID0gQ0lmclJlZjMoKQ0KPiAN Cj4gKyAgICAgICAgICAgIFIzT2JqLlNldExpbmVObyhMaW5lKQ0KPiANCj4gKyAgICAgICAgICAg IFIzT2JqLlNldEZvcm1JZChGSWQpDQo+IA0KPiArICAgICAgICAgICAgUjNPYmouU2V0UXVlc3Rp b25JZChRSWQpDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk9wT2JqID0gUjNPYmoNCj4gDQo+ICsg ICAgICAgICAgICAjY3R4Lk9IT2JqID0gUjNPYmoNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVs aWYgY3R4LkZvcm1JZCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgRklkID0gc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+IA0KPiArICAgICAgICAgICAgUmVmVHlwZSA9IDIN Cj4gDQo+ICsgICAgICAgICAgICBpZiBjdHguUU4gIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgTmFtZSA9IGN0eC5RTi50ZXh0DQo+IA0KPiArICAgICAgICAgICAgICAgIFFJZCwgQml0 TWFzaywgXyA9IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5hbWUpDQo+IA0K PiArICAgICAgICAgICAgICAgIGlmIFFJZCA9PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1VOREVGSU5FRCwNCj4gY3R4LlFOLmxpbmUpDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgUUlkID0gc2VsZi5fX1RyYW5zTnVtKGN0 eC5OdW1iZXIoMSkpDQo+IA0KPiArICAgICAgICAgICAgUjJPYmogPSBDSWZyUmVmMigpDQo+IA0K PiArICAgICAgICAgICAgUjJPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAgICAgICAg UjJPYmouU2V0Rm9ybUlkKEZJZCkNCj4gDQo+ICsgICAgICAgICAgICBSMk9iai5TZXRRdWVzdGlv bklkKFFJZCkNCj4gDQo+ICsgICAgICAgICAgICBjdHguT3BPYmogPSBSMk9iag0KPiANCj4gKyAg ICAgICAgIyBjdHguT0hPYmogPSBSMk9iag0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgZWxpZiBzdHIoY3R4LmdldENoaWxkKDEpKSA9PSBzdHIoY3R4Lk51bWJlcigwKSk6DQo+IA0K PiArICAgICAgICAgICAgUmVmVHlwZSA9IDENCj4gDQo+ICsgICAgICAgICAgICBGSWQgPSBzZWxm Ll9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkNCj4gDQo+ICsgICAgICAgICAgICBST2JqID0gQ0lm clJlZigpDQo+IA0KPiArICAgICAgICAgICAgUk9iai5TZXRMaW5lTm8oTGluZSkNCj4gDQo+ICsg ICAgICAgICAgICBST2JqLlNldEZvcm1JZChGSWQpDQo+IA0KPiArICAgICAgICAgICAgY3R4Lk9w T2JqID0gUk9iag0KPiANCj4gKyAgICAgICAgIyBjdHguT0hPYmogPSBST2JqDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9P VEhFUjoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUg PT0gRUZJX0lGUl9UWVBFX1JFRg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgUmVmVHlwZSA9 PSA0IG9yIFJlZlR5cGUgPT0gMzoNCj4gDQo+ICsgICAgICAgICAgICBjdHguT3BPYmouU2V0Rm9y bVNldElkKGN0eC5ndWlkRGVmaW5pdGlvbigpLkd1aWQpDQo+IA0KPiArICAgICAgICAjIGN0eC5P SE9iai5TZXRGb3JtU2V0SWQoY3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg Y3R4Lk9wT2JqLlNldEZsYWdzKGN0eC52ZnJHb3RvRmxhZ3MoKS5Hb3RvRmxhZ3MpDQo+IA0KPiAr ICAgICAgICAjIGN0eC5PSE9iai5TZXRGbGFncyhjdHgudmZyR290b0ZsYWdzKCkuR290b0ZsYWdz KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LktleSgpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgaW5kZXggPSBpbnQobGVuKGN0eC5OdW1iZXIoKSkpIC0gMQ0KPiANCj4gKyAg ICAgICAgICAgIEtleSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKGluZGV4KSkNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9fQXNzaWduUXVlc3Rpb25LZXkoY3R4Lk9wT2JqLCBLZXkpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAjIGN0eC5PSE9iai5TZXRTY29wZSgxKQ0KPiANCj4gKyAg ICAgICAgY3R4Lk9wT2JqLlNldFNjb3BlKDEpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRh ID0gY3R4Lk9wT2JqDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI3ZmckdvdG9GbGFncy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyR290b0ZsYWdz KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyR290b0ZsYWdzQ29udGV4dCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAg Zm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LmdvdG9GbGFnc0ZpZWxkKCk6DQo+IA0KPiArICAgICAg ICAgICAgY3R4LkdvdG9GbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkZsYWcNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHJldHVybiBjdHguR290b0ZsYWdzDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciNnb3RvRmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0R290b0ZsYWdzRmllbGQo c2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Hb3RvRmxhZ3NGaWVsZENvbnRleHQpOg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIGN0eC5OICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5f X1RyYW5zTnVtKGN0eC5OLnRleHQpICE9IDA6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiBj dHguTi5saW5lKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu RmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHJldHVybiBjdHguRmxhZw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZy U3RhdGVtZW50UmVzZXRCdXR0b24uDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFJl c2V0QnV0dG9uKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVzZXRC dXR0b25Db250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBSQk9iaiA9IGN0eC5PcE9iag0KPiANCj4g KyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBSQk9iai5TZXRM aW5lTm8oTGluZSkNCj4gDQo+ICsgICAgICAgIGRlZmF1bHRzdG9yZSA9IGN0eC5OLnRleHQNCj4g DQo+ICsgICAgICAgIERlZmF1bHRJZCwgUmV0dXJuQ29kZSA9IGdDVmZyRGVmYXVsdFN0b3JlLkdl dERlZmF1bHRJZChkZWZhdWx0c3RvcmUpDQo+IA0KPiArICAgICAgICBzZWxmLl9fRXJyb3JIYW5k bGVyKFJldHVybkNvZGUsIGN0eC5OLmxpbmUpDQo+IA0KPiArICAgICAgICBSQk9iai5TZXREZWZh dWx0SWQoRGVmYXVsdElkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9 IFJCT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFF1ZXN0aW9ucy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0 VmZyU3RhdGVtZW50UXVlc3Rpb25zKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UXVlc3Rpb25zQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEJvb2xl YW5UeXBlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJT dGF0ZW1lbnRCb29sZWFuVHlwZSgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0 ZW1lbnREYXRlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52 ZnJTdGF0ZW1lbnREYXRlKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVu dE51bWVyaWNUeXBlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0 eC52ZnJTdGF0ZW1lbnROdW1lcmljVHlwZSgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu Tm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlKCkuTm9kZQ0KPiANCj4gKyAgICAgICAg aWYgY3R4LnZmclN0YXRlbWVudE9yZGVyZWRMaXN0KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdCgpLk5vZGUNCj4gDQo+ ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRUaW1lKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRUaW1lKCkuTm9kZQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2 ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50 UXVlc3Rpb25UYWcoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVz dGlvblRhZ0NvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdGF0VGFnKCkgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRTdGF0 VGFnKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVu dElmKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0 ZW1lbnRJbmNvbnNpc3RlbnRJZigpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0 ZW1lbnROb1N1Ym1pdElmKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9 IGN0eC52ZnJTdGF0ZW1lbnROb1N1Ym1pdElmKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4 LnZmclN0YXRlbWVudERpc2FibGVJZlF1ZXN0KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnREaXNhYmxlSWZRdWVzdCgpLk5vZGUNCj4gDQo+ ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoKCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRSZWZyZXNoKCkuTm9kZQ0KPiAN Cj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKCkgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRWYXJzdG9yZURl dmljZSgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRFeHRlbnNpb24o KSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVu dEV4dGVuc2lvbigpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRSZWZy ZXNoRXZlbnQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZm clN0YXRlbWVudFJlZnJlc2hFdmVudCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJT dGF0ZW1lbnRXYXJuaW5nSWYoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2Rl ID0gY3R4LnZmclN0YXRlbWVudFdhcm5pbmdJZigpLk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0 IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50 SW5jb25zaXN0ZW50SWYuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEluY29uc2lz dGVudElmKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0 ZW50SWZDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIElJT2JqID0gQ0lmckluY29u c2lzdGVudElmKCkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBJSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0K PiArICAgICAgICBJSU9iai5TZXRFcnJvcihzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBJSU9iag0KPiANCj4gKyAg ICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9DQo+IHNlbGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0 KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4 Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudE5vU3VibWl0SWYuDQo+ IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE5vU3VibWl0SWYoc2VsZiwNCj4gY3R4OlZm clN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnROb1N1Ym1pdElmQ29udGV4dCk6DQo+IA0KPiArICAg ICAgICBOU0lPYmogPSBDSWZyTm9TdWJtaXRJZigpDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTlNJT2JqLlNldExpbmVObyhj dHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIE5TSU9iai5TZXRFcnJvcihzZWxmLl9fVHJh bnNOdW0oY3R4Lk51bWJlcigpKSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBOU0lP YmoNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJlc3Npb24gPQ0KPiBzZWxmLl9fRXh0cmFj dE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJT dGF0ZW1lbnREaXNhYmxlSWZRdWVzdC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50 RGlzYWJsZUlmUXVlc3Qoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRE aXNhYmxlSWZRdWVzdENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgRElPYmogPSBDSWZyRGlzYWJs ZUlmKCkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBESU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAg ICAgICBjdHguTm9kZS5EYXRhID0gRElPYmoNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkV4cHJl c3Npb24gPQ0KPiBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhw cmVzc2lvbigpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0K PiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5 IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRSZWZyZXNoLg0KPiANCj4gKyAgICBkZWYgdmlz aXRWZnJTdGF0ZW1lbnRSZWZyZXNoKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50UmVmcmVzaENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgUk9iaiA9IENJZnJSZWZyZXNo KCkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBST2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAg IFJPYmouU2V0UmVmcmVzaEludGVydmFsKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpKQ0K PiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFJPYmoNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50VmFyc3RvcmVE ZXZpY2UuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFZhcnN0b3JlRGV2aWNlKHNl bGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50VmFyc3RvcmVEZXZpY2VDb250 ZXh0KToNCj4gDQo+ICsgICAgICAgIFZET2JqID0gQ0lmclZhclN0b3JlRGV2aWNlKCkNCj4gDQo+ ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBWRE9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBWRE9iai5T ZXREZXZpY2VQYXRoKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpKQ0KPiANCj4gKyAgICAg ICAgY3R4Lk5vZGUuRGF0YSA9IFZET2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFJlZnJlc2hFdmVudC4NCj4gDQo+ ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50KHNlbGYsDQo+IGN0eDpWZnJT eW50YXhQYXJzZXIuVmZyU3RhdGVtZW50UmVmcmVzaEV2ZW50Q29udGV4dCk6DQo+IA0KPiArICAg ICAgICBSaU9iaiA9IENJZnJSZWZyZXNoSWQoKQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFJpT2JqLlNldExpbmVObyhjdHgu c3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIFJpT2JqLlNldFJlZnJlc2hFdmVudEdyb3V0SWQo Y3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEg PSBSaU9iag0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiAr DQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciN2ZnJTdGF0ZW1lbnRXYXJuaW5nSWYuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRl bWVudFdhcm5pbmdJZihzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFdh cm5pbmdJZkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgV0lPYmogPSBDSWZyV2FybmluZ0lmKCkN Cj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBXSU9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBX SU9iai5TZXRXYXJuaW5nKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKSkNCj4gDQo+ICsg ICAgICAgIFdJT2JqLlNldFRpbWVPdXQoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpKQ0K PiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFdJT2JqDQo+IA0KPiArICAgICAgICBjdHgu Tm9kZS5FeHByZXNzaW9uID0NCj4gc2VsZi5fX0V4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0 YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHgu Tm9kZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UXVlc3Rpb25UYWdMaXN0 Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3Qoc2VsZiwN Cj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvblRhZ0xpc3RDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0K PiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvblRhZygpOg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRRdWVz dGlvbk9wdGlvblRhZy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UXVlc3Rpb25P cHRpb25UYWcoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlv bk9wdGlvblRhZ0NvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRTdXBwcmVzc0lm UXVlc3QoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0 YXRlbWVudFN1cHByZXNzSWZRdWVzdCgpLk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlm IGN0eC52ZnJTdGF0ZW1lbnRHcmF5T3V0SWZRdWVzdCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50R3JheU91dElmUXVlc3QoKS5Ob2RlDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50VmFsdWUoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFZhbHVlKCku Tm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudERlZmF1bHQo KSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVu dERlZmF1bHQoKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVt ZW50T3B0aW9ucygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgu dmZyU3RhdGVtZW50T3B0aW9ucygpLk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0 eC52ZnJTdGF0ZW1lbnRSZWFkKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9k ZSA9IGN0eC52ZnJTdGF0ZW1lbnRSZWFkKCkuTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg aWYgY3R4LnZmclN0YXRlbWVudFdyaXRlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBj dHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRXcml0ZSgpLk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVt ZW50U3VwcHJlc3NJZlF1ZXN0Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdXBw cmVzc0lmUXVlc3Qoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBw cmVzc0lmUXVlc3RDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFNJT2JqID0gQ0lm clN1cHByZXNzSWYoKQ0KPiANCj4gKyAgICAgICAgU0lPYmouU2V0TGluZU5vKGN0eC5zdGFydC5s aW5lKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFNJT2JqDQo+IA0KPiArICAgICAg ICBjdHguTm9kZS5Db25kaXRpb24gPSAnc3VwcHJlc3NpZicgKyAnICcgKw0KPiBzZWxmLl9fRXh0 cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiANCj4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHgu Tm9kZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50R3JheU91dElmUXVlc3Qu DQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEdyYXlPdXRJZlF1ZXN0KHNlbGYsDQo+ IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R3JheU91dElmUXVlc3RDb250ZXh0KToN Cj4gDQo+ICsgICAgICAgIEdPSU9iaiA9IENJZnJHcmF5T3V0SWYoKQ0KPiANCj4gKyAgICAgICAg R09JT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2Rl LkRhdGEgPSBHT0lPYmoNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICdncmF5 b3V0aWYnICsgJyAnICsNCj4gc2VsZi5fX0V4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZmclN0YXRl bWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2ZsYWdzRmllbGQu DQo+IA0KPiArICAgIGRlZiB2aXNpdEZsYWdzRmllbGQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNl ci5GbGFnc0ZpZWxkQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTiAh PSBOb25lOg0KPiANCj4gKw0KPiBDVmZyRXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZyhFRklfVkZS X1dBUk5JTkdfQ09ERS5WRlJfV0FSTklORw0KPiBfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUs IGN0eC5OLmxpbmUsIGN0eC5OLnRleHQpDQo+IA0KPiArICAgICAgICBpZiBjdHguTCAhPSBOb25l Og0KPiANCj4gKw0KPiBDVmZyRXJyb3JIYW5kbGUuSGFuZGxlV2FybmluZyhFRklfVkZSX1dBUk5J TkdfQ09ERS5WRlJfV0FSTklORw0KPiBfT0JTT0xFVEVEX0ZSQU1FV09SS19PUENPREUsIGN0eC5M LmxpbmUsIGN0eC5MLnRleHQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERlZmF1bHQuDQo+IA0K PiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERlZmF1bHQoc2VsZiwNCj4gY3R4OlZmclN5bnRh eFBhcnNlci5WZnJTdGF0ZW1lbnREZWZhdWx0Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgSXNFeHAgPSBGYWxz ZQ0KPiANCj4gKyAgICAgICAgRGVmYXVsdElkID0gRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5E QVJEDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIGN0eC52ZnJDb25zdGFudFZhbHVlRmllbGQoKSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIFZhbHVlID0gY3R4LnZmckNvbnN0YW50VmFsdWVGaWVsZCgpLlZhbHVlDQo+ IA0KPiArICAgICAgICAgICAgVmFsdWVMaXN0ID0gY3R4LnZmckNvbnN0YW50VmFsdWVGaWVsZCgp LlZhbHVlTGlzdA0KPiANCj4gKyAgICAgICAgICAgIFR5cGUgPSBzZWxmLl9fQ3VyclFlc3RWYXJJ bmZvLlZhclR5cGUNCj4gDQo+ICsgICAgICAgICAgICBTaXplID0gMA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyZW50TWluTWF4RGF0YSAhPSBOb25lIGFuZA0KPiBz ZWxmLl9fQ3VycmVudE1pbk1heERhdGEuSXNOdW1lcmljT3Bjb2RlKCk6DQo+IA0KPiArICAgICAg ICAgICAgICAgICMgY2hlY2sgZGVmYXVsdCB2YWx1ZSBpcyB2YWxpZCBmb3IgTnVtZXJpYyBPcGNv ZGUNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVmFsdWVMaXN0ID09IFtdOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgVmFsdWVMaXN0LmFwcGVuZChWYWx1ZSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKFZhbHVlTGlzdCkpOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgVmFsdWUgPSBWYWx1ZUxpc3RbaV0NCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgIE51bWVyaWNRc3QgPSBDSWZyTnVtZXJpYyAoc2VsZi5fX0N1cnJlbnRRdWVzdGlvbikg Iw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgKE51bWVyaWNRc3QuR2V0TnVtZXJpY0Zs YWdzKCkgJiBFRklfSUZSX0RJU1BMQVkpID09IDAgYW5kDQo+IHNlbGYuX19DdXJyUWVzdFZhcklu Zm8uSXNCaXRWYXIgPT0gRmFsc2U6ICMNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBp ZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBWYWx1ZS51OCA8IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRN aW5EYXRhKFR5cGUsDQo+IEZhbHNlKSBvciBWYWx1ZS51OCA+IHNlbGYuX19DdXJyZW50TWluTWF4 RGF0YS5HZXRNYXhEYXRhKFR5cGUsIEZhbHNlKToNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IExpbmUs ICJOdW1lcmljIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pblZhbHVlIGFuZCBNYXhW YWx1ZS4iKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiBWYWx1ZS51MTYgPCBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuR2V0TWluRGF0 YShUeXBlLA0KPiBGYWxzZSkgb3IgVmFsdWUudTE2ID4gc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRh LkdldE1heERhdGEoVHlwZSwgRmFsc2UpOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gTGluZSwgIk51 bWVyaWMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gTWluVmFsdWUgYW5kIE1heFZhbHVl LiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBF RklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIFZhbHVlLnUzMiA8IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRNaW5EYXRhKFR5 cGUsDQo+IEZhbHNlKSBvciBWYWx1ZS51MzIgPiBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuR2V0 TWF4RGF0YShUeXBlLCBGYWxzZSk6DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiBMaW5lLCAiTnVtZXJp YyBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW5WYWx1ZSBhbmQgTWF4VmFsdWUuIikN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV82NDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgVmFsdWUudTY0IDwgc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1pbkRhdGEoVHlwZSwN Cj4gRmFsc2UpIG9yIFZhbHVlLnU2NCA+IHNlbGYuX19DdXJyZW50TWluTWF4RGF0YS5HZXRNYXhE YXRhKFR5cGUsIEZhbHNlKToNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IExpbmUsICJOdW1lcmljIGRl ZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pblZhbHVlIGFuZCBNYXhWYWx1ZS4iKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAjIFZhbHVlIGZvciBxdWVzdGlvbiBzdG9yZWQgaW4gYml0IGZpZWxkcyBp cyBhbHdheXMgc2V0IHRvIFVJTlQzMg0KPiB0eXBlLg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlLnUzMiA8IHNlbGYuX19DdXJyZW50TWluTWF4 RGF0YS5HZXRNaW5EYXRhKFR5cGUsDQo+IFRydWUpIG9yICBWYWx1ZS51MzIgPiBzZWxmLl9fQ3Vy cmVudE1pbk1heERhdGEuR2V0TWF4RGF0YShUeXBlLCBUcnVlKToNCj4gDQo+ICsNCj4gc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs DQo+IExpbmUsICJOdW1lcmljIGRlZmF1bHQgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIE1pblZhbHVl IGFuZCBNYXhWYWx1ZS4iKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlLnU2NCA8IHNlbGYuX19D dXJyZW50TWluTWF4RGF0YS5HZXRNaW5EYXRhKFR5cGUsDQo+IEZhbHNlKSBvciAgVmFsdWUudTY0 ID4gc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLkdldE1heERhdGEoVHlwZSwgRmFsc2UpOg0KPiAN Cj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwNCj4gTGluZSwgIk51bWVyaWMgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJl dHdlZW4gTWluVmFsdWUgYW5kIE1heFZhbHVlLiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQo+IA0KPiArICAgICAgICAgICAgICAg IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9S LA0KPiBMaW5lLCAiRGVmYXVsdCBkYXRhIHR5cGUgZXJyb3IuIikNCj4gDQo+ICsgICAgICAgICAg ICAgICAgU2l6ZSA9IHNpemVvZihFRklfSUZSX1RZUEVfVkFMVUUpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgZWxpZiBjdHgudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkuTGlzdFR5cGU6DQo+ IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBTaXplID0gc2l6ZW9mKGNfdWJ5dGUpICogbGVu KFZhbHVlTGlzdCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfMTY6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBTaXplID0gc2l6ZW9m KGNfdXNob3J0KSAqIGxlbihWYWx1ZUxpc3QpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5 cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgU2l6ZSA9IHNpemVvZihjX3Vsb25nKSAqIGxlbihWYWx1ZUxpc3QpDQo+IA0KPiArICAgICAg ICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgU2l6ZSA9IHNpemVvZihjX3Vsb25nbG9uZykgKiBsZW4oVmFsdWVM aXN0KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBTaXplID0gc2l6ZW9mKGNfdWxvbmcpDQo+IA0KPiArICAgICAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0N Cj4gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoVHlwZSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwg TGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBTaXplICs9IEVGSV9JRlJfREVGQVVM VC5WYWx1ZS5vZmZzZXQNCj4gDQo+ICsgICAgICAgICAgICBpZiBub3QgY3R4LnZmckNvbnN0YW50 VmFsdWVGaWVsZCgpLkxpc3RUeXBlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBET2JqID0gQ0lm ckRlZmF1bHQoU2l6ZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgRE9iai5TZXRMaW5lTm8oTGlu ZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgRE9iai5TZXRWYWx1ZShWYWx1ZSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0lzU3RyaW5nT3A6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBET2JqLlNldFR5cGUoRUZJX0lGUl9UWVBFX1NUUklORykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIHNl bGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgRE9iai5TZXRUeXBlKEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMikNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgRE9i ai5TZXRUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSkNCj4gDQo+ICsgICAgICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBET2JqID0gQ0lmckRlZmF1bHQzKFNp emUsIGxlbihWYWx1ZUxpc3QpLCBUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBET2JqLlNl dExpbmVObyhMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBET2JqLlNldFZhbHVlKFZhbHVl TGlzdCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgRE9iai5TZXRUeXBlKEVGSV9JRlJfVFlQRV9C VUZGRVIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg IElzRXhwID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgICAgIERPYmogPSBDSWZyRGVmYXVsdDIoKQ0K PiANCj4gKyAgICAgICAgICAgIERPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAgICAg ICAgRE9iai5TZXRTY29wZSgxKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LkRlZmF1 bHRTdG9yZSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgRGVmYXVsdElkLCBSZXR1cm5D b2RlID0gZ0NWZnJEZWZhdWx0U3RvcmUuR2V0RGVmYXVsdElkKGN0eC5TTi50ZXh0KQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgY3R4LlNOLmxpbmUs IGN0eC5TTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIERPYmouU2V0RGVmYXVsdElkKERlZmF1 bHRJZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuX19DaGVja0R1cGxpY2F0ZURlZmF1 bHRWYWx1ZShEZWZhdWx0SWQsIGN0eC5ELmxpbmUsIGN0eC5ELnRleHQpDQo+IA0KPiArICAgICAg ICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lE X0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgVmFyU3RvcmVOYW1lLCBSZXR1cm5Db2RlID0N Cj4gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9yZU5hbWUoc2VsZi5fX0N1cnJRZXN0VmFySW5m by5WYXJTdG9yZUlkKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0 dXJuQ29kZSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBWYXJHdWlkID0NCj4gZ0NWZnJEYXRh U3RvcmFnZS5HZXRWYXJTdG9yZUd1aWQoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlk KQ0KPiANCj4gKyAgICAgICAgICAgIFZhclN0b3JlVHlwZSA9DQo+IGdDVmZyRGF0YVN0b3JhZ2Uu R2V0VmFyU3RvcmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCj4gDQo+ ICsgICAgICAgICAgICBpZiAoSXNFeHAgPT0gRmFsc2UpIGFuZCAoVmFyU3RvcmVUeXBlID09DQo+ IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUik6DQo+IA0KPiAr DQo+IHNlbGYuX19FcnJvckhhbmRsZXIoZ0NWZnJEZWZhdWx0U3RvcmUuQnVmZmVyVmFyU3RvcmVB bHRDb25maWdBZGQoRGVmYXVsdEkNCj4gZCwgc2VsZi5fX0N1cnJRZXN0VmFySW5mbywgVmFyU3Rv cmVOYW1lLCBWYXJHdWlkLA0KPiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUsIFZhbHVl KSwgTGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBET2JqDQo+IA0KPiArICAg ICAgICBzZWxmLl9fSW5zZXJ0Q2hpbGQoY3R4Lk5vZGUsIGN0eC52ZnJTdGF0ZW1lbnRWYWx1ZSgp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciN2ZnJTdGF0ZW1lbnRWYWx1ZS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50VmFsdWUoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRWYWx1ZUNv bnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVk9iaiA9IENJZnJWYWx1ZSgpDQo+IA0K PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgVk9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBjdHguTm9k ZS5EYXRhID0gVk9iag0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9DQo+IHNl bGYuX19FeHRyYWN0T3JpZ2luYWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0 YXRlbWVudE9wdGlvbnMuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE9wdGlvbnMo c2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRPcHRpb25zQ29udGV4dCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4g KyAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50T25lT2ZPcHRpb24oKS5Ob2RlDQo+ IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3Zm clN0YXRlbWVudE9uZU9mT3B0aW9uLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRP bmVPZk9wdGlvbihzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudE9uZU9m T3B0aW9uQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0 LmxpbmUNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9 PSBFRklfSUZSX1RZUEVfT1RIRVI6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1IsDQo+IExpbmUsICJHZXQg ZGF0YSB0eXBlIGVycm9yLiIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVmFsdWUgPSBjdHgudmZyQ29uc3Rh bnRWYWx1ZUZpZWxkKCkuVmFsdWUNCj4gDQo+ICsgICAgICAgIFZhbHVlTGlzdCA9IGN0eC52ZnJD b25zdGFudFZhbHVlRmllbGQoKS5WYWx1ZUxpc3QNCj4gDQo+ICsgICAgICAgIFR5cGUgPSBzZWxm Ll9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUNCj4gDQo+ICsgICAgICAgIFNpemUgPSAwDQo+IA0K PiArICAgICAgICBpZiBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAjc2V0IG1pbi9tYXggdmFsdWUgZm9yIG9uZW9mIG9wY29kZQ0KPiANCj4gKyAg ICAgICAgICAgIFN0ZXAgPQ0KPiBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuR2V0U3RlcERhdGEo c2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlLA0KPiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LklzQml0VmFyKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8u SXNCaXRWYXI6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19DdXJyZW50TWluTWF4RGF0 YS5TZXRNaW5NYXhTdGVwRGF0YShWYWx1ZS51MzIsDQo+IFZhbHVlLnUzMiwgU3RlcCwgRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzMyKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAg ICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLlNldE1pbk1heFN0 ZXBEYXRhKFZhbHVlLnU2NCwNCj4gVmFsdWUudTY0LCBTdGVwLCBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfNjQpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJlbnRNaW5N YXhEYXRhLlNldE1pbk1heFN0ZXBEYXRhKFZhbHVlLnUzMiwNCj4gVmFsdWUudTMyLCBTdGVwLCBF RklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg c2VsZi5fX0N1cnJlbnRNaW5NYXhEYXRhLlNldE1pbk1heFN0ZXBEYXRhKFZhbHVlLnUxNiwNCj4g VmFsdWUudTE2LCBTdGVwLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYpDQo+IA0KPiArICAgICAg ICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBzZWxmLl9fQ3VycmVudE1pbk1heERhdGEuU2V0TWluTWF4U3RlcERh dGEoVmFsdWUudTgsDQo+IFZhbHVlLnU4LCBTdGVwLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfOCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlw ZSA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQo+IA0KPiArICAgICAgICAgICAgU2l6ZSA9IHNpemVv ZihFRklfSUZSX1RZUEVfVkFMVUUpDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC52ZnJDb25zdGFu dFZhbHVlRmllbGQoKS5MaXN0VHlwZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBUeXBlID09IEVG SV9JRlJfVFlQRV9OVU1fU0laRV84Og0KPiANCj4gKyAgICAgICAgICAgICAgICBTaXplID0gc2l6 ZW9mKGNfdWJ5dGUpICogbGVuKFZhbHVlTGlzdCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBUeXBl ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgU2l6 ZSA9IHNpemVvZihjX3VzaG9ydCkgKiBsZW4oVmFsdWVMaXN0KQ0KPiANCj4gKyAgICAgICAgICAg IGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBTaXplID0gc2l6ZW9mKGNfdWxvbmcpICogbGVuKFZhbHVlTGlzdCkNCj4gDQo+ICsgICAg ICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgU2l6ZSA9IHNpemVvZihjX3Vsb25nbG9uZykgKiBsZW4oVmFsdWVMaXN0KQ0K PiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAjIEZvciB0aGUgb25lb2Yg c3RvcmVkIGluIGJpdCBmaWVsZHMsIHNldCB0aGUgb3B0aW9uIHR5cGUgYXMgVUlOVDMyLg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+IA0K PiArICAgICAgICAgICAgICAgIFNpemUgPSBzaXplb2YoY19sb25nKQ0KPiANCj4gKyAgICAgICAg ICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiBn Q1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShUeXBlKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsIExpbmUpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBTaXplICs9IEVGSV9JRlJfT05FX09GX09QVElPTi5WYWx1 ZS5vZmZzZXQNCj4gDQo+ICsgICAgICAgIE9PT09iaiA9IE5vbmUNCj4gDQo+ICsgICAgICAgIGlm IG5vdCBjdHgudmZyQ29uc3RhbnRWYWx1ZUZpZWxkKCkuTGlzdFR5cGU6DQo+IA0KPiArICAgICAg ICAgICAgT09PT2JqID0gQ0lmck9uZU9mT3B0aW9uKFNpemUpDQo+IA0KPiArICAgICAgICAgICAg aWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgT09PT2JqLlNldFR5cGUoRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyKQ0KPiANCj4gKyAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIE9PT09iai5TZXRUeXBlKFR5cGUp DQo+IA0KPiArICAgICAgICAgICAgT09PT2JqLlNldFZhbHVlKFZhbHVlKQ0KPiANCj4gKyAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBPT09PYmogPSBDSWZyT25lT2ZPcHRpb24yKFNp emUsIGxlbihWYWx1ZUxpc3QpLCBUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgIE9PT09iai5TZXRU eXBlKEVGSV9JRlJfVFlQRV9CVUZGRVIpDQo+IA0KPiArICAgICAgICAgICAgT09PT2JqLlNldFZh bHVlKFZhbHVlTGlzdCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIE9PT09iai5T ZXRMaW5lTm8oTGluZSkNCj4gDQo+ICsgICAgICAgIE9PT09iai5TZXRPcHRpb24oc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoMCkpKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiBzZWxm Ll9fRXJyb3JIYW5kbGVyKE9PT09iai5TZXRGbGFncyhjdHgudmZyT25lT2ZPcHRpb25GbGFncygp LkxGbGFncyksDQo+IGN0eC5GLmxpbmUpDQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIo c2VsZi5fX0N1cnJlbnRRdWVzdGlvbi5TZXRRSGVhZGVyRmxhZ3MoY3R4LnZmck9uZU9mDQo+IE9w dGlvbkZsYWdzKCkuSEZsYWdzKSwgY3R4LkYubGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICMgQXJyYXkgdHlwZSBvbmx5IGZvciBkZWZhdWx0IHR5cGUgT25lT2ZPcHRpb24uDQo+IA0KPiAr ICAgICAgICBpZiAoT09PT2JqLkdldEZsYWdzKCkgJiAoRUZJX0lGUl9PUFRJT05fREVGQVVMVCB8 DQo+IEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHKSkgPT0gMCBhbmQNCj4gKGN0eC52ZnJDb25z dGFudFZhbHVlRmllbGQoKS5MaXN0VHlwZSk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1IsDQo+IExpbmUs ICJEZWZhdWx0IGtleXdvcmQgc2hvdWxkIHdpdGggYXJyYXkgdmFsdWUgdHlwZSEiKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgIyBDbGVhciB0aGUgZGVmYXVsdCBmbGFnIGlmIHRoZSBvcHRpb24g bm90IHVzZSBhcnJheSB2YWx1ZSBidXQgaGFzIGRlZmF1bHQNCj4gZmxhZy4NCj4gDQo+ICsgICAg ICAgIGlmIChPT09PYmouR2V0RmxhZ3MoKSAmIChFRklfSUZSX09QVElPTl9ERUZBVUxUIHwNCj4g RUZJX0lGUl9PUFRJT05fREVGQVVMVF9NRkcpKSAhPSAwIGFuZA0KPiAoY3R4LnZmckNvbnN0YW50 VmFsdWVGaWVsZCgpLkxpc3RUeXBlID09IEZhbHNlKSBhbmQgKHNlbGYuX19Jc09yZGVyZWRMaXN0 KToNCj4gDQo+ICsgICAgICAgICAgICBPT09PYmouU2V0RmxhZ3MoT09PT2JqLkdldEZsYWdzKCkg JiB+KEVGSV9JRlJfT1BUSU9OX0RFRkFVTFQNCj4gfCBFRklfSUZSX09QVElPTl9ERUZBVUxUX01G RykpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZh clN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAg VmFyU3RvcmVOYW1lLCBSZXR1cm5Db2RlID0NCj4gZ0NWZnJEYXRhU3RvcmFnZS5HZXRWYXJTdG9y ZU5hbWUoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkKQ0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSkNCj4gDQo+ICsgICAgICAg ICAgICBWYXJTdG9yZUd1aWQgPQ0KPiBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlR3VpZChz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQpDQo+IA0KPiArICAgICAgICAgICAgaWYg T09PT2JqLkdldEZsYWdzKCkgJiBFRklfSUZSX09QVElPTl9ERUZBVUxUOg0KPiANCj4gKw0KPiBz ZWxmLl9fQ2hlY2tEdXBsaWNhdGVEZWZhdWx0VmFsdWUoRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NU QU5EQVJELA0KPiBjdHguRi5saW5lLCBjdHguRi50ZXh0KQ0KPiANCj4gKw0KPiBzZWxmLl9fRXJy b3JIYW5kbGVyKGdDVmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZhclN0b3JlQWx0Q29uZmlnQWRkKEVG SV9ISUkNCj4gX0RFRkFVTFRfQ0xBU1NfU1RBTkRBUkQsIHNlbGYuX19DdXJyUWVzdFZhckluZm8s IFZhclN0b3JlTmFtZSwNCj4gVmFyU3RvcmVHdWlkLCBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZh clR5cGUsIFZhbHVlKSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBPT09PYmouR2V0Rmxh Z3MoKSAmIEVGSV9JRlJfT1BUSU9OX0RFRkFVTFRfTUZHOg0KPiANCj4gKw0KPiBzZWxmLl9fQ2hl Y2tEdXBsaWNhdGVEZWZhdWx0VmFsdWUoRUZJX0hJSV9ERUZBVUxUX0NMQVNTX01BTlVGQUNUVQ0K PiBSSU5HLCBjdHguRi5saW5lLCBjdHguRi50ZXh0KQ0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JI YW5kbGVyKGdDVmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZhclN0b3JlQWx0Q29uZmlnQWRkKEVGSV9I SUkNCj4gX0RFRkFVTFRfQ0xBU1NfTUFOVUZBQ1RVUklORywgc2VsZi5fX0N1cnJRZXN0VmFySW5m bywNCj4gVmFyU3RvcmVOYW1lLCBWYXJTdG9yZUd1aWQsIHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyVHlwZSwgVmFsdWUpLCBMaW5lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lktl eSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+IGN0eC5LTi5saW5lLCBjdHguS04u dGV4dCkNCj4gDQo+ICsgICAgICAgICAgICAj44CAR3VpZCBPcHRpb24gS2V5DQo+IA0KPiArICAg ICAgICAgICAgSWZyT3B0aW9uS2V5ID0NCj4gQ0lmck9wdGlvbktleShzZWxmLl9fQ3VycmVudFF1 ZXN0aW9uLkdldFF1ZXN0aW9uSWQoKSwgVmFsdWUsDQo+IHNlbGYuX19UcmFuc051bShjdHguS04u dGV4dCkpDQo+IA0KPiArICAgICAgICAgICAgSWZyT3B0aW9uS2V5LlNldExpbmVObygpDQo+IA0K PiArICAgICAgICBpZiBjdHgudmZySW1hZ2VUYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIE9PT09iai5TZXRTY29wZSgxKSAjDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0g T09PT2JqDQo+IA0KPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJJbWFnZVRhZygpOg0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2 ZnJPbmVPZk9wdGlvbkZsYWdzLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJPbmVPZk9wdGlvbkZs YWdzKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyT25lT2ZPcHRpb25GbGFnc0NvbnRl eHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5MRmxhZ3MgPSBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LlZhclR5cGUNCj4gDQo+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5vbmVvZm9w dGlvbkZsYWdzRmllbGQoKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguSEZsYWdzIHw9IEZsYWdz RmllbGRDdHguSEZsYWcNCj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWdzIHw9IEZsYWdzRmll bGRDdHguTEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBj dHguTEZsYWdzDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNvbmVvZm9wdGlvbkZsYWdzRmllbGQuDQo+ IA0KPiArICAgIGRlZiB2aXNpdE9uZW9mb3B0aW9uRmxhZ3NGaWVsZChzZWxmLA0KPiBjdHg6VmZy U3ludGF4UGFyc2VyLk9uZW9mb3B0aW9uRmxhZ3NGaWVsZENvbnRleHQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGlmIGN0eC5OdW1iZXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxh ZyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBpZiBjdHgu T3B0aW9uRGVmYXVsdCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFnID0g MHgxMA0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk9wdGlvbkRlZmF1bHRNZmcoKSAhPSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MjANCj4gDQo+ICsgICAgICAgIGlmIGN0 eC5JbnRlcmFjdGl2ZUZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5IRmxh ZyA9IDB4MDQNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5SZXNldFJlcXVpcmVkRmxhZygpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkhGbGFnID0gMHgxMA0KPiANCj4gKyAgICAgICAg aWYgY3R4LlJlc3RTdHlsZUZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5I RmxhZyA9IDB4MjANCj4gDQo+ICsgICAgICAgIGlmIGN0eC5SZWNvbm5lY3RSZXF1aXJlZEZsYWco KSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IDB4NDANCj4gDQo+ICsg ICAgICAgIGlmIGN0eC5NYW51ZmFjdHVyaW5nRmxhZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgY3R4LkxGbGFnID0gMHgyMA0KPiANCj4gKyAgICAgICAgaWYgY3R4LkRlZmF1bHRGbGFn KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDEwDQo+IA0KPiAr ICAgICAgICBpZiBjdHguTlZBY2Nlc3NGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcNCj4gKEVGSV9WRlJfV0FSTklOR19DT0RF LlZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1ANCj4gQ09ERSwgY3R4LkEubGluZSwg Y3R4LkEudGV4dCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5MYXRlQ2hlY2tGbGFnKCkgIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcNCj4g KEVGSV9WRlJfV0FSTklOR19DT0RFLlZGUl9XQVJOSU5HX09CU09MRVRFRF9GUkFNRVdPUktfT1AN Cj4gQ09ERSwgY3R4LkwubGluZSwgY3R4LkwudGV4dCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IHJldHVybiBjdHguSEZsYWcsIGN0eC5MRmxhZw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAg ICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3Rh dGVtZW50UmVhZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50UmVhZChzZWxmLA0K PiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFJlYWRDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIFJPYmogPSBDSWZyUmVhZCgpDQo+IA0KPiArICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgUk9iai5TZXRMaW5lTm8o Y3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gUk9iag0KPiAN Cj4gKyAgICAgICAgY3R4Lk5vZGUuRXhwcmVzc2lvbiA9DQo+IHNlbGYuX19FeHRyYWN0T3JpZ2lu YWxUZXh0KGN0eC52ZnJTdGF0ZW1lbnRFeHByZXNzaW9uKCkpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFdyaXRlLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRXcml0ZShzZWxmLA0KPiBjdHg6VmZyU3ludGF4 UGFyc2VyLlZmclN0YXRlbWVudFdyaXRlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBXT2JqID0gQ0lmcldyaXRlKCkNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBXT2JqLlNldExpbmVObyhjdHguc3RhcnQubGlu ZSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBXT2JqDQo+IA0KPiArICAgICAgICBj dHguTm9kZS5FeHByZXNzaW9uID0NCj4gc2VsZi5fX0V4dHJhY3RPcmlnaW5hbFRleHQoY3R4LnZm clN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBj dHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25MaXN0Lg0K PiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3Qoc2VsZiwN Cj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbkxpc3RDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ IA0KPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbigp Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4KQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2 ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvbi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50UXVlc3Rpb25PcHRpb24oc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1l bnRRdWVzdGlvbk9wdGlvbkNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52 aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRRdWVz dGlvblRhZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZy U3RhdGVtZW50UXVlc3Rpb25UYWcoKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlm IGN0eC52ZnJTdGF0ZW1lbnRRdWVzdGlvbk9wdGlvblRhZygpICE9IE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50UXVlc3Rpb25PcHRpb25UYWcoKS5O b2RlDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFy c2VyI3ZmclN0YXRlbWVudEJvb2xlYW5UeXBlLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0 ZW1lbnRCb29sZWFuVHlwZShzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVu dEJvb2xlYW5UeXBlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudENoZWNrQm94 KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1l bnRDaGVja0JveCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAg ICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50QWN0aW9uKCkuTm9kZQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0 ZW1lbnRDaGVja0JveC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50Q2hlY2tCb3go c2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDaGVja0JveENvbnRleHQp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgQ0JPYmogPSBjdHguT3BPYmoNCj4gDQo+ICsgICAg ICAgIExpbmUgPSAgY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIENCT2JqLlNldExpbmVO byhMaW5lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0N1cnJlbnRRdWVzdGlvbiA9IENCT2JqLkdl dFF1ZXN0aW9uKCkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Jc0NoZWNrQm94T3AgPSBUcnVlDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgIyBDcmVhdGUgYSBHVUlEIG9wY29kZSB0byB3cmFwIHRoZSBjaGVja2Jv eCBvcGNvZGUsIGlmIGl0IHJlZmVyIHRvIGJpdA0KPiB2YXJzdG9yZS4NCj4gDQo+ICsgICAgICAg IGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXI6DQo+IA0KPiArICAgICAgICAgICAg R3VpZE9iaiA9IENJZnJHdWlkKDApDQo+IA0KPiArICAgICAgICAgICAgR3VpZE9iai5TZXRHdWlk KEVES0lJX0lGUl9CSVRfVkFSU1RPUkVfR1VJRCkNCj4gDQo+ICsgICAgICAgICAgICBHdWlkT2Jq LlNldExpbmVObyhMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0U2NvcGUoMSkg Iw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgIyBjaGVjayBkYXRhVHlwZQ0KPiANCj4gKyAgICAg ICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9PVEhF UjoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPSBF RklfSUZSX1RZUEVfQk9PTEVBTg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5fX0N1 cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEOg0KPiAN Cj4gKyAgICAgICAgICAgICMgQ2hlY2sgd2hldGhlciB0aGUgcXVlc3Rpb24gcmVmZXJzIHRvIGEg Yml0IGZpZWxkLCBpZiB5ZXMuIGNyZWF0ZSBhDQo+IEd1aWQgdG8gaW5kaWNhdGUgdGhlIHF1ZXN0 aW9uIHJlZmVycyB0byBhIGJpdCBmaWVsZC4NCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLl9f Q3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBfLCBSZXR1 cm5Db2RlID0NCj4gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUo c2VsZi5fX0N1cnJRZXN0VmFySW5mby4NCj4gVmFyVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lLCAiQ2hlY2tCb3ggdmFyaWQg aXMgbm90IHRoZQ0KPiB2YWxpZCBkYXRhIHR5cGUiKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBp Zg0KPiBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJ bmZvLlZhclN0b3JlSWQpID09DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNU T1JFX0JVRkZFUl9CSVRTIGFuZA0KPiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6 ZSAhPSAxOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gTGluZSwgIkNoZWNrQm94IHZhcmlkIG9ubHkg b2NjdXB5IDEgYml0IGluIEJpdCBWYXJzdG9yZSIpDQo+IA0KPiArICAgICAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBTaXplLCBSZXR1cm5Db2RlID0NCj4gZ0NW ZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoc2VsZi5fX0N1cnJRZXN0 VmFySW5mby4NCj4gVmFyVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoUmV0dXJuQ29kZSwgTGluZSwgIkNoZWNrQm94IHZhcmlkIGlzIG5vdCB0aGUN Cj4gdmFsaWQgZGF0YSB0eXBlIikNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFNpemUg IT0gMCBhbmQgU2l6ZSAhPSBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZToNCj4g DQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+IExpbmUsICJDaGVja0JveCB2YXJpZCBkb2Vzbid0IHN1cHBvcnQg YXJyYXkiKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZWxpZg0KPiBnQ1ZmckRhdGFTdG9y YWdlLkdldFZhclN0b3JlVHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQpID09 DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUiBhbmQNCj4g c2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemUgIT0gc2l6ZW9mKGN0eXBlcy5jX2Jv b2wpOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gTGluZSwgIkNoZWNrQm94IHZhcmlkIG9ubHkgc3Vw cG9ydCBCT09MRUFOIGRhdGEgdHlwZSIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHgu RkxBR1MoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIENCT2JqLlNldEZsYWdzKGN0eC52 ZnJDaGVja0JveEZsYWdzKCkuSEZsYWdzLA0KPiBjdHgudmZyQ2hlY2tCb3hGbGFncygpLkxGbGFn cykNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3Jl SWQgIT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIFZh clN0b3JlTmFtZSwgUmV0dXJuQ29kZSA9DQo+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVO YW1lKHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgc2VsZi5fX0NvbXBhcmVFcnJvckhhbmRsZXIoUmV0dXJuQ29kZSwNCj4gVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MsIExpbmUsIGN0eC5MLnRleHQsICJGYWlsZWQgdG8gcmV0 cmlldmUNCj4gdmFyc3RvcmUgbmFtZSIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAg IFZhclN0b3JlR3VpZCA9DQo+IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVHdWlkKHNlbGYu X19DdXJyUWVzdFZhckluZm8uVmFyU3RvcmVJZCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2Vs Zi5nWmVyb0VmaUlmclR5cGVWYWx1ZS5iID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBDQk9iai5HZXRGbGFncygpICYgMHgwMToNCj4gDQo+ICsNCj4gc2VsZi5fX0NoZWNrRHVwbGlj YXRlRGVmYXVsdFZhbHVlKEVGSV9ISUlfREVGQVVMVF9DTEFTU19TVEFOREFSRCwNCj4gY3R4LkYu bGluZSwgY3R4LkYudGV4dCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFJldHVybkNvZGUg PQ0KPiBnQ1ZmckRlZmF1bHRTdG9yZS5CdWZmZXJWYXJTdG9yZUFsdENvbmZpZ0FkZChFRklfSElJ X0RFRkFVTFRfQ0xBU1NfU1QNCj4gQU5EQVJELHNlbGYuX19DdXJyUWVzdFZhckluZm8sIFZhclN0 b3JlTmFtZSwgVmFyU3RvcmVHdWlkLA0KPiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUs IHNlbGYuZ1plcm9FZmlJZnJUeXBlVmFsdWUpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBz ZWxmLl9fQ29tcGFyZUVycm9ySGFuZGxlcihSZXR1cm5Db2RlLA0KPiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fU1VDQ0VTUywgTGluZSwgY3R4LkwudGV4dCwgIk5vIHN0YW5kYXJkDQo+IGRlZmF1 bHQgc3RvcmFnZSBmb3VuZCIpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIENCT2JqLkdldEZs YWdzKCkgJiAweDAyOg0KPiANCj4gKw0KPiBzZWxmLl9fQ2hlY2tEdXBsaWNhdGVEZWZhdWx0VmFs dWUoRUZJX0hJSV9ERUZBVUxUX0NMQVNTX01BTlVGQUNUVQ0KPiBSSU5HLCBjdHguRi5saW5lLCBj dHguRi50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgUmV0dXJuQ29kZSA9DQo+IGdD VmZyRGVmYXVsdFN0b3JlLkJ1ZmZlclZhclN0b3JlQWx0Q29uZmlnQWRkKEVGSV9ISUlfREVGQVVM VF9DTEFTU19NDQo+IEFOVUZBQ1RVUklORywgc2VsZi5fX0N1cnJRZXN0VmFySW5mbywgVmFyU3Rv cmVOYW1lLCBWYXJTdG9yZUd1aWQsDQo+IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSwg c2VsZi5nWmVyb0VmaUlmclR5cGVWYWx1ZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNl bGYuX19Db21wYXJlRXJyb3JIYW5kbGVyKFJldHVybkNvZGUsDQo+IFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTLCBMaW5lLCBjdHguTC50ZXh0LCAiTm8gbWFudWZhY3R1cmluZw0KPiBk ZWZhdWx0IHN0b3JhZ2UgZm91bmQiKQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LktleSgpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgS2V5ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIo KSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fQXNzaWduUXVlc3Rpb25LZXkoQ0JPYmosIEtl eSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBDQk9iag0KPiANCj4g KyAgICAgICAgc2VsZi5fX0lzQ2hlY2tCb3hPcCA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckNoZWNrQm94Rmxh Z3MuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckNoZWNrQm94RmxhZ3Moc2VsZiwNCj4gY3R4OlZm clN5bnRheFBhcnNlci5WZnJDaGVja0JveEZsYWdzQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgZm9yIEZsYWdz RmllbGRDdHggaW4gY3R4LmNoZWNrYm94RmxhZ3NGaWVsZCgpOg0KPiANCj4gKyAgICAgICAgICAg IGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5MRmxhZw0KPiANCj4gKyAgICAgICAgICAgIGN0 eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg cmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2NoZWNr Ym94RmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0Q2hlY2tib3hGbGFnc0ZpZWxkKHNl bGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuQ2hlY2tib3hGbGFnc0ZpZWxkQ29udGV4dCk6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgaWYgc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5T VVBQT1JURUQsDQo+IGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguRGVm YXVsdEZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRs ZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiBjdHguRC5saW5lLCBj dHguRC50ZXh0KQ0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguTWFudWZhY3R1cmluZ0ZsYWcoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiBjdHguTS5saW5lLCBjdHguTS50ZXh0KQ0K PiANCj4gKyAgICAgICAgZWxpZiBjdHguQ2hlY2tCb3hEZWZhdWx0RmxhZygpICE9IE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMQ0KPiANCj4gKyAgICAgICAgZWxpZiBj dHguQ2hlY2tCb3hEZWZhdWx0TWZnRmxhZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg Y3R4LkxGbGFnID0gMHgwMg0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQo+IA0K PiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFnLCBjdHguTEZsYWcNCj4gDQo+ICsN Cj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3ZmclN0YXRlbWVudEFjdGlvbi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50 QWN0aW9uKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50QWN0aW9uQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiANCj4gKyAgICAgICAgQU9iaiA9IGN0eC5PcE9iag0KPiANCj4gKyAgICAgICAgQU9iai5TZXRM aW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBBT2JqLlNldFF1ZXN0aW9uQ29u ZmlnKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5v ZGUuRGF0YSA9IEFPYmoNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNl ZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyQWN0aW9uRmxhZ3MuDQo+IA0KPiArICAgIGRlZiB2aXNp dFZmckFjdGlvbkZsYWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyQWN0aW9uRmxhZ3ND b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHguYWN0aW9uRmxhZ3NGaWVs ZCgpOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxh Zw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI2FjdGlvbkZsYWdzRmllbGQuDQo+IA0KPiArICAgIGRlZiB2aXNpdEFjdGlvbkZs YWdzRmllbGQoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5BY3Rpb25GbGFnc0ZpZWxkQ29u dGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fVU5TVVBQT1JURUQsDQo+IGN0eC5OLmxpbmUpDQo+IA0KPiArICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVzdGlvbmhlYWRlckZsYWdzRmll bGQoKS5RSEZsYWcNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWcNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZy U3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudE51bWVyaWNUeXBlLg0KPiANCj4gKyAgICBkZWYgdmlz aXRWZnJTdGF0ZW1lbnROdW1lcmljVHlwZShzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZm clN0YXRlbWVudE51bWVyaWNUeXBlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVu dE51bWVyaWMoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZm clN0YXRlbWVudE51bWVyaWMoKS5Ob2RlDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC52ZnJTdGF0 ZW1lbnRPbmVPZigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgu dmZyU3RhdGVtZW50T25lT2YoKS5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g Y3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UC1hcnNlciN2ZnJTdGF0ZW1lbnROdW1lcmljLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnROdW1lcmljKHNlbGYsDQo+IGN0eDpWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50TnVtZXJpY0NvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIE5PYmogPSBjdHgu T3BPYmoNCj4gDQo+ICsgICAgICAgIE5PYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX0N1cnJlbnRRdWVzdGlvbiA9IE5PYmouR2V0UXVlc3Rpb24oKQ0K PiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyOg0KPiANCj4gKyAgICAgICAg ICAgIEd1aWRPYmogPSBDSWZyR3VpZCgwKQ0KPiANCj4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0 R3VpZChFREtJSV9JRlJfQklUX1ZBUlNUT1JFX0dVSUQpDQo+IA0KPiArICAgICAgICAgICAgR3Vp ZE9iai5TZXRMaW5lTm8oTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBHdWlkT2JqLlNldFNjb3Bl KDEpICMgcG9zDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAjIGNoZWNrIGRhdGEgdHlwZQ0KPiAN Cj4gKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJTdG9yZUlkICE9IEVGSV9W QVJTVE9SRV9JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVz dFZhckluZm8uSXNCaXRWYXI6DQo+IA0KPiArICAgICAgICAgICAgICAgIExGbGFncyA9IEVES0lJ X0lGUl9OVU1FUklDX1NJWkVfQklUICYNCj4gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3Rh bFNpemUNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihOT2JqLlNldEZsYWdzRm9yQml0 RmllbGQoTk9iai5HZXRGbGFncygpLExGbGFncyksIExpbmUpDQo+IA0KPiArICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgRGF0YVR5cGVTaXplLCBSZXR1cm5Db2RlID0N Cj4gZ0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoc2VsZi5fX0N1 cnJRZXN0VmFySW5mby4NCj4gVmFyVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBMaW5lLCAnTnVtZXJpYyB2YXJpZCBpcyBub3QgdGhl DQo+IHZhbGlkIGRhdGEgdHlwZScpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIERhdGFUeXBl U2l6ZSAhPSAwIGFuZCBEYXRhVHlwZVNpemUgIT0NCj4gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5W YXJUb3RhbFNpemU6DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiBMaW5lLCAnTnVtZXJpYyB2YXJpZCBk b2VzblwndCBzdXBwb3J0IGFycmF5JykNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vy cm9ySGFuZGxlcihOT2JqLlNldEZsYWdzKE5PYmouR2V0RmxhZ3MoKSwNCj4gc2VsZi5fX0N1cnJR ZXN0VmFySW5mby5WYXJUeXBlKSwgTGluZSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5f X0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxl cihOT2JqLlNldEZsYWdzRm9yQml0RmllbGQoY3R4LnZmck51bWVyaWNGbGFncygpLkhGbGFncyxj dA0KPiB4LnZmck51bWVyaWNGbGFncygpLkxGbGFncywgY3R4LnZmck51bWVyaWNGbGFncygpLklz RGlzcGxheVNwZWNpZmllZCksDQo+IGN0eC5GLmxpbmUpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihOT2JqLlNldEZsYWdzKGN0eC52ZnJO dW1lcmljRmxhZ3MoKS5IRmxhZ3MsY3R4LnZmck51bQ0KPiBlcmljRmxhZ3MoKS5MRmxhZ3MsIGN0 eC52ZnJOdW1lcmljRmxhZ3MoKS5Jc0Rpc3BsYXlTcGVjaWZpZWQpLCBjdHguRi5saW5lKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LktleSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgS2V5ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9fQXNzaWduUXVlc3Rpb25LZXkoTk9iaixLZXkpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBTaHJpbmtTaXplID0gMA0KPiANCj4gKyAgICAgICAgSXNTdXBwb3J0ZWQgPSBUcnVl DQo+IA0KPiArICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZh bHNlOg0KPiANCj4gKyAgICAgICAgICAgIFR5cGUgPSBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZh clR5cGUNCj4gDQo+ICsgICAgICAgICAgICAjIEJhc2Ugb24gdGhlIHR5cGUgdG8ga25vdyB0aGUg YWN0dWFsIHVzZWQgc2l6ZSwgc2hyaW5rIHRoZSBidWZmZXIgc2l6ZQ0KPiBhbGxvY2F0ZSBiZWZv cmUuDQo+IA0KPiArICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf ODoNCj4gDQo+ICsgICAgICAgICAgICAgICAgU2hyaW5rU2l6ZSA9IDIxDQo+IA0KPiArICAgICAg ICAgICAgZWxpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgU2hyaW5rU2l6ZSA9IDE4DQo+IA0KPiArICAgICAgICAgICAgZWxpZiBUeXBl ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgU2hy aW5rU2l6ZSA9IDEyDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBUeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV82NDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgU2hyaW5rU2l6ZSA9IDANCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBJc1N1cHBvcnRl ZCA9IEZhbHNlDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICPjgIBR dWVzdGlvbiBzdG9yZWQgaW4gYml0IGZpZWxkcyBzYXZlZCBhcyBVSU5UMzIgdHlwZSwgc28gdGhl DQo+IFNocmlua1NpemUgc2FtZSBhcyBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIuDQo+IA0KPiAr ICAgICAgICAgICAgU2hyaW5rU2l6ZSA9IDEyDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAjIyMj IyMj44CATk9iai0+U2hyaW5rQmluU2l6ZSAoU2hyaW5rU2l6ZSk7DQo+IA0KPiArICAgICAgICBp ZiBJc1N1cHBvcnRlZCA9PSBGYWxzZToNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IExpbmUsICdOdW1l cmljIHF1ZXN0aW9uIG9ubHkgc3VwcG9ydCBVSU5UOCwgVUlOVDE2LCBVSU5UMzIgYW5kIFVJTlQ2 NA0KPiBkYXRhIHR5cGUuJykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEg PSBOT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmclNldE1pbk1heFN0ZXAuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclNl dE1pbk1heFN0ZXAoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTZXRNaW5NYXhTdGVw Q29udGV4dCk6DQo+IA0KPiArICAgICAgICBJbnREZWNTdHlsZSA9IEZhbHNlDQo+IA0KPiArICAg ICAgICBpZiAoKHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIpIGFuZCAoY3R4Lk9wT2Jq LkdldE9wQ29kZSgpID09DQo+IEVGSV9JRlJfTlVNRVJJQ19PUCkgYW5kICgoY3R4Lk9wT2JqLkdl dE51bWVyaWNGbGFncygpICYNCj4gRURLSUlfSUZSX0RJU1BMQVlfQklUKSA9PSAwKSkgb3IgXA0K PiANCj4gKyAgICAgICAgICAgICgoc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBG YWxzZSkgYW5kDQo+IChjdHguT3BPYmouR2V0T3BDb2RlKCkgPT0gRUZJX0lGUl9OVU1FUklDX09Q KSBhbmQNCj4gKChjdHguT3BPYmouR2V0TnVtZXJpY0ZsYWdzKCkgJiBFRklfSUZSX0RJU1BMQVkp ID09IDApKToNCj4gDQo+ICsgICAgICAgICAgICBJbnREZWNTdHlsZSA9IFRydWUNCj4gDQo+ICsg ICAgICAgIE1pbk5lZ2F0aXZlID0gRmFsc2UNCj4gDQo+ICsgICAgICAgIE1heE5lZ2F0aXZlID0g RmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBNaW4gPSBzZWxmLl9fVHJhbnNOdW0oY3R4LkkudGV4dCkN Cj4gDQo+ICsgICAgICAgIE1heCA9IHNlbGYuX19UcmFuc051bShjdHguQS50ZXh0KQ0KPiANCj4g KyAgICAgICAgU3RlcCA9IHNlbGYuX19UcmFuc051bShjdHguUy50ZXh0KSBpZiBjdHguU3RlcCgp ICE9IE5vbmUgZWxzZSAwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTjEgIT1Ob25l Og0KPiANCj4gKyAgICAgICAgICAgIE1pbk5lZ2F0aXZlID0gVHJ1ZQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgaWYgSW50RGVjU3R5bGUgPT0gRmFsc2UgYW5kIE1pbk5lZ2F0aXZlID09IFRydWU6 DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSLA0KPiBjdHguSS5saW5lLCAnXCctXCcgY2FuXCd0IGJlIHVzZWQg d2hlbiBub3QgaW4gaW50IGRlY2ltYWwgdHlwZS4nKQ0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5f X0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gDQo+ICsgICAgICAgICAgICBpZiAoSW50RGVj U3R5bGUgPT0gRmFsc2UpIGFuZCAoTWluID4gKDEgPDwNCj4gc2VsZi5fX0N1cnJRZXN0VmFySW5m by5WYXJUb3RhbFNpemUpIC0gMSk6ICMNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0eC5JLmxpbmUs ICdCSVQgdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIDAsIGJpZ2dlciB0aGFuIDJeQml0 V2lkdGggLTEnKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIFR5cGUgPSBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUNCj4gDQo+ICsgICAgICAg ICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQ6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBpZiBJbnREZWNTdHlsZToNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBpZiBNaW5OZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgTWluID4gMHg4MDAwMDAwMDAwMDAwMDAwOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JI YW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4 LkkubGluZSwgJ0lOVDY0IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4MDAwMDAw MDAwMDAwMDAwLCBiaWcNCj4gdGhhbiAweDdGRkZGRkZGRkZGRkZGRkYnKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIE1pbiA+IDB4N0ZGRkZGRkZGRkZGRkZGRjoNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9y SGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0 eC5JLmxpbmUsICdJTlQ2NCB0eXBlIG1pbmltdW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4ODAwMDAw MDAwMDAwMDAwMCwgYmlnDQo+IHRoYW4gMHg3RkZGRkZGRkZGRkZGRkZGJykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIE1pbiA9IH5NaW4gKyAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlm IFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgaWYgSW50RGVjU3R5bGU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYg TWluTmVnYXRpdmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1pbiA+ IDB4ODAwMDAwMDA6DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiBjdHguSS5saW5lLCAnSU5UMzIgdHlw ZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwMDAwMDAwLCBiaWcgdGhhbg0KPiAweDdG RkZGRkZGJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW4gPiAweDdGRkZGRkZGOg0KPiANCj4gKw0K PiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BB UkFNRVRFUiwNCj4gY3R4LkkubGluZSwgJ0lOVDMyIHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwg dGhhbiAtMHg4MDAwMDAwMCwgYmlnIHRoYW4NCj4gMHg3RkZGRkZGRicpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBpZiBNaW5OZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBNaW4gPSB+TWluICsgMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBU eXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIGlmIEludERlY1N0eWxlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1p bk5lZ2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW4gPiAw eDgwMDA6DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiBjdHguSS5saW5lLCAnSU5UMTYgdHlwZSBtaW5p bXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwMDAsIGJpZyB0aGFuIDB4N0ZGRicpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgTWluID4gMHg3RkZGOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4LkkubGlu ZSwgJ0lOVDE2IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4MDAwLCBiaWcgdGhh biAweDdGRkYnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgTWluTmVnYXRpdmU6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTWluID0gfk1pbiArIDENCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0eWxlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGlmIE1pbk5lZ2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiBNaW4gPiAweDgwOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5k bGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4Lkku bGluZSwgJ0lOVDggdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0weDgwLCBiaWcgdGhh biAweDdGJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNaW4gPiAweDdGOg0KPiANCj4gKw0KPiBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF UiwNCj4gY3R4LkkubGluZSwgJ0lOVDggdHlwZSBtaW5pbXVtIGNhblwndCBzbWFsbCB0aGFuIC0w eDgwLCBiaWcgdGhhbiAweDdGJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1pbk5l Z2F0aXZlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1pbiA9IH5NaW4gKyAxDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTjIgIT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICBNYXhOZWdhdGl2ZSA9IFRydWUNCj4gDQo+ICsgICAgICAgIGlmIEludERlY1N0eWxlID09 IEZhbHNlIGFuZCBNYXhOZWdhdGl2ZSA9PSBUcnVlOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JI YW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4 LkEubGluZSwgJyBcJy1cJyBjYW5cJ3QgYmUgdXNlZCB3aGVuIG5vdCBpbiBpbnQgZGVjaW1hbCB0 eXBlLicpDQo+IA0KPiArICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFy Og0KPiANCj4gKyAgICAgICAgICAgIGlmIChJbnREZWNTdHlsZSA9PSBGYWxzZSkgYW5kIChNYXgg PiAoMSA8PA0KPiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZSkgLSAxKToNCj4g DQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+IGN0eC5BLmxpbmUsICdCSVQgdHlwZSBtYXhpbXVtIGNhblwndCBi ZSBiaWdnZXIgdGhhbiAyXkJpdFdpZHRoIC0xJykNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICBUeXBlID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJU eXBlDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9T SVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW50RGVjU3R5bGU6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4TmVnYXRpdmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIE1heCA+IDB4ODAwMDAwMDAwMDAwMDAwMDoNCj4gDQo+ ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJ RF9QQVJBTUVURVIsDQo+IGN0eC5BLmxpbmUsICdJTlQ2NCB0eXBlIG1pbmltdW0gY2FuXCd0IHNt YWxsIHRoYW4gLTB4ODAwMDAwMDAwMDAwMDAwMCwgYmlnDQo+IHRoYW4gMHg3RkZGRkZGRkZGRkZG RkZGJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiBNYXggPiAweDdGRkZGRkZGRkZGRkZGRkY6DQo+IA0K PiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLA0KPiBjdHguQS5saW5lLCAnSU5UNjQgdHlwZSBtaW5pbXVtIGNhblwndCBz bWFsbCB0aGFuIC0weDgwMDAwMDAwMDAwMDAwMDAsIGJpZw0KPiB0aGFuIDB4N0ZGRkZGRkZGRkZG RkZGRicpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBNYXhOZWdhdGl2ZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBNYXggPSB+TWF4ICsgMQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgaWYgTWF4IDwgTWluOiAjDQo+IA0KPiArDQo+IHNlbGYuX19F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0K PiBjdHguQS5saW5lLCAnTWF4aW11bSBjYW5cJ3QgYmUgbGVzcyB0aGFuIE1pbmltdW0nKQ0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIEludERlY1N0 eWxlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBNYXggPiAweDgwMDAwMDAwOg0KPiAN Cj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwNCj4gY3R4LkEubGluZSwgJ0lOVDMyIHR5cGUgbWluaW11bSBjYW5cJ3Qg c21hbGwgdGhhbiAtMHg4MDAwMDAwMCwgYmlnIHRoYW4NCj4gMHg3RkZGRkZGRicpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgTWF4ID4gMHg3RkZGRkZGRjoNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0eC5B LmxpbmUsICdJTlQzMiB0eXBlIG1pbmltdW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4ODAwMDAwMDAs IGJpZyB0aGFuDQo+IDB4N0ZGRkZGRkYnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYg TWF4TmVnYXRpdmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgTWF4ID0gfk1heCAr IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1heCA8IE1pbjogIw0K PiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9J TlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4LkEubGluZSwgJ01heGltdW0gY2FuXCd0IGJlIGxlc3Mg dGhhbiBNaW5pbXVtJykNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAg aWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBpZiBJbnREZWNTdHlsZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBp ZiBNYXhOZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4 ID4gMHg4MDAwOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4LkEubGluZSwgJ0lOVDE2IHR5cGUg bWluaW11bSBjYW5cJ3Qgc21hbGwgdGhhbiAtMHg4MDAwLCBiaWcgdGhhbiAweDdGRkYnKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIE1heCA+IDB4N0ZGRjoNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0eC5B LmxpbmUsICdJTlQxNiB0eXBlIG1pbmltdW0gY2FuXCd0IHNtYWxsIHRoYW4gLTB4ODAwMCwgYmln IHRoYW4gMHg3RkZGJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIE1heE5lZ2F0aXZl Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIE1heCA9IH5NYXggKyAxDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBNYXggPCBNaW46ICMNCj4gDQo+ICsNCj4g c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsDQo+IGN0eC5BLmxpbmUsICdNYXhpbXVtIGNhblwndCBiZSBsZXNzIHRoYW4gTWluaW11 bScpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFR5cGUgPT0gRUZJX0lGUl9U WVBFX05VTV9TSVpFXzg6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBJbnREZWNTdHls ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBNYXhOZWdhdGl2ZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4ID4gMHg4MDoNCj4gDQo+ICsNCj4g c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsDQo+IGN0eC5BLmxpbmUsICdJTlQ4IHR5cGUgbWluaW11bSBjYW5cJ3Qgc21hbGwgdGhh biAtMHg4MCwgYmlnIHRoYW4gMHg3RicpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTWF4ID4gMHg3RjoN Cj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f SU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0eC5BLmxpbmUsICdJTlQ4IHR5cGUgbWluaW11bSBjYW5c J3Qgc21hbGwgdGhhbiAtMHg4MCwgYmlnIHRoYW4gMHg3RicpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBpZiBNYXhOZWdhdGl2ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBN YXggPSB+TWF4ICsgMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgTWF4 IDwgTWluOiAjDQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiBjdHguQS5saW5lLCAnTWF4aW11bSBjYW5c J3QgYmUgbGVzcyB0aGFuIE1pbmltdW0nKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgc2Vs Zi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gDQo+ICsgICAgICAgICAgICBjdHguT3BP YmouU2V0TWluTWF4U3RlcERhdGEoTWluLCBNYXgsIFN0ZXAsDQo+IEVGSV9JRlJfVFlQRV9OVU1f U0laRV8zMikNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgVHlwZSA9 IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFR5 cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgICAgICBj dHguT3BPYmouU2V0TWluTWF4U3RlcERhdGEoTWluLCBNYXgsIFN0ZXAsDQo+IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV82NCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4Lk9wT2JqLlNldE1pbk1h eFN0ZXBEYXRhKE1pbiwgTWF4LCBTdGVwLA0KPiBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzIpDQo+ IA0KPiArICAgICAgICAgICAgaWYgVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTY6DQo+ IA0KPiArICAgICAgICAgICAgICAgIGN0eC5PcE9iai5TZXRNaW5NYXhTdGVwRGF0YShNaW4sIE1h eCwgU3RlcCwNCj4gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2KQ0KPiANCj4gKyAgICAgICAgICAg IGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+IA0KPiArICAgICAgICAgICAg ICAgIGN0eC5PcE9iai5TZXRNaW5NYXhTdGVwRGF0YShNaW4sIE1heCwgU3RlcCwNCj4gRUZJX0lG Ul9UWVBFX05VTV9TSVpFXzgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk9w T2JqDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJOdW1lcmljRmxhZ3MuDQo+IA0KPiArICAgIGRl ZiB2aXNpdFZmck51bWVyaWNGbGFncyhzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmck51 bWVyaWNGbGFnc0NvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgY3R4LkxGbGFncyA9 IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSAmIEVGSV9JRlJfTlVNRVJJQ19TSVpFDQo+ IA0KPiArICAgICAgICBWYXJTdG9yZVR5cGUgPQ0KPiBnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0 b3JlVHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQpDQo+IA0KPiArICAgICAg ICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIElzU2V0VHlwZSA9IEZhbHNl DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4Lm51bWVyaWNGbGFnc0ZpZWxkKCk6DQo+ IA0KPiArICAgICAgICAgICAgY3R4LkhGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkhGbGFnDQo+IA0K PiArICAgICAgICAgICAgY3R4LklzRGlzcGxheVNwZWNpZmllZCA9IEZsYWdzRmllbGRDdHguSXNE aXNwbGF5U3BlY2lmaWVkDQo+IA0KPiArICAgICAgICAgICAgSXNTZXRUeXBlIHw9ICBGbGFnc0Zp ZWxkQ3R4LklzU2V0VHlwZQ0KPiANCj4gKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguTnVt ZXJpY1NpemVPbmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9f Q3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkg fA0KPiBFRklfSUZSX05VTUVSSUNfU0laRV8xDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg aWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZVR3bygpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVG SV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzINCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplRm91cigpICE9 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8u SXNCaXRWYXIgPT0gRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdz ID0gIChjdHguTEZsYWdzICYgfkVGSV9JRlJfTlVNRVJJQ19TSVpFKSB8DQo+IEVGSV9JRlJfTlVN RVJJQ19TSVpFXzQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4 Lk51bWVyaWNTaXplRWlnaHQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBz ZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNf U0laRSkgfA0KPiBFRklfSUZSX05VTUVSSUNfU0laRV84DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5EaXNQbGF5SW50RGVjKCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3Mg JiB+RUZJX0lGUl9ESVNQTEFZKSB8DQo+IEVGSV9JRlJfRElTUExBWV9JTlRfREVDDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZs YWdzID0gIChjdHguTEZsYWdzICYgfkVES0lJX0lGUl9ESVNQTEFZX0JJVCkgfA0KPiBFREtJSV9J RlJfRElTUExBWV9JTlRfREVDX0JJVA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIEZs YWdzRmllbGRDdHguRGlzUGxheVVJbnRIZXgoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZS X0RJU1BMQVkpIHwNCj4gRUZJX0lGUl9ESVNQTEFZX1VJTlRfREVDDQo+IA0KPiArICAgICAgICAg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChj dHguTEZsYWdzICYgfkVES0lJX0lGUl9ESVNQTEFZX0JJVCkgfA0KPiBFREtJSV9JRlJfRElTUExB WV9VSU5UX0RFQ19CSVQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxk Q3R4LkRpc1BsYXlVSW50SGV4KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYg c2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3MgJiB+RUZJX0lGUl9ESVNQTEFZ KSB8DQo+IEVGSV9JRlJfRElTUExBWV9VSU5UX0hFWA0KPiANCj4gKyAgICAgICAgICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFn cyAmIH5FREtJSV9JRlJfRElTUExBWV9CSVQpIHwNCj4gRURLSUlfSUZSX0RJU1BMQVlfVUlOVF9I RVhfQklUDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZv LklzQml0VmFyID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVz dFZhckluZm8uVmFyU3RvcmVJZCAhPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgaWYgVmFyU3RvcmVUeXBlID09DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQ RS5FRklfVkZSX1ZBUlNUT1JFX0JVRkZFUiBvciBWYXJTdG9yZVR5cGUgPT0NCj4gRUZJX1ZGUl9W QVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfRUZJOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBlICE9IChjdHguTEZsYWdzICYN Cj4gRUZJX0lGUl9OVU1FUklDX1NJWkUpOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gTGluZSwgJ051 bWVyaWMgRmxhZyBpcyBub3Qgc2FtZSB0byBOdW1lcmljIFZhckRhdGEgdHlwZScpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAjIHVwZGF0 ZSBkYXRhIHR5cGUgZm9yIG5hbWUvdmFsdWUgc3RvcmUNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9IGN0eC5MRmxhZ3MgJg0KPiBFRklf SUZSX05VTUVSSUNfU0laRQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgU2l6ZSwgXyA9DQo+ IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZVNpemVCeURhdGFUeXBlKHNlbGYuX19DdXJy UWVzdFZhckluZm8uDQo+IFZhclR5cGUpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxm Ll9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZSA9IFNpemUNCj4gDQo+ICsgICAgICAgICAg ICBlbGlmIElzU2V0VHlwZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJRZXN0 VmFySW5mby5WYXJUeXBlID0gY3R4LkxGbGFncyAmDQo+IEVGSV9JRlJfTlVNRVJJQ19TSVpFDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyU3Rv cmVJZCAhPSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRA0KPiBhbmQgc2VsZi5fX0N1cnJRZXN0VmFy SW5mby5Jc0JpdFZhcjoNCj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWdzICY9IEVES0lJX0lG Ul9ESVNQTEFZX0JJVA0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRURLSUlfSUZS X05VTUVSSUNfU0laRV9CSVQgJg0KPiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6 ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI251bWVyaWNGbGFnc0ZpZWxkLg0KPiANCj4gKyAgICBkZWYg dmlzaXROdW1lcmljRmxhZ3NGaWVsZChzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLk51bWVy aWNGbGFnc0ZpZWxkQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5s aW5lDQo+IA0KPiArICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBzZWxmLl9fVHJhbnNOdW0oY3R4Lk4udGV4dCkgIT0gMDoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f VU5TVVBQT1JURUQsDQo+IExpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTnVt ZXJpY1NpemVPbmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJy UWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0 eC5Jc1NldFR5cGUgPSBUcnVlDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsNCj4g c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsDQo+IExpbmUsICdDYW4gbm90IHNwZWNpZnkgdGhlIHNpemUgb2YgdGhlIG51bWVyaWMg dmFsdWUgZm9yIEJJVCBmaWVsZCcpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTnVt ZXJpY1NpemVUd28oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJy UWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0 eC5Jc1NldFR5cGUgPSBUcnVlDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsNCj4g c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsDQo+IExpbmUsICdDYW4gbm90IHNwZWNpZnkgdGhlIHNpemUgb2YgdGhlIG51bWVyaWMg dmFsdWUgZm9yIEJJVCBmaWVsZCcpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTnVt ZXJpY1NpemVGb3VyKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLl9fQ3Vy clFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBj dHguSXNTZXRUeXBlID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArDQo+ IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSLA0KPiBMaW5lLCAnQ2FuIG5vdCBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBudW1lcmlj IHZhbHVlIGZvciBCSVQgZmllbGQnKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51 bWVyaWNTaXplRWlnaHQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19D dXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAg IGN0eC5Jc1NldFR5cGUgPSBUcnVlDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsN Cj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9Q QVJBTUVURVIsDQo+IExpbmUsICdDYW4gbm90IHNwZWNpZnkgdGhlIHNpemUgb2YgdGhlIG51bWVy aWMgdmFsdWUgZm9yIEJJVCBmaWVsZCcpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHgu RGlzUGxheUludERlYygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LklzRGlzcGxh eVNwZWNpZmllZCA9IFRydWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5EaXNQbGF5 VUludEhleCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LklzRGlzcGxheVNwZWNp ZmllZCA9IFRydWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5EaXNQbGF5VUludEhl eCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LklzRGlzcGxheVNwZWNpZmllZCA9 IFRydWUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5xdWVzdGlvbmhlYWRlckZsYWdz RmllbGQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5IRmxhZyA9IGN0eC5xdWVz dGlvbmhlYWRlckZsYWdzRmllbGQoKS5RSEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJl dHVybiBjdHguSEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudE9uZU9mLg0K PiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRPbmVPZihzZWxmLA0KPiBjdHg6VmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudE9uZU9mQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBPT2JqID0gY3R4Lk9wT2JqDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0Lmxp bmUNCj4gDQo+ICsgICAgICAgIE9PYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAgICBz ZWxmLl9fQ3VycmVudFF1ZXN0aW9uID0gT09iai5HZXRRdWVzdGlvbigpDQo+IA0KPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5fX0N1cnJR ZXN0VmFySW5mby5Jc0JpdFZhcjoNCj4gDQo+ICsgICAgICAgICAgICBHdWlkT2JqID0gQ0lmckd1 aWQoMCkNCj4gDQo+ICsgICAgICAgICAgICBHdWlkT2JqLlNldEd1aWQoRURLSUlfSUZSX0JJVF9W QVJTVE9SRV9HVUlEKQ0KPiANCj4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0TGluZU5vKGN0eC5z dGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0U2NvcGUoMSkgIyBwb3MN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgY2hlY2sgZGF0YSB0eXBlDQo+IA0KPiArICAgICAg ICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lE X0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5J c0JpdFZhcjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgTEZsYWdzID0gRURLSUlfSUZSX05VTUVS SUNfU0laRV9CSVQgJg0KPiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclRvdGFsU2l6ZQ0KPiAN Cj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKE9PYmouU2V0RmxhZ3NGb3JCaXRGaWVsZChPT2Jq LkdldEZsYWdzKCksTEZsYWdzKSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBEYXRhVHlwZVNpemUsIFJldHVybkNvZGUgPQ0KPiBnQ1ZmclZh ckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJ bmZvLg0KPiBWYXJUeXBlKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5k bGVyKFJldHVybkNvZGUsIExpbmUsICdPbmVPZiB2YXJpZCBpcyBub3QgdGhlIHZhbGlkDQo+IGRh dGEgdHlwZScpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIERhdGFUeXBlU2l6ZSAhPSAwIGFu ZCBEYXRhVHlwZVNpemUgIT0NCj4gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemU6 DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0lOVkFMSURfUEFSQU1FVEVSLA0KPiBMaW5lLCAnT25lT2YgdmFyaWQgZG9lc25cJ3Qgc3VwcG9y dCBhcnJheScpDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoT09i ai5TZXRGbGFncyhPT2JqLkdldEZsYWdzKCksDQo+IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFy VHlwZSksIExpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRW YXI6DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoT09iai5TZXRGbGFnc0ZvckJpdEZp ZWxkKGN0eC52ZnJPbmVvZkZsYWdzRmllbGQoKS5IRmxhZw0KPiBzLGN0eC52ZnJPbmVvZkZsYWdz RmllbGQoKS5MRmxhZ3MpLCBjdHguRi5saW5lKQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+ IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoT09iai5TZXRGbGFncyhj dHgudmZyT25lb2ZGbGFnc0ZpZWxkKCkuSEZsYWdzLA0KPiBjdHgudmZyT25lb2ZGbGFnc0ZpZWxk KCkuTEZsYWdzKSwgY3R4LkYubGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFNocmlua1Np emUgPSAwDQo+IA0KPiArICAgICAgICBJc1N1cHBvcnRlZCA9IFRydWUNCj4gDQo+ICsgICAgICAg IGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+IA0KPiArICAg ICAgICAgICAgVHlwZSA9IHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZQ0KPiANCj4gKyAg ICAgICAgICAgICMgQmFzZSBvbiB0aGUgdHlwZSB0byBrbm93IHRoZSBhY3R1YWwgdXNlZCBzaXpl LCBzaHJpbmsgdGhlIGJ1ZmZlciBzaXplDQo+IGFsbG9jYXRlIGJlZm9yZS4NCj4gDQo+ICsgICAg ICAgICAgICBpZiBUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV84Og0KPiANCj4gKyAgICAg ICAgICAgICAgICBTaHJpbmtTaXplID0gMjENCj4gDQo+ICsgICAgICAgICAgICBlbGlmIFR5cGUg PT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiANCj4gKyAgICAgICAgICAgICAgICBTaHJp bmtTaXplID0gMTgNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBTaHJpbmtTaXplID0gMTINCj4g DQo+ICsgICAgICAgICAgICBlbGlmIFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0K PiANCj4gKyAgICAgICAgICAgICAgICBTaHJpbmtTaXplID0gMCAjDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgSXNTdXBwb3J0ZWQgPSBGYWxzZQ0KPiAN Cj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAj44CAUXVlc3Rpb24gc3RvcmVk IGluIGJpdCBmaWVsZHMgc2F2ZWQgYXMgVUlOVDMyIHR5cGUsIHNvIHRoZQ0KPiBTaHJpbmtTaXpl IHNhbWUgYXMgRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyLg0KPiANCj4gKyAgICAgICAgICAgIFNo cmlua1NpemUgPSAxMg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgIyBPT2JqLlNocmlua0JpblNp emUoU2hyaW5rU2l6ZSkNCj4gDQo+ICsgICAgICAgIGlmIElzU3VwcG9ydGVkID09IEZhbHNlOg0K PiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9J TlZBTElEX1BBUkFNRVRFUiwNCj4gTGluZSwgJ09uZU9mIHF1ZXN0aW9uIG9ubHkgc3VwcG9ydCBV SU5UOCwgVUlOVDE2LCBVSU5UMzIgYW5kIFVJTlQ2NCBkYXRhDQo+IHR5cGUuJykNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBPT2JqDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Zmck9uZW9mRmxhZ3NG aWVsZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyT25lb2ZGbGFnc0ZpZWxkKHNlbGYsDQo+IGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyT25lb2ZGbGFnc0ZpZWxkQ29udGV4dCk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBjdHguTEZsYWdzID0gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUeXBl ICYgRUZJX0lGUl9OVU1FUklDX1NJWkUNCj4gDQo+ICsgICAgICAgIFZhclN0b3JlVHlwZSA9DQo+ IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVUeXBlKHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyU3RvcmVJZCkNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4g KyAgICAgICAgSXNTZXRUeXBlID0gRmFsc2UNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBj dHgubnVtZXJpY0ZsYWdzRmllbGQoKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguSEZsYWdzIHw9 IEZsYWdzRmllbGRDdHguSEZsYWcNCj4gDQo+ICsgICAgICAgICAgICBjdHguSXNEaXNwbGF5U3Bl Y2lmaWVkID0gRmxhZ3NGaWVsZEN0eC5Jc0Rpc3BsYXlTcGVjaWZpZWQNCj4gDQo+ICsgICAgICAg ICAgICBJc1NldFR5cGUgfD0gRmxhZ3NGaWVsZEN0eC5Jc1NldFR5cGUNCj4gDQo+ICsgICAgICAg ICAgICBpZiBGbGFnc0ZpZWxkQ3R4Lk51bWVyaWNTaXplT25lKCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3Mg JiB+RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwNCj4gRUZJX0lGUl9OVU1FUklDX1NJWkVfMQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguTnVtZXJpY1NpemVUd28o KSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJ bmZvLklzQml0VmFyID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgY3R4LkxG bGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVSSUNfU0laRSkgfA0KPiBFRklfSUZS X05VTUVSSUNfU0laRV8yDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgaWYgRmxhZ3NGaWVs ZEN0eC5OdW1lcmljU2l6ZUZvdXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLklzQml0VmFyID09IEZhbHNlOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FRklfSUZSX05VTUVS SUNfU0laRSkgfA0KPiBFRklfSUZSX05VTUVSSUNfU0laRV80DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5OdW1lcmljU2l6ZUVpZ2h0KCkgIT0gTm9uZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9 PSBGYWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3MgPSAgKGN0eC5M RmxhZ3MgJiB+RUZJX0lGUl9OVU1FUklDX1NJWkUpIHwNCj4gRUZJX0lGUl9OVU1FUklDX1NJWkVf OA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIEZsYWdzRmllbGRDdHguRGlzUGxheUlu dERlYygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVz dFZhckluZm8uSXNCaXRWYXIgPT0gRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBj dHguTEZsYWdzID0gIChjdHguTEZsYWdzICYgfkVGSV9JRlJfRElTUExBWSkgfA0KPiBFRklfSUZS X0RJU1BMQVlfSU5UX0RFQw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FREtJSV9JRlJf RElTUExBWV9CSVQpIHwNCj4gRURLSUlfSUZSX0RJU1BMQVlfSU5UX0RFQ19CSVQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBpZiBGbGFnc0ZpZWxkQ3R4LkRpc1BsYXlVSW50SGV4KCkgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5J c0JpdFZhciA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGN0eC5MRmxhZ3Mg PSAgKGN0eC5MRmxhZ3MgJiB+RUZJX0lGUl9ESVNQTEFZKSB8DQo+IEVGSV9JRlJfRElTUExBWV9V SU5UX0RFQw0KPiANCj4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgY3R4LkxGbGFncyA9ICAoY3R4LkxGbGFncyAmIH5FREtJSV9JRlJfRElTUExBWV9C SVQpIHwNCj4gRURLSUlfSUZSX0RJU1BMQVlfVUlOVF9ERUNfQklUDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgaWYgRmxhZ3NGaWVsZEN0eC5EaXNQbGF5VUludEhleCgpICE9IE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8uSXNCaXRWYXIg PT0gRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBjdHguTEZsYWdzID0gIChjdHgu TEZsYWdzICYgfkVGSV9JRlJfRElTUExBWSkgfA0KPiBFRklfSUZSX0RJU1BMQVlfVUlOVF9IRVgN Cj4gDQo+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IGN0eC5MRmxhZ3MgPSAgKGN0eC5MRmxhZ3MgJiB+RURLSUlfSUZSX0RJU1BMQVlfQklUKSB8DQo+ IEVES0lJX0lGUl9ESVNQTEFZX1VJTlRfSEVYX0JJVA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg aWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5Jc0JpdFZhciA9PSBGYWxzZToNCj4gDQo+ICsgICAg ICAgICAgICBpZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNU T1JFX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFZhclN0b3JlVHlwZSA9 PQ0KPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIgb3IgVmFy U3RvcmVUeXBlID09DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZSX1ZBUlNUT1JFX0VG SToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyVHlwZSAhPSAoY3R4LkxGbGFncyAmDQo+IEVGSV9JRlJfTlVNRVJJQ19TSVpFKToNCj4gDQo+ ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJ RF9QQVJBTUVURVIsDQo+IExpbmUsICdOdW1lcmljIEZsYWcgaXMgbm90IHNhbWUgdG8gTnVtZXJp YyBWYXJEYXRhIHR5cGUnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgIyB1cGRhdGUgZGF0YSB0eXBlIGZvciBuYW1lL3ZhbHVlIHN0b3Jl DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5 cGUgPSBjdHguTEZsYWdzICYNCj4gRUZJX0lGUl9OVU1FUklDX1NJWkUNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIFNpemUsIF8gPQ0KPiBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVT aXplQnlEYXRhVHlwZShzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLg0KPiBWYXJUeXBlKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemUg PSBTaXplDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBJc1NldFR5cGU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9IGN0eC5MRmxhZ3MgJg0K PiBFRklfSUZSX05VTUVSSUNfU0laRQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBzZWxm Ll9fQ3VyclFlc3RWYXJJbmZvLlZhclN0b3JlSWQgIT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6 DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFncyAmPSBFREtJSV9JRlJfRElTUExBWV9CSVQN Cj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWdzIHw9IEVES0lJX0lGUl9OVU1FUklDX1NJWkVf QklUICYNCj4gc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJUb3RhbFNpemUNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciN2ZnJTdGF0ZW1lbnRTdHJpbmdUeXBlLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJT dGF0ZW1lbnRTdHJpbmdUeXBlKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVt ZW50U3RyaW5nVHlwZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRQYXNzd29y ZCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVt ZW50UGFzc3dvcmQoKS5Ob2RlDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC52ZnJTdGF0ZW1lbnRT dHJpbmcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0 YXRlbWVudFN0cmluZygpLk5vZGUNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgX0dFVF9DVVJSUUVTVF9BUlJBWV9TSVpFKHNlbGYpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgU2l6ZSA9IDENCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuX19D dXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gDQo+ ICsgICAgICAgICAgICBTaXplID0gMQ0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0 VmFySW5mby5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gDQo+ICsgICAg ICAgICAgICBTaXplID0gMg0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5m by5WYXJUeXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgICAg ICBTaXplID0gNA0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5fX0N1cnJRZXN0VmFySW5mby5WYXJU eXBlID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV82NDoNCj4gDQo+ICsgICAgICAgICAgICBTaXpl ID0gOA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGludChzZWxmLl9fQ3VyclFlc3RW YXJJbmZvLlZhclRvdGFsU2l6ZSAvIFNpemUpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0 ZW1lbnRTdHJpbmcuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudFN0cmluZyhzZWxm LA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN0cmluZ0NvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5fX0lzU3RyaW5nT3AgPSBUcnVlDQo+IA0KPiArICAg ICAgICBTT2JqID0gY3R4Lk9wT2JqDQo+IA0KPiArICAgICAgICBTT2JqLlNldExpbmVObyhjdHgu c3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19DdXJyZW50UXVlc3Rpb24gPSBTT2Jq LkdldFF1ZXN0aW9uKCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgIEhGbGFncyA9IGN0eC52ZnJTdHJpbmdGbGFnc0ZpZWxkKCkuSEZs YWdzDQo+IA0KPiArICAgICAgICAgICAgTEZsYWdzID0gY3R4LnZmclN0cmluZ0ZsYWdzRmllbGQo KS5MRmxhZ3MNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFNPYmouU2V0 RmxhZ3MoSEZsYWdzLCBMRmxhZ3MpLCBjdHguRi5saW5lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgY3R4LktleSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgS2V5ID0gc2VsZi5f X1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Fzc2ln blF1ZXN0aW9uS2V5KFNPYmosIEtleSkNCj4gDQo+ICsgICAgICAgICAgICBTdHJpbmdNaW5TaXpl ID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMSkpDQo+IA0KPiArICAgICAgICAgICAgU3Ry aW5nTWF4U2l6ZSA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDIpKQ0KPiANCj4gKyAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBTdHJpbmdNaW5TaXplID0gc2VsZi5fX1RyYW5z TnVtKGN0eC5OdW1iZXIoMCkpDQo+IA0KPiArICAgICAgICAgICAgU3RyaW5nTWF4U2l6ZSA9IHNl bGYuX19UcmFuc051bShjdHguTnVtYmVyKDEpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVmFy QXJyYXlTaXplID0gc2VsZi5fR0VUX0NVUlJRRVNUX0FSUkFZX1NJWkUoKQ0KPiANCj4gKyAgICAg ICAgaWYgU3RyaW5nTWluU2l6ZSA+IDB4RkY6DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRs ZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVSLA0KPiBjdHguTWlu LmxpbmUsICJTdHJpbmcgTWluU2l6ZSB0YWtlcyBvbmx5IG9uZSBieXRlLCB3aGljaCBjYW4ndCBi ZSBsYXJnZXIgdGhhbg0KPiAweEZGLiIpDQo+IA0KPiArICAgICAgICBpZiBWYXJBcnJheVNpemUg IT0gMCBhbmQgU3RyaW5nTWluU2l6ZSA+IFZhckFycmF5U2l6ZToNCj4gDQo+ICsNCj4gc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIs DQo+IGN0eC5NaW4ubGluZSwgIlN0cmluZyBNaW5TaXplIGNhbid0IGJlIGxhcmdlciB0aGFuIHRo ZSBtYXggbnVtYmVyIG9mDQo+IGVsZW1lbnRzIGluIHN0cmluZyBhcnJheS4iKQ0KPiANCj4gKyAg ICAgICAgU09iai5TZXRNaW5TaXplKFN0cmluZ01pblNpemUpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBpZiBTdHJpbmdNYXhTaXplID4gMHhGRjoNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0eC5N YXgubGluZSwgIlN0cmluZyBNYXhTaXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0 IGJlIGxhcmdlciB0aGFuDQo+IDB4RkYuIikNCj4gDQo+ICsgICAgICAgIGVsaWYgVmFyQXJyYXlT aXplICE9IDAgYW5kIFN0cmluZ01heFNpemUgPiBWYXJBcnJheVNpemU6DQo+IA0KPiArDQo+IHNl bGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1F VEVSLA0KPiBjdHguTWF4LmxpbmUsICJTdHJpbmcgTWF4U2l6ZSBjYW4ndCBiZSBsYXJnZXIgdGhh biB0aGUgbWF4IG51bWJlciBvZg0KPiBlbGVtZW50cyBpbiBzdHJpbmcgYXJyYXkuIikNCj4gDQo+ ICsgICAgICAgIGVsaWYgU3RyaW5nTWF4U2l6ZSA8IFN0cmluZ01pblNpemU6DQo+IA0KPiArDQo+ IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSLA0KPiBjdHguTWF4LmxpbmUsICJTdHJpbmcgTWF4U2l6ZSBjYW4ndCBiZSBsZXNzIHRo YW4gU3RyaW5nIE1pblNpemUuIikNCj4gDQo+ICsgICAgICAgIFNPYmouU2V0TWF4U2l6ZShTdHJp bmdNYXhTaXplKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFNPYmoN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Jc1N0cmluZ09wID0gRmFsc2UNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyU3RyaW5nRmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RyaW5nRmxhZ3NG aWVsZChzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0cmluZ0ZsYWdzRmllbGRDb250 ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ IA0KPiArICAgICAgICBmb3IgRmxhZ3NGaWVsZEN0eCBpbiBjdHguc3RyaW5nRmxhZ3NGaWVsZCgp Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5IRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0K PiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5MRmxhZw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5IRmxhZ3MsIGN0eC5MRmxhZ3MNCj4gDQo+ ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3N0cmluZ0ZsYWdzRmllbGQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFN0 cmluZ0ZsYWdzRmllbGQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5TdHJpbmdGbGFnc0ZpZWxk Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgaWYgc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCj4g DQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fVU5TVVBQT1JURUQsDQo+IGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAg ZWxpZiBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkgIT0gTm9uZToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICBjdHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxk KCkuUUhGbGFnDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5M RmxhZyA9IDB4MDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiAgY3R4LkhGbGFnLCBj dHguTEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFBhc3N3b3JkLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRQYXNzd29yZChzZWxmLA0KPiBjdHg6VmZyU3lu dGF4UGFyc2VyLlZmclN0YXRlbWVudFBhc3N3b3JkQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBQT2JqID0gY3R4Lk9wT2JqDQo+IA0KPiArICAgICAgICBQT2JqLlNldExpbmVObyhj dHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19DdXJyZW50UXVlc3Rpb24gPSBQ T2JqLkdldFF1ZXN0aW9uKCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGls ZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguS2V5KCkgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBLZXkgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fQXNzaWduUXVlc3Rpb25LZXkoUE9iaiwgS2V5KQ0K PiANCj4gKyAgICAgICAgICAgIFBhc3NXb3JkTWluU2l6ZSA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKDEpKQ0KPiANCj4gKyAgICAgICAgICAgIFBhc3N3b3JkTWF4U2l6ZSA9IHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKDIpKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICBQYXNzV29yZE1pblNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigwKSkN Cj4gDQo+ICsgICAgICAgICAgICBQYXNzd29yZE1heFNpemUgPSBzZWxmLl9fVHJhbnNOdW0oY3R4 Lk51bWJlcigxKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgSEZsYWdzID0gY3R4LnZmclBhc3N3b3JkRmxhZ3NGaWVs ZCgpLkhGbGFncw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19FcnJvckhhbmRsZXIoUE9iai5T ZXRGbGFncyhIRmxhZ3MpLCBjdHguRi5saW5lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVmFy QXJyYXlTaXplID0gc2VsZi5fR0VUX0NVUlJRRVNUX0FSUkFZX1NJWkUoKQ0KPiANCj4gKyAgICAg ICAgaWYgUGFzc1dvcmRNaW5TaXplID4gMHhGRjoNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0eC5N aW4ubGluZSwgIlN0cmluZyBNaW5TaXplIHRha2VzIG9ubHkgb25lIGJ5dGUsIHdoaWNoIGNhbid0 IGJlIGxhcmdlciB0aGFuDQo+IDB4RkYuIikNCj4gDQo+ICsgICAgICAgIGlmIFZhckFycmF5U2l6 ZSAhPSAwIGFuZCBQYXNzV29yZE1pblNpemUgPiBWYXJBcnJheVNpemU6DQo+IA0KPiArDQo+IHNl bGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1F VEVSLA0KPiBjdHguTWluLmxpbmUsICJTdHJpbmcgTWluU2l6ZSBjYW4ndCBiZSBsYXJnZXIgdGhh biB0aGUgbWF4IG51bWJlciBvZg0KPiBlbGVtZW50cyBpbiBzdHJpbmcgYXJyYXkuIikNCj4gDQo+ ICsgICAgICAgIFBPYmouU2V0TWluU2l6ZShQYXNzV29yZE1pblNpemUpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBpZiBQYXNzd29yZE1heFNpemUgPiAweEZGOg0KPiANCj4gKw0KPiBzZWxmLl9f RXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwN Cj4gY3R4Lk1heC5saW5lLCAiU3RyaW5nIE1heFNpemUgdGFrZXMgb25seSBvbmUgYnl0ZSwgd2hp Y2ggY2FuJ3QgYmUgbGFyZ2VyIHRoYW4NCj4gMHhGRi4iKQ0KPiANCj4gKyAgICAgICAgZWxpZiBW YXJBcnJheVNpemUgIT0gMCBhbmQgUGFzc3dvcmRNYXhTaXplID4gVmFyQXJyYXlTaXplOg0KPiAN Cj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZB TElEX1BBUkFNRVRFUiwNCj4gY3R4Lk1heC5saW5lLCAiU3RyaW5nIE1heFNpemUgY2FuJ3QgYmUg bGFyZ2VyIHRoYW4gdGhlIG1heCBudW1iZXIgb2YNCj4gZWxlbWVudHMgaW4gc3RyaW5nIGFycmF5 LiIpDQo+IA0KPiArICAgICAgICBlbGlmIFBhc3N3b3JkTWF4U2l6ZSA8IFBhc3NXb3JkTWluU2l6 ZToNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0eC5NYXgubGluZSwgIlN0cmluZyBNYXhTaXplIGNh bid0IGJlIGxlc3MgdGhhbiBTdHJpbmcgTWluU2l6ZS4iKQ0KPiANCj4gKyAgICAgICAgUE9iai5T ZXRNYXhTaXplKFBhc3N3b3JkTWF4U2l6ZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5O b2RlLkRhdGEgPSBQT2JqDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclBhc3N3b3JkRmxhZ3NGaWVsZC4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0VmZyUGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJz ZXIuVmZyUGFzc3dvcmRGbGFnc0ZpZWxkQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgZm9yIEZsYWdzRmllbGRD dHggaW4gY3R4LnBhc3N3b3JkRmxhZ3NGaWVsZCgpOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5I RmxhZ3MgfD0gRmxhZ3NGaWVsZEN0eC5IRmxhZw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGN0eC5IRmxhZ3MNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBh cnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Bhc3N3b3JkRmxhZ3NGaWVsZC4N Cj4gDQo+ICsgICAgZGVmIHZpc2l0UGFzc3dvcmRGbGFnc0ZpZWxkKHNlbGYsDQo+IGN0eDpWZnJT eW50YXhQYXJzZXIuUGFzc3dvcmRGbGFnc0ZpZWxkQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg aWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5fX1Ry YW5zTnVtKGN0eC5OdW1iZXIoKSkgIT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5f X0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+IGN0 eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBj dHguSEZsYWcgPSBjdHgucXVlc3Rpb25oZWFkZXJGbGFnc0ZpZWxkKCkuUUhGbGFnDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkhGbGFnDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNl ciN2ZnJTdGF0ZW1lbnRPcmRlcmVkTGlzdC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVt ZW50T3JkZXJlZExpc3Qoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRP cmRlcmVkTGlzdENvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgT0xPYmogPSBjdHgu T3BPYmoNCj4gDQo+ICsgICAgICAgIE9MT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4g DQo+ICsgICAgICAgIHNlbGYuX19DdXJyZW50UXVlc3Rpb24gPSBPTE9iai5HZXRRdWVzdGlvbigp DQo+IA0KPiArICAgICAgICBzZWxmLl9fSXNPcmRlcmVkTGlzdCA9IFRydWUNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBWYXJBcnJheVNpemUgPSBzZWxmLl9HRVRfQ1VSUlFFU1RfQVJSQVlfU0laRSgpDQo+IA0K PiArICAgICAgICBpZiBWYXJBcnJheVNpemUgPiAweEZGOg0KPiANCj4gKyAgICAgICAgICAgIE9M T2JqLlNldE1heENvbnRhaW5lcnMoMHhGRikNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgT0xPYmouU2V0TWF4Q29udGFpbmVycyhWYXJBcnJheVNpemUpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBpZiBjdHguTWF4Q29udGFpbmVycygpICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgTWF4Q29udGFpbmVycyA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkp DQo+IA0KPiArICAgICAgICAgICAgaWYgTWF4Q29udGFpbmVycyA+IDB4RkY6DQo+IA0KPiArDQo+ IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFS QU1FVEVSLA0KPiBjdHguTS5saW5lLCAiT3JkZXJlZExpc3QgTWF4Q29udGFpbmVycyB0YWtlcyBv bmx5IG9uZSBieXRlLCB3aGljaCBjYW4ndCBiZQ0KPiBsYXJnZXIgdGhhbiAweEZGLiIpDQo+IA0K PiArICAgICAgICAgICAgZWxpZiBWYXJBcnJheVNpemUgIT0gMCBhbmQgTWF4Q29udGFpbmVycyA+ IFZhckFycmF5U2l6ZToNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVIsDQo+IGN0eC5NLmxpbmUsIk9yZGVyZWRM aXN0IE1heENvbnRhaW5lcnMgY2FuJ3QgYmUgbGFyZ2VyIHRoYW4gdGhlIG1heCBudW1iZXINCj4g b2YgZWxlbWVudHMgaW4gYXJyYXkuIikNCj4gDQo+ICsgICAgICAgICAgICBPTE9iai5TZXRNYXhD b250YWluZXJzKE1heENvbnRhaW5lcnMpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHgu RkxBR1MoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIEhGbGFncyA9IGN0eC52ZnJPcmRl cmVkTGlzdEZsYWdzKCkuSEZsYWdzDQo+IA0KPiArICAgICAgICAgICAgTEZsYWdzID0gY3R4LnZm ck9yZGVyZWRMaXN0RmxhZ3MoKS5MRmxhZ3MNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRXJy b3JIYW5kbGVyKE9MT2JqLlNldEZsYWdzKEhGbGFncywgTEZsYWdzKSwgY3R4LkYubGluZSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBPTE9iag0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX0lzT3JkZXJlZExpc3QgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJPcmRlcmVk TGlzdEZsYWdzLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJPcmRlcmVkTGlzdEZsYWdzKHNlbGYs DQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyT3JkZXJlZExpc3RGbGFnc0NvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGZvciBGbGFnc0ZpZWxkQ3R4IGluIGN0eC5vcmRlcmVkbGlzdEZsYWdzRmll bGQoKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguSEZsYWdzIHw9IEZsYWdzRmllbGRDdHguSEZs YWcNCj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWdzIHw9IEZsYWdzRmllbGRDdHguTEZsYWcN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguSEZsYWdzLCBjdHguTEZsYWdzDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5IFZmclN5bnRheFBhcnNlciNvcmRlcmVkbGlzdEZsYWdzRmllbGQuDQo+IA0KPiArICAgIGRl ZiB2aXNpdE9yZGVyZWRsaXN0RmxhZ3NGaWVsZChzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2Vy Lk9yZGVyZWRsaXN0RmxhZ3NGaWVsZENvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5O dW1iZXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19UcmFuc051bShj dHguTnVtYmVyKCkpICE9IDA6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19FcnJvckhh bmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiBjdHguc3RhcnQu bGluZSkNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LnF1ZXN0aW9uaGVhZGVyRmxhZ3NGaWVsZCgp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkhGbGFnID0gY3R4LnF1ZXN0aW9uaGVh ZGVyRmxhZ3NGaWVsZCgpLlFIRmxhZw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguVW5pUXVlRmxh ZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMQ0KPiANCj4g KyAgICAgICAgZWxpZiBjdHguTm9FbXB0eUZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5MRmxhZyA9IDB4MDINCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiAgY3R4 LkhGbGFnLCBjdHguTEZsYWcNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRy ZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudERhdGUuDQo+IA0KPiAr ICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudERhdGUoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNl ci5WZnJTdGF0ZW1lbnREYXRlQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBET2Jq ID0gY3R4Lk9wT2JqDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ ICsgICAgICAgIERPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZm clF1ZXN0aW9uSGVhZGVyKCkgIT0gTm9uZToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBp ZiBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0gRUZJX0lGUl9UWVBFX09USEVSOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fQ3VyclFlc3RWYXJJbmZvLlZhclR5cGUgPT0g RUZJX0lGUl9UWVBFX0RBVEUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBjdHguRkxB R1MoKSAhPSBOb25lOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKERPYmouU2V0Rmxh Z3MoRUZJX0lGUl9RVUVTVElPTl9GTEFHX0RFRkFVTFQsDQo+IGN0eC52ZnJEYXRlRmxhZ3MoKS5M RmxhZ3MpLCBjdHguRjEubGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgWWVhciA9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJ ZGVudGlmaWVyKDApKQ0KPiANCj4gKyAgICAgICAgICAgIFllYXIgKz0gJy4nDQo+IA0KPiArICAg ICAgICAgICAgWWVhciArPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcigxKSkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBNb250aCA9IHNlbGYuX19UcmFuc0lkKGN0eC5T dHJpbmdJZGVudGlmaWVyKDIpKQ0KPiANCj4gKyAgICAgICAgICAgIE1vbnRoICs9ICcuJw0KPiAN Cj4gKyAgICAgICAgICAgIE1vbnRoICs9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlm aWVyKDMpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIERheSA9IHNlbGYuX19UcmFuc0lk KGN0eC5TdHJpbmdJZGVudGlmaWVyKDQpKQ0KPiANCj4gKyAgICAgICAgICAgIERheSArPSAnLicN Cj4gDQo+ICsgICAgICAgICAgICBEYXkgKz0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50 aWZpZXIoNSkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LkZMQUdTKCkgIT0g Tm9uZToNCj4gDQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihET2JqLlNldEZsYWdzKEVGSV9J RlJfUVVFU1RJT05fRkxBR19ERUZBVUxULA0KPiBjdHgudmZyRGF0ZUZsYWdzKCkuTEZsYWdzKSwg Y3R4LkYyLmxpbmUpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgUUlkLCBfID0gc2VsZi5f X0NWZnJRdWVzdGlvbkRCLlJlZ2lzdGVyT2xkRGF0ZVF1ZXN0aW9uKFllYXIsDQo+IE1vbnRoLCBE YXksIEVGSV9RVUVTVElPTl9JRF9JTlZBTElEKQ0KPiANCj4gKyAgICAgICAgICAgIERPYmouU2V0 UXVlc3Rpb25JZChRSWQpDQo+IA0KPiArICAgICAgICAgICAgRE9iai5TZXRGbGFncyhFRklfSUZS X1FVRVNUSU9OX0ZMQUdfREVGQVVMVCwNCj4gUUZfREFURV9TVE9SQUdFX1RJTUUpDQo+IA0KPiAr ICAgICAgICAgICAgRE9iai5TZXRQcm9tcHQoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkp KQ0KPiANCj4gKyAgICAgICAgICAgIERPYmouU2V0SGVscChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51 bWJlcigxKSkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgU2l6ZSA9IEVGSV9JRlJfREVG QVVMVC5WYWx1ZS5vZmZzZXQgKyBzaXplb2YgKEVGSV9ISUlfREFURSkNCj4gDQo+ICsgICAgICAg ICAgICBEZWZhdWx0T2JqID0gQ0lmckRlZmF1bHQoU2l6ZSwgRUZJX0hJSV9ERUZBVUxUX0NMQVNT X1NUQU5EQVJELA0KPiBFRklfSUZSX1RZUEVfREFURSwgY3R4LlZhbCkNCj4gDQo+ICsgICAgICAg ICAgICBEZWZhdWx0T2JqLlNldExpbmVObyhMaW5lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg Y3R4Lk5vZGUuRGF0YSA9IERPYmoNCj4gDQo+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0 YXRlbWVudEluY29uc2lzdGVudElmKCk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0luc2Vy dENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4 Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkNCj4gVmZyU3ludGF4UGFyc2VyI21pbk1heERhdGVTdGVwRGVmYXVsdC4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0TWluTWF4RGF0ZVN0ZXBEZWZhdWx0KHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJz ZXIuTWluTWF4RGF0ZVN0ZXBEZWZhdWx0Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBpZiBjdHguRGVmYXVsdCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgTWluaW11bSA9 IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgICAgIE1heGlt dW0gPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkNCj4gDQo+ICsgICAgICAgICAgICBp ZiBjdHguS2V5VmFsdWUgPT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkRhdGUuWWVh ciA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBjdHguRGF0ZS5ZZWFyIDwgTWluaW11bSBvciBjdHguRGF0ZS5ZZWFyID4gTWF4aW11bToNCj4g DQo+ICsNCj4gc2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5W QUxJRF9QQVJBTUVURVIsDQo+IGN0eC5OLmxpbmUsICJZZWFyIGRlZmF1bHQgdmFsdWUgbXVzdCBi ZSBiZXR3ZWVuIE1pbiB5ZWFyIGFuZCBNYXggeWVhci4iKQ0KPiANCj4gKyAgICAgICAgICAgIGlm IGN0eC5LZXlWYWx1ZSA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguRGF0ZS5Nb250 aCA9IHNlbGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBp ZiBjdHguRGF0ZS5Nb250aCA8IDEgb3IgY3R4LkRhdGUuTW9udGggPiAxMjoNCj4gDQo+ICsNCj4g c2VsZi5fX0Vycm9ySGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJB TUVURVIsDQo+IGN0eC5ELmxpbmUsICJNb250aCBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2Vl biBNaW4gMSBhbmQgTWF4IDEyLiIpDQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LktleVZhbHVl ID09IDI6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5EYXRlLkRheSA9IHNlbGYuX19UcmFu c051bShjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBjdHguRGF0ZS5EYXkg PCAxIG9yIGN0eC5EYXRlLkRheSA+IDMxOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4LkQubGlu ZSwgIkRheSBkZWZhdWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiBNaW4gMSBhbmQgTWF4IDMxLiIp DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmckRhdGVGbGFncy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyRGF0ZUZs YWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRGF0ZUZsYWdzQ29udGV4dCk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4LmRhdGVGbGFnc0ZpZWxkKCk6DQo+ IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBGbGFnc0ZpZWxkQ3R4LkxGbGFnDQo+IA0K PiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkxGbGFncw0KPiANCj4gKw0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjZGF0ZUZsYWdzRmllbGQuDQo+IA0KPiArICAgIGRlZiB2aXNpdERhdGVGbGFnc0ZpZWxkKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuRGF0ZUZsYWdzRmllbGRDb250ZXh0KToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu TEZsYWcgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4gKyAgICAgICAgaWYg Y3R4LlllYXJTdXBwcHJlc3NGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu TEZsYWcgPSAweDAxDQo+IA0KPiArICAgICAgICBpZiBjdHguTW9udGhTdXBwcmVzc0ZsYWcoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MDINCj4gDQo+ICsgICAg ICAgIGlmIGN0eC5EYXlTdXBwcmVzc0ZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IGN0eC5MRmxhZyA9IDB4MDQNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5TdG9yYWdlTm9ybWFsRmxh ZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgwMA0KPiANCj4g KyAgICAgICAgaWYgY3R4LlN0b3JhZ2VUaW1lRmxhZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgY3R4LkxGbGFnID0gMHgwMTANCj4gDQo+ICsgICAgICAgIGlmIGN0eC5TdG9yYWdlV2Fr ZVVwRmxhZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFnID0gMHgyMA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5MRmxhZw0KPiANCj4gKw0KPiANCj4g Kw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjdmZyU3RhdGVtZW50VGltZS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50 VGltZShzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFRpbWVDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFRPYmogPSBjdHguT3BPYmoNCj4gDQo+ICsgICAg ICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgVE9iai5TZXRMaW5lTm8o TGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyUXVlc3Rpb25IZWFkZXIoKSAhPSBOb25l Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DdXJyUWVzdFZhckluZm8u VmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfT1RIRVI6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuX19DdXJyUWVzdFZhckluZm8uVmFyVHlwZSA9PSBFRklfSUZSX1RZUEVfVElNRQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgIGlmIGN0eC5GTEFHUygpICE9IE5vbmU6DQo+IA0KPiArDQo+ IHNlbGYuX19FcnJvckhhbmRsZXIoVE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdf REVGQVVMVCwNCj4gY3R4LnZmclRpbWVGbGFncygpLkxGbGFncyksIGN0eC5GMS5saW5lKQ0KPiAN Cj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBIb3VyID0gc2Vs Zi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMCkpDQo+IA0KPiArICAgICAgICAgICAg SG91ciArPSAnLicNCj4gDQo+ICsgICAgICAgICAgICBIb3VyICs9IHNlbGYuX19UcmFuc0lkKGN0 eC5TdHJpbmdJZGVudGlmaWVyKDEpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIE1pbnV0 ZSA9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKDIpKQ0KPiANCj4gKyAgICAg ICAgICAgIE1pbnV0ZSArPSAnLicNCj4gDQo+ICsgICAgICAgICAgICBNaW51dGUgKz0gc2VsZi5f X1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoMykpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgU2Vjb25kID0gc2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoNCkpDQo+ IA0KPiArICAgICAgICAgICAgU2Vjb25kICs9ICcuJw0KPiANCj4gKyAgICAgICAgICAgIFNlY29u ZCArPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5nSWRlbnRpZmllcig1KSkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICBpZiBjdHguRkxBR1MoKSAhPSBOb25lOg0KPiANCj4gKw0KPiBzZWxm Ll9fRXJyb3JIYW5kbGVyKFRPYmouU2V0RmxhZ3MoRUZJX0lGUl9RVUVTVElPTl9GTEFHX0RFRkFV TFQsDQo+IGN0eC52ZnJUaW1lRmxhZ3MoKS5MRmxhZ3MpLCBjdHguRjIubGluZSkNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBRSWQsIF8gPSBzZWxmLl9fQ1ZmclF1ZXN0aW9uREIuUmVnaXN0 ZXJPbGRUaW1lUXVlc3Rpb24oSG91ciwNCj4gTWludXRlLCBTZWNvbmQsIEVGSV9RVUVTVElPTl9J RF9JTlZBTElEKQ0KPiANCj4gKyAgICAgICAgICAgIFRPYmouU2V0UXVlc3Rpb25JZChRSWQpDQo+ IA0KPiArICAgICAgICAgICAgVE9iai5TZXRGbGFncyhFRklfSUZSX1FVRVNUSU9OX0ZMQUdfREVG QVVMVCwNCj4gUUZfVElNRV9TVE9SQUdFX1RJTUUpDQo+IA0KPiArICAgICAgICAgICAgVE9iai5T ZXRQcm9tcHQoc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIoMCkpKQ0KPiANCj4gKyAgICAgICAg ICAgIFRPYmouU2V0SGVscChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigxKSkpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgU2l6ZSA9IEVGSV9JRlJfREVGQVVMVC5WYWx1ZS5vZmZzZXQg KyBzaXplb2YgKEVGSV9ISUlfVElNRSkNCj4gDQo+ICsgICAgICAgICAgICBEZWZhdWx0T2JqID0g Q0lmckRlZmF1bHQoU2l6ZSwgRUZJX0hJSV9ERUZBVUxUX0NMQVNTX1NUQU5EQVJELA0KPiBFRklf SUZSX1RZUEVfVElNRSwgY3R4LlZhbCkNCj4gDQo+ICsgICAgICAgICAgICBEZWZhdWx0T2JqLlNl dExpbmVObyhMaW5lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IFRP YmoNCj4gDQo+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudEluY29uc2lzdGVu dElmKCk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBD dHgpDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFy c2VyI21pbk1heFRpbWVTdGVwRGVmYXVsdC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0TWluTWF4VGlt ZVN0ZXBEZWZhdWx0KHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuTWluTWF4VGltZVN0ZXBE ZWZhdWx0Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguRGVmYXVsdCgp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgTWluaW11bSA9IHNlbGYuX19UcmFuc051bShj dHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgICAgIE1heGltdW0gPSBzZWxmLl9fVHJhbnNO dW0oY3R4Lk51bWJlcigxKSkNCj4gDQo+ICsgICAgICAgICAgICBpZiBjdHguS2V5VmFsdWUgPT0g MDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LlRpbWUuSG91ciA9IHNlbGYuX19UcmFuc051 bShjdHguTnVtYmVyKGxlbihjdHguTnVtYmVyKCkpLQ0KPiAxKSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgaWYgY3R4LlRpbWUuSG91ciA+IDIzOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5k bGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4Lk4u bGluZSwgIkhvdXIgZGVmYXVsdCB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjMuIikNCj4g DQo+ICsgICAgICAgICAgICBpZiBjdHguS2V5VmFsdWUgPT0gMToNCj4gDQo+ICsgICAgICAgICAg ICAgICAgY3R4LlRpbWUuTWludXRlID0NCj4gc2VsZi5fX1RyYW5zTnVtKGN0eC5OdW1iZXIobGVu KGN0eC5OdW1iZXIoKSktMSkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIGN0eC5UaW1lLk1p bnV0ZSA+IDU5Og0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4Lk4ubGluZSwgIk1pbnV0ZSBkZWZh dWx0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCA1OS4iKQ0KPiANCj4gKyAgICAgICAgICAg IGlmIGN0eC5LZXlWYWx1ZSA9PSAyOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguVGltZS5T ZWNvbmQgPQ0KPiBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcihsZW4oY3R4Lk51bWJlcigpKS0x KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgY3R4LlRpbWUuU2Vjb25kID4gNTk6DQo+IA0K PiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFM SURfUEFSQU1FVEVSLA0KPiBjdHguTi5saW5lLCAiU2Vjb25kIGRlZmF1bHQgdmFsdWUgbXVzdCBi ZSBiZXR3ZWVuIDAgYW5kIDU5LiIpDQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclRpbWVGbGFncy4NCj4gDQo+ICsg ICAgZGVmIHZpc2l0VmZyVGltZUZsYWdzKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyVGlt ZUZsYWdzQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZm9yIEZsYWdzRmllbGRDdHggaW4gY3R4 LnRpbWVGbGFnc0ZpZWxkKCk6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkxGbGFncyB8PSBGbGFn c0ZpZWxkQ3R4LkxGbGFnDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkxGbGFn cw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdGltZUZsYWdzRmllbGQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFRpbWVG bGFnc0ZpZWxkKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVGltZUZsYWdzRmllbGRDb250ZXh0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguTEZsYWcgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiANCj4g KyAgICAgICAgaWYgY3R4LkhvdXJTdXBwcHJlc3NGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguTEZsYWcgPSAweDAxDQo+IA0KPiArICAgICAgICBpZiBjdHguTWludXRlU3Vw cHJlc3NGbGFnKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDAy DQo+IA0KPiArICAgICAgICBpZiBjdHguU2Vjb25kU3VwcHJlc3NGbGFnKCkgIT0gTm9uZToNCj4g DQo+ICsgICAgICAgICAgICBjdHguTEZsYWcgPSAweDA0DQo+IA0KPiArICAgICAgICBpZiBjdHgu U3RvcmFnZU5vcm1hbEZsYWcoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxh ZyA9IDB4MDANCj4gDQo+ICsgICAgICAgIGlmIGN0eC5TdG9yYWdlVGltZUZsYWcoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5MRmxhZyA9IDB4MTANCj4gDQo+ICsgICAgICAgIGlm IGN0eC5TdG9yYWdlV2FrZVVwRmxhZygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4 LkxGbGFnID0gMHgyMA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5MRmxhZw0K PiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBW ZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50Q29uZGl0aW9uYWwuDQo+IA0KPiArICAgIGRlZiB2 aXNpdFZmclN0YXRlbWVudENvbmRpdGlvbmFsKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIu VmZyU3RhdGVtZW50Q29uZGl0aW9uYWxDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVt ZW50RGlzYWJsZUlmU3RhdCgpIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9 IGN0eC52ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0KCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYg Y3R4LnZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0KCkhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0KCkuTm9kZQ0KPiAN Cj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVudEdyYXlPdXRJZlN0YXQoKSE9IE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3RhdGVtZW50R3JheU91dElmU3Rh dCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52ZnJTdGF0ZW1lbnRJbmNvbnNpc3RlbnRJ ZlN0YXQoKSE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4Lk5vZGUgPSBjdHgudmZyU3Rh dGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KCkuTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg cmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRDb25k aXRpb25hbE5ldy4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50Q29uZGl0aW9uYWxO ZXcoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRDb25kaXRpb25hbE5l d0NvbnRleHQpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdC4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3VwcHJlc3NJZlN0YXQoc2VsZiwNCj4gY3R4 OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdENvbnRleHQpOg0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAg ICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3KCkuTm9kZQ0K PiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2 ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1l bnRHcmF5T3V0SWZTdGF0KHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 R3JheU91dElmU3RhdENvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNp dENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0YXRlbWVu dEdyYXlPdXRJZlN0YXROZXcoKS5Ob2RlDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN0YXRMaXN0Lg0KPiANCj4gKyAgICBk ZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdGF0TGlzdChzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2Vy LlZmclN0YXRlbWVudFN0YXRMaXN0Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBz ZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LnZmclN0YXRlbWVu dFN0YXQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0gY3R4LnZmclN0 YXRlbWVudFN0YXQoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVtZW50UXVl c3Rpb25zKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJT dGF0ZW1lbnRRdWVzdGlvbnMoKS5Ob2RlDQo+IA0KPiArICAgICAgICBpZiBjdHgudmZyU3RhdGVt ZW50Q29uZGl0aW9uYWwoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlID0g Y3R4LnZmclN0YXRlbWVudENvbmRpdGlvbmFsKCkuTm9kZQ0KPiANCj4gKyAgICAgICAgaWYgY3R4 LnZmclN0YXRlbWVudExhYmVsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguTm9k ZSA9IGN0eC52ZnJTdGF0ZW1lbnRMYWJlbCgpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC52 ZnJTdGF0ZW1lbnRFeHRlbnNpb24oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5O b2RlID0gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lvbigpLk5vZGUNCj4gDQo+ICsgICAgICAgIGlm IGN0eC52ZnJTdGF0ZW1lbnRJbnZhbGlkKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBj dHguTm9kZSA9IGN0eC52ZnJTdGF0ZW1lbnRJbnZhbGlkKCkuTm9kZQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRTdGF0TGlz dE9sZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50U3RhdExpc3RPbGQoc2VsZiwN Cj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRTdGF0TGlzdE9sZENvbnRleHQpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+ IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBh cnNlciN2ZnJTdGF0ZW1lbnREaXNhYmxlSWZTdGF0Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJT dGF0ZW1lbnREaXNhYmxlSWZTdGF0KHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3Rh dGVtZW50RGlzYWJsZUlmU3RhdENvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgRElP YmogPSBDSWZyRGlzYWJsZUlmKCkNCj4gDQo+ICsgICAgICAgIERJT2JqLlNldExpbmVObyhjdHgu c3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBESU9iag0KPiANCj4g KyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9uID0gJ2Rpc2FibGVpZicgKyAnICcgKw0KPiBzZWxm Ll9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGZvciBD dHggaW4gY3R4LnZmclN0YXRlbWVudFN0YXRMaXN0KCk6DQo+IA0KPiArICAgICAgICAgICAgc2Vs Zi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBDdHgpDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4 Lk5vZGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0 TmV3Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRTdXBwcmVzc0lmU3RhdE5ldyhz ZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudFN1cHByZXNzSWZTdGF0TmV3 Q29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBTSU9iaiA9IENJZnJTdXBwcmVzc0lm KCkNCj4gDQo+ICsgICAgICAgIFNJT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ ICsgICAgICAgIGN0eC5Ob2RlLkRhdGEgPSBTSU9iag0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUu Q29uZGl0aW9uID0gJ3N1cHByZXNzaWYnICsgJyAnICsNCj4gc2VsZi5fX0V4dHJhY3RPcmlnaW5h bFRleHQoY3R4LnZmclN0YXRlbWVudEV4cHJlc3Npb24oKSkNCj4gDQo+ICsgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBmb3IgQ3R4IGluIGN0eC52ZnJTdGF0 ZW1lbnRTdGF0TGlzdCgpOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChj dHguTm9kZSwgQ3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+ IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2Vk IGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3Lg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRHcmF5T3V0SWZTdGF0TmV3KHNlbGYsDQo+IGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50R3JheU91dElmU3RhdE5ld0NvbnRleHQpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgR09JT2JqID0gQ0lmckdyYXlPdXRJZigpDQo+IA0KPiAr ICAgICAgICBHT0lPYmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAg Y3R4Lk5vZGUuRGF0YSA9IEdPSU9iag0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuQ29uZGl0aW9u ID0gJ2dyYXlvdXRpZicgKyAnICcgKw0KPiBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgu dmZyU3RhdGVtZW50RXhwcmVzc2lvbigpKQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudFN0YXRM aXN0KCk6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0luc2VydENoaWxkKGN0eC5Ob2RlLCBD dHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEluY29uc2lzdGVudElmU3RhdC4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0KHNlbGYsDQo+ IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW5jb25zaXN0ZW50SWZTdGF0Q29udGV4 dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBJSU9iaiA9IENJZnJJbmNvbnNpc3RlbnRJZigp DQo+IA0KPiArICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9VTlNVUFBPUlRFRCwNCj4gY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBJSU9i ai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgSUlPYmouU2V0RXJyb3Ioc2VsZi5fX1RyYW5zTnVt KGN0eC5OdW1iZXIoKSkpDQo+IA0KPiArICAgICAgICBjdHguTm9kZS5EYXRhID0gSUlPYmoNCj4g DQo+ICsgICAgICAgIGN0eC5Ob2RlLkNvbmRpdGlvbiA9ICdpbmNvbnNpc3RlbnRpZicgKyAnICcg Kw0KPiBzZWxmLl9fRXh0cmFjdE9yaWdpbmFsVGV4dChjdHgudmZyU3RhdGVtZW50RXhwcmVzc2lv bigpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRJbnZhbGlkLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJT dGF0ZW1lbnRJbnZhbGlkKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50 SW52YWxpZENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVu Lg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkSGlkZGVuKHNlbGYsDQo+ IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZEhpZGRlbkNvbnRleHQpOg0K PiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZm clN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5Lg0KPiANCj4gKyAgICBk ZWYgdmlzaXRWZnJTdGF0ZW1lbnRJbnZhbGlkSW52ZW50b3J5KHNlbGYsDQo+IGN0eDpWZnJTeW50 YXhQYXJzZXIuVmZyU3RhdGVtZW50SW52YWxpZEludmVudG9yeUNvbnRleHQpOg0KPiANCj4gKyAg ICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBh cnNlciN2ZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0cy4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0VmZyU3RhdGVtZW50SW52YWxpZFNhdmVSZXN0b3JlRGVmYXVsdHMoc2VsZiwNCj4g Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRJbnZhbGlkU2F2ZVJlc3RvcmVEZWZhdWx0 c0NvbnRleHQpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJTdGF0ZW1lbnRMYWJlbC4NCj4gDQo+ICsgICAgZGVm IHZpc2l0VmZyU3RhdGVtZW50TGFiZWwoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJT dGF0ZW1lbnRMYWJlbENvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTE9iaiA9IENJ ZnJMYWJlbCgpDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4g KyAgICAgICAgTE9iai5TZXRMaW5lTm8oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBM T2JqLlNldE51bWJlcihzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCj4gDQo+ICsgICAg ICAgIGN0eC5Ob2RlLkRhdGEgPSBMT2JqDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk5vZGUN Cj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVj ZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWV4LkJPYmpudEJhbm5lci4NCj4gDQo+ ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50QmFubmVyKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQ YXJzZXIuVmZyU3RhdGVtZW50QmFubmVyQ29udGV4dCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4 LkxpbmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIEJPYmogPSBDSWZyQmFubmVyKCkN Cj4gDQo+ICsgICAgICAgICAgICBCT2JqLlNldExpbmVObyhjdHguc3RhcnQubGluZSkNCj4gDQo+ ICsgICAgICAgICAgICBCT2JqLlNldFRpdGxlKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKDAp KSkNCj4gDQo+ICsgICAgICAgICAgICBCT2JqLlNldExpbmUoc2VsZi5fX1RyYW5zTnVtKGN0eC5O dW1iZXIoMSkpKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGN0eC5MZWZ0KCkgIT0gTm9uZTogQk9i ai5TZXRBbGlnbigwKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGN0eC5DZW50ZXIoKSAhPSBOb25l OiBCT2JqLlNldEFsaWduKDEpDQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LlJpZ2h0KCkgIT0g Tm9uZTogQk9iai5TZXRBbGlnbigyKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Ob2RlLkRhdGEg PSBCT2JqDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5UaW1lb3V0KCkgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBUT2JqID0gQ0lmclRpbWVvdXQoKQ0KPiANCj4gKyAgICAgICAgICAgIFRP YmouU2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgICAgIFRPYmouU2V0 VGltZW91dChzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigyKSkpDQo+IA0KPiArICAgICAgICAg ICAgY3R4Lk5vZGUuRGF0YSA9IFRPYmoNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBj dHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50RXh0ZW5zaW9uLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRWZnJTdGF0ZW1lbnRFeHRlbnNpb24oc2VsZiwNCj4gY3R4OlZmclN5 bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHRlbnNpb25Db250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGN0eC5Jc1N0cnVjdCA9IEZhbHNlDQo+IA0KPiArICAgICAgICBpZiBjdHguRGF0 YVR5cGUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIGN0eC5VaW50NjQoKSAhPSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAnVUlOVDY0Jw0KPiAN Cj4gKyAgICAgICAgICAgIGVsaWYgY3R4LlVpbnQzMigpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgIGN0eC5UeXBlTmFtZSA9ICdVSU5UMzInDQo+IA0KPiArICAgICAgICAgICAgZWxp ZiBjdHguVWludDE2KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LlR5cGVO YW1lID0gJ1VJTlQxNicNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGN0eC5VaW50OCgpICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5UeXBlTmFtZSA9ICdVSU5UOCcNCj4gDQo+ ICsgICAgICAgICAgICBlbGlmIGN0eC5Cb29sZWFuKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgY3R4LlR5cGVOYW1lID0gJ0JPT0xFQU4nDQo+IA0KPiArICAgICAgICAgICAgZWxp ZiBjdHguRUZJX1NUUklOR19JRCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0 eC5UeXBlTmFtZSA9ICdFRklfU1RSSU5HX0lEJw0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgY3R4 LkVGSV9ISUlfREFURSgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5UeXBl TmFtZSA9ICdFRklfSElJX0RBVEUnDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5Jc1N0cnVj dCA9IFRydWUNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIGN0eC5FRklfSElJX1RJTUUoKSAhPSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSAnRUZJX0hJSV9USU1F Jw0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguSXNTdHJ1Y3QgPSBUcnVlDQo+IA0KPiArICAg ICAgICAgICAgZWxpZiBjdHguRUZJX0hJSV9SRUYoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBjdHguVHlwZU5hbWUgPSAnRUZJX0hJSV9SRUYnDQo+IA0KPiArICAgICAgICAgICAg ICAgIGN0eC5Jc1N0cnVjdCA9IFRydWUNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICBjdHguVHlwZU5hbWUgPSBzZWxmLl9fVHJhbnNJZChjdHguU3RyaW5n SWRlbnRpZmllcigpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguSXNTdHJ1Y3QgPSBUcnVl DQo+IA0KPiArICAgICAgICAgICAgY3R4LkFycmF5TnVtID0gc2VsZi5fX1RyYW5zTnVtKGN0eC5O dW1iZXIoKSkNCj4gDQo+ICsgICAgICAgICAgICBjdHguVHlwZVNpemUsIFJldHVybkNvZGUgPQ0K PiBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlUeXBlTmFtZShjdHguVHlwZU5h bWUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1cm5Db2RlLCBj dHguRC5saW5lKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5TaXplID0gY3R4LlR5cGVTaXplICog Y3R4LkFycmF5TnVtIGlmIGN0eC5BcnJheU51bSA+IDAgZWxzZQ0KPiBjdHguVHlwZVNpemUNCj4g DQo+ICsgICAgICAgICAgICBBcnJheVR5cGUgPSBjdHlwZXMuY191Ynl0ZSAqIGN0eC5TaXplDQo+ IA0KPiArICAgICAgICAgICAgY3R4LkRhdGFCdWZmID0gQXJyYXlUeXBlKCkNCj4gDQo+ICsgICAg ICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBjdHguU2l6ZSk6DQo+IA0KPiArICAgICAgICAgICAg ICAgIGN0eC5EYXRhQnVmZltpXSA9IDANCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4g DQo+ICsgICAgICAgIEd1aWRPYmogPSBDSWZyR3VpZChjdHguU2l6ZSkNCj4gDQo+ICsgICAgICAg IEd1aWRPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAgICBHdWlkT2JqLlNldEd1aWQo Y3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5UeXBlTmFt ZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIEd1aWRPYmouU2V0RGF0YShjdHguRGF0YUJ1 ZmYpDQo+IA0KPiArICAgICAgICAjIHZmclN0YXRlbWVudEV4dGVuc2lvbg0KPiANCj4gKyAgICAg ICAgR3VpZE9iai5TZXRTY29wZSgxKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9IEd1 aWRPYmoNCj4gDQo+ICsgICAgICAgIGZvciBDdHggaW4gY3R4LnZmclN0YXRlbWVudEV4dGVuc2lv bigpOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19JbnNlcnRDaGlsZChjdHguTm9kZSwgQ3R4 KQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5Ob2RlDQo+IA0KPiArDQo+IA0KPiArICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJFeHRlbnNp b25EYXRhLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJFeHRlbnNpb25EYXRhKHNlbGYsDQo+IGN0 eDpWZnJTeW50YXhQYXJzZXIuVmZyRXh0ZW5zaW9uRGF0YUNvbnRleHQpOg0KPiANCj4gKyAgICAg ICAgJycnDQo+IA0KPiArICAgICAgICBURk5hbWUgPSAnJw0KPiANCj4gKyAgICAgICAgSXNBcnJh eSA9IEZhbHNlIGlmIGN0eC5PcGVuQnJhY2tldCgpID09IE5vbmUgZWxzZSBUcnVlDQo+IA0KPiAr ICAgICAgICBBcnJheUlkeCA9IDANCj4gDQo+ICsgICAgICAgIGN0eC5Jc1N0cnVjdCA9IGN0eC5w YXJlbnRDdHguSXNTdHJ1Y3QNCj4gDQo+ICsgICAgICAgIGN0eC5EYXRhQnVmZiA9IGN0eC5wYXJl bnRDdHguRGF0YUJ1ZmYNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBEYXRhID0gc2VsZi5fX1RyYW5zTnVtKGN0 eC5OLnRleHQpDQo+IA0KPiArICAgICAgICBpZiBJc0FycmF5ID09IFRydWU6DQo+IA0KPiArICAg ICAgICAgICAgQXJyYXlJZHggPSBzZWxmLl9fVHJhbnNOdW0oc2VsZi5fX1RyYW5zTnVtKGN0eC5O dW1iZXIoMCkpKQ0KPiANCj4gKyAgICAgICAgQnl0ZU9mZnNldCAgPSBBcnJheUlkeCAqIGN0eC5w YXJlbnRDdHguVHlwZVNpemUNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5Jc1N0cnVjdCA9PSBUcnVl Og0KPiANCj4gKyAgICAgICAgICAgIFRGTmFtZSArPSBjdHgucGFyZW50Q3R4LlR5cGVOYW1lDQo+ IA0KPiArICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5hcnJheU5hbWUoKSkp Og0KPiANCj4gKyAgICAgICAgICAgICAgICBURk5hbWUgKz0gJy4nDQo+IA0KPiArICAgICAgICAg ICAgICAgIFRGTmFtZSArPSBjdHguYXJyYXlOYW1lKGkpLlN1YlN0cloNCj4gDQo+ICsgICAgICAg ICAgICBGaWVsZE9mZnNldCwgRmllbGRUeXBlLCBGaWVsZFNpemUsIEJpdEZpZWxkLCBfID0NCj4g Z0NWZnJWYXJEYXRhVHlwZURCLkdldERhdGFGaWVsZEluZm8oVEZOYW1lKQ0KPiANCj4gKyAgICAg ICAgICAgIGlmIEJpdEZpZWxkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBNYXNrID0gKDEgPDwg RmllbGRTaXplKSAtIDENCj4gDQo+ICsgICAgICAgICAgICAgICAgT2Zmc2V0ID0gaW50KEZpZWxk T2Zmc2V0IC8gOCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgUHJlQml0cyA9IEZpZWxkT2Zmc2V0 ICUgOA0KPiANCj4gKyAgICAgICAgICAgICAgICBNYXNrIDw8PSBQcmVCaXRzDQo+IA0KPiArICAg ICAgICAgICAgICAgIEJlZ2luID0gMA0KPiANCj4gKyAgICAgICAgICAgICAgICBFbmQgPSAwDQo+ IA0KPiArICAgICAgICAgICAgICAgIGlmIEZpZWxkVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfODoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIERhdGEgPSBjdHlwZXMuY191Ynl0ZShE YXRhKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgQml0RmllbGQ6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgIyBTZXQgdGhlIHZhbHVlIHRvIHRoZSBiaXQgZmlsZWRzLg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgIDw8PSBQcmVCaXRzDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPSAoVmFsdWUgJiAofk1hc2spKSB8IERhdGEN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBCZWdpbiA9IEJ5dGVPZmZzZXQgKyBPZmZz ZXQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsgT2Zm c2V0ICsgc2l6ZW9mIChjdHlwZXMuY191Ynl0ZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBjdHguRGF0YUJ1ZmZbQmVnaW46IEVuZF0gPSBWYWx1ZQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBCZWdpbiA9IEJ5 dGVPZmZzZXQgKyBGaWVsZE9mZnNldA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIEVu ZCA9IEJ5dGVPZmZzZXQgKyBGaWVsZE9mZnNldCArIEZpZWxkU2l6ZQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IERhdGENCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgRmllbGRUeXBlID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV8xNjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIERhdGEgPSBjdHlw ZXMuY191c2hvcnQoRGF0YSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIEJpdEZpZWxk Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICMgU2V0IHRoZSB2YWx1ZSB0byB0aGUg Yml0IGZpbGVkcy4NCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICA8PD0gUHJl Qml0cw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gKFZhbHVlICYgKH5N YXNrKSkgfCBEYXRhDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgQmVnaW4gPSBCeXRl T2Zmc2V0ICsgT2Zmc2V0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgRW5kID0gQnl0 ZU9mZnNldCArIE9mZnNldCArIHNpemVvZiAoY3R5cGVzLmNfdXNob3J0KQ0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9IFZhbHVlDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIEJlZ2luID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgRW5kID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0ICsgRmllbGRTaXplDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0JlZ2luOiBFbmRdID0g RGF0YQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBGaWVsZFR5 cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgRGF0YSA9IGN0eXBlcy5jX3Vsb25nKERhdGEpDQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBpZiBCaXRGaWVsZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAjIFNldCB0aGUg dmFsdWUgdG8gdGhlIGJpdCBmaWxlZHMuDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg RGF0YSAgPDw9IFByZUJpdHMNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9 IChWYWx1ZSAmICh+TWFzaykpIHwgRGF0YQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IEJlZ2luID0gQnl0ZU9mZnNldCArIE9mZnNldA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIEVuZCA9IEJ5dGVPZmZzZXQgKyBPZmZzZXQgKyBzaXplb2YgKGN0eXBlcy5jX3Vsb25nKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5EYXRhQnVmZltCZWdpbjogRW5kXSA9 IFZhbHVlDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIEJlZ2luID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgRW5kID0gQnl0ZU9mZnNldCArIEZpZWxkT2Zmc2V0ICsg RmllbGRTaXplDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0Jl Z2luOiBFbmRdID0gRGF0YQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBGaWVs ZFR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgRGF0YSA9IGN0eXBlcy5jX3Vsb25nbG9uZyhEYXRhKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgaWYgQml0RmllbGQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgIyBT ZXQgdGhlIHZhbHVlIHRvIHRoZSBiaXQgZmlsZWRzLg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIERhdGEgIDw8PSBQcmVCaXRzDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg VmFsdWUgPSAoVmFsdWUgJiAofk1hc2spKSB8IERhdGENCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBCZWdpbiA9IEJ5dGVPZmZzZXQgKyBPZmZzZXQNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsgT2Zmc2V0ICsgc2l6ZW9mIChjdHlwZXMuY191 bG9uZ2xvbmcpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgY3R4LkRhdGFCdWZmW0Jl Z2luOiBFbmRdID0gVmFsdWUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgQmVnaW4gPSBCeXRlT2Zmc2V0ICsgRmllbGRPZmZz ZXQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBFbmQgPSBCeXRlT2Zmc2V0ICsgRmll bGRPZmZzZXQgKyBGaWVsZFNpemUNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjdHgu RGF0YUJ1ZmZbQmVnaW46IEVuZF0gPSBEYXRhDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5EYXRhQnVmZltCeXRlT2Zmc2V0LCBCeXRlT2Zmc2V0 ICsgY3R4LnBhcmVudEN0eC5UeXBlU2l6ZV0gPSBEYXRhDQo+IA0KPiArICAgICAgICAnJycNCj4g DQo+ICsgICAgICAgIHJldHVybiBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj dmZyU3RhdGVtZW50TW9kYWwuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudE1vZGFs KHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyU3RhdGVtZW50TW9kYWxDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr ICAgICAgICBjdHguTm9kZSA9IGN0eC52ZnJNb2RhbFRhZygpLk5vZGUNCj4gDQo+ICsgICAgICAg IHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmZyTW9kYWxUYWcuDQo+IA0KPiArICAgIGRl ZiB2aXNpdFZmck1vZGFsVGFnKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyTW9kYWxUYWdD b250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIE1PYmogPSBDSWZyTW9kYWwoKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIE1PYmou U2V0TGluZU5vKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgY3R4Lk5vZGUuRGF0YSA9 IE1PYmoNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTm9kZQ0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgX19TYXZlT3BIZHJDb25kKHNlbGYsIE9wSGRyLCBDb25kLCBMaW5lTm89 MCk6DQo+IA0KPiArICAgICAgICBpZiBDb25kID09IFRydWU6DQo+IA0KPiArICAgICAgICAgICAg aWYgc2VsZi5fX0NJZnJPcEhkcltzZWxmLl9fQ0lmck9wSGRySW5kZXhdICE9IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19DSWZy T3BIZHJbc2VsZi5fX0NJZnJPcEhkckluZGV4XSA9IENJZnJPcEhlYWRlcihPcEhkcikgIw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX19DSWZyT3BIZHJMaW5lTm9bc2VsZi5fX0NJZnJPcEhkcklu ZGV4XSA9IExpbmVObw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19Jbml0T3BI ZHJDb25kKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0NJZnJPcEhkci5hcHBlbmQoTm9u ZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19DSWZyT3BIZHJMaW5lTm8uYXBwZW5kKDApDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBfX1NldFNhdmVkT3BIZHJTY29wZShzZWxmKToNCj4gDQo+ICsg ICAgICAgIGlmICBzZWxmLl9fQ0lmck9wSGRyW3NlbGYuX19DSWZyT3BIZHJJbmRleF0gIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fQ0lmck9wSGRyW3NlbGYuX19DSWZyT3BIZHJJ bmRleF0uU2V0U2NvcGUoMSkNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiANCj4g KyAgICAgICAgcmV0dXJuIEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX0NsZWFyU2F2 ZWRPUEhkcihzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19DSWZyT3BIZHJbc2VsZi5fX0NJ ZnJPcEhkckluZGV4XSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNl IHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI3ZmclN0YXRlbWVudEV4cHJlc3Np b24uDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclN0YXRlbWVudEV4cHJlc3Npb24oc2VsZiwNCj4g Y3R4OlZmclN5bnRheFBhcnNlci5WZnJTdGF0ZW1lbnRFeHByZXNzaW9uQ29udGV4dCk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICAjIFJvb3QgZXhwcmVzc2lvbiBleHRlbnNpb24gZnVuY3Rpb24g Y2FsbGVkIGJ5IG90aGVyIGZ1bmN0aW9uLiAjIw0KPiANCj4gKyAgICAgICAgaWYgY3R4LkV4cElu Zm8uUm9vdExldmVsID09IDA6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX0NJZnJPcEhkcklu ZGV4ICs9IDENCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLl9fQ0lmck9wSGRySW5kZXggPj0g TUFYX0lGUl9FWFBSRVNTSU9OX0RFUFRIOg0KPiANCj4gKw0KPiBzZWxmLl9fRXJyb3JIYW5kbGVy KFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUiwNCj4gY3R4LnN0YXJ0 LmxpbmUsICdUaGUgZGVwdGggb2YgZXhwcmVzc2lvbiBleGNlZWRzIHRoZSBtYXggc3VwcG9ydGVk IGxldmVsIDghJykNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fSW5pdE9wSGRyQ29uZCgpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAg ICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBmb3IgaSBpbiByYW5n ZSgwLCBsZW4oY3R4Lk9SKCkpKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBP cENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgICAgICBPT2JqID0gQ0lmck9yKExpbmUpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAjIEV4dGVuZCBPcENvZGUgU2NvcGUgb25seSBmb3IgdGhlIHJv b3QgZXhwcmVzc2lvbi4NCj4gDQo+ICsgICAgICAgIGlmIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQg PiAxIGFuZCBjdHguRXhwSW5mby5Sb290TGV2ZWwgPT0gMDoNCj4gDQo+ICsgICAgICAgICAgICBp ZiBzZWxmLl9fU2V0U2F2ZWRPcEhkclNjb3BlKCk6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVP YmogPSBDSWZyRW5kKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgc2VsZi5fX0NJZnJPcEhk ckxpbmVOb1tzZWxmLl9fQ0lmck9wSGRySW5kZXhdICE9IDA6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBFT2JqLlNldExpbmVObyhzZWxmLl9fQ0lmck9wSGRyTGluZU5vW3NlbGYuX19DSWZy T3BIZHJJbmRleF0pDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguRXhwSW5mby5Sb290 TGV2ZWwgPT0gMDoNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fQ2xlYXJTYXZlZE9QSGRyKCkN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fQ0lmck9wSGRySW5kZXggPSBzZWxmLl9fQ0lmck9w SGRySW5kZXggLSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLl9fQ29uc3RhbnRPbmx5 SW5FeHByZXNzaW9uID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHgu RXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyU3RhdGVtZW50RXhwcmVzc2lvblN1 Yi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyU3RhdGVtZW50RXhwcmVzc2lvblN1YihzZWxmLA0K PiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmclN0YXRlbWVudEV4cHJlc3Npb25TdWJDb250ZXh0KToN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLlJvb3RMZXZlbCA9IGN0eC5wYXJl bnRDdHguRXhwSW5mby5Sb290TGV2ZWwgKyAxDQo+IA0KPiArICAgICAgICBjdHguRXhwSW5mby5F eHBPcENvdW50ID0gY3R4LnBhcmVudEN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBjdHgucGFyZW50Q3R4LkV4cEluZm8uRXhwT3BDb3VudCA9IGN0eC5FeHBJbmZvLkV4cE9w Q291bnQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KPiANCj4g Kw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQ YXJzZXIjYW5kVGVybS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0QW5kVGVybShzZWxmLCBjdHg6VmZy U3ludGF4UGFyc2VyLkFuZFRlcm1Db250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHguQU5EKCkpKToNCj4gDQo+ICsgICAg ICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgICAgICBB T2JqID0gQ0lmckFuZChMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5DSWZyQW5kTGlzdC5h cHBlbmQoQU9iaikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywg Y3R4LkNJZnJBbmRMaXN0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNiaXR3aXNlb3JUZXJtLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRCaXR3aXNlb3JUZXJtKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIu Qml0d2lzZW9yVGVybUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAg ICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5CaXRXaXNlT3IoKSkpOg0KPiANCj4gKyAgICAg ICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgICAgIEJX T09iaiA9IENJZnJCaXRXaXNlT3IoTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBjdHguQ0lmckJp dFdpc2VPckxpc3QuYXBwZW5kKEJXT09iaikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVy biBjdHguRXhwSW5mbywgY3R4LkNJZnJCaXRXaXNlT3JMaXN0DQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNl ciNiaXR3aXNlYW5kVGVybS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0Qml0d2lzZWFuZFRlcm0oc2Vs ZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5CaXR3aXNlYW5kVGVybUNvbnRleHQpOg0KPiANCj4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIExpbmUgPSBj dHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5C aXRXaXNlQW5kKCkpKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50 ICs9IDENCj4gDQo+ICsgICAgICAgICAgICBCV0FPYmogPSBDSWZyQml0V2lzZUFuZChMaW5lKQ0K PiANCj4gKyAgICAgICAgICAgIGN0eC5DSWZyQml0V2lzZUFuZExpc3QuYXBwZW5kKEJXQU9iaikN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4LkNJZnJCaXRX aXNlQW5kTGlzdA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZXF1YWxUZXJtLg0KPiANCj4gKyAgICBk ZWYgdmlzaXRFcXVhbFRlcm0oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5FcXVhbFRlcm1Db250 ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmVxdWFsVGVybVN1cHBsZW1lbnRhcnkoKSkp Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvLCBjdHguQ0lmckVxdWFsTGlzdCwg Y3R4LkNJZnJOb3RFcXVhbExpc3QNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2VxdWFsVGVybUVxdWFs UnVsZS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0RXF1YWxUZXJtRXF1YWxSdWxlKHNlbGYsDQo+IGN0 eDpWZnJTeW50YXhQYXJzZXIuRXF1YWxUZXJtRXF1YWxSdWxlQ29udGV4dCk6DQo+IA0KPiArICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgRU9iaiA9IENJZnJF cXVhbChjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5DSWZyRXF1YWxMaXN0LmFw cGVuZChFT2JqKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIEVPYmoNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4g VmZyU3ludGF4UGFyc2VyI2VxdWFsVGVybU5vdEVxdWFsUnVsZS4NCj4gDQo+ICsgICAgZGVmIHZp c2l0RXF1YWxUZXJtTm90RXF1YWxSdWxlKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuRXF1 YWxUZXJtTm90RXF1YWxSdWxlQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgTkVPYmogPSBDSWZyTm90RXF1YWwoY3R4LnN0YXJ0 LmxpbmUpDQo+IA0KPiArICAgICAgICBjdHguQ0lmck5vdEVxdWFsTGlzdC5hcHBlbmQoTkVPYmop DQo+IA0KPiArICAgICAgICByZXR1cm4gTkVPYmoNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2NvbXBh cmVUZXJtLg0KPiANCj4gKyAgICBkZWYgdmlzaXRDb21wYXJlVGVybShzZWxmLCBjdHg6VmZyU3lu dGF4UGFyc2VyLkNvbXBhcmVUZXJtQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5j b21wYXJlVGVybVN1cHBsZW1lbnRhcnkoKSkpOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5FeHBJ bmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvLCBj dHguQ0lmckxlc3NUaGFuTGlzdCwgY3R4LkNJZnJMZXNzRXF1YWxMaXN0LA0KPiBjdHguQ0lmckdy ZWF0ZXJUaGFuTGlzdCwgY3R4LkNJZnJHcmVhdGVyRXF1YWxMaXN0DQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciNjb21wYXJlVGVybUxlc3NSdWxlLg0KPiANCj4gKyAgICBkZWYgdmlzaXRDb21wYXJlVGVy bUxlc3NSdWxlKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1MZXNzUnVs ZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ ICsgICAgICAgIExUT2JqID0gQ0lmckxlc3NUaGFuKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAg ICAgICAgY3R4LkNJZnJMZXNzVGhhbkxpc3QuYXBwZW5kKExUT2JqKQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIExUT2JqDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciNjb21wYXJlVGVybUxlc3NFcXVh bFJ1bGUuDQo+IA0KPiArICAgIGRlZiB2aXNpdENvbXBhcmVUZXJtTGVzc0VxdWFsUnVsZShzZWxm LA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLkNvbXBhcmVUZXJtTGVzc0VxdWFsUnVsZUNvbnRleHQp Og0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAg IExFT2JqID0gQ0lmckxlc3NFcXVhbChjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIGN0 eC5DSWZyTGVzc0VxdWFsTGlzdC5hcHBlbmQoTEVPYmopDQo+IA0KPiArICAgICAgICByZXR1cm4g TEVPYmoNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFyc2VyI2NvbXBhcmVUZXJtR3JlYXRlclJ1bGUuDQo+ IA0KPiArICAgIGRlZiB2aXNpdENvbXBhcmVUZXJtR3JlYXRlclJ1bGUoc2VsZiwNCj4gY3R4OlZm clN5bnRheFBhcnNlci5Db21wYXJlVGVybUdyZWF0ZXJSdWxlQ29udGV4dCk6DQo+IA0KPiArICAg ICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgR1RPYmogPSBDSWZy R3JlYXRlclRoYW4oY3R4LnN0YXJ0LmxpbmUpDQo+IA0KPiArICAgICAgICBjdHguQ0lmckdyZWF0 ZXJUaGFuTGlzdC5hcHBlbmQoR1RPYmopDQo+IA0KPiArICAgICAgICByZXR1cm4gR1RPYmoNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQg YnkNCj4gVmZyU3ludGF4UGFyc2VyI2NvbXBhcmVUZXJtR3JlYXRlckVxdWFsUnVsZS4NCj4gDQo+ ICsgICAgZGVmIHZpc2l0Q29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlKHNlbGYsDQo+IGN0eDpW ZnJTeW50YXhQYXJzZXIuQ29tcGFyZVRlcm1HcmVhdGVyRXF1YWxSdWxlQ29udGV4dCk6DQo+IA0K PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgR0VPYmog PSBDSWZyR3JlYXRlckVxdWFsKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgY3R4LkNJ ZnJHcmVhdGVyRXF1YWxMaXN0LmFwcGVuZChHRU9iaikNCj4gDQo+ICsgICAgICAgIHJldHVybiBH RU9iag0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBi eSBWZnJTeW50YXhQYXJzZXIjc2hpZnRUZXJtLg0KPiANCj4gKyAgICBkZWYgdmlzaXRTaGlmdFRl cm0oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1Db250ZXh0KToNCj4gDQo+ICsg ICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBmb3IgaSBpbiBy YW5nZSgwLCBsZW4oY3R4LnNoaWZ0VGVybVN1cHBsZW1lbnRhcnkoKSkpOg0KPiANCj4gKyAgICAg ICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgcmV0dXJu IGN0eC5FeHBJbmZvLCBjdHguQ0lmclNoaWZ0TGVmdExpc3QsIGN0eC5DSWZyU2hpZnRSaWdodExp c3QNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkg VmZyU3ludGF4UGFyc2VyI3NoaWZ0VGVybUxlZnQuDQo+IA0KPiArICAgIGRlZiB2aXNpdFNoaWZ0 VGVybUxlZnQoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5TaGlmdFRlcm1MZWZ0Q29udGV4dCk6 DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAg U0xPYmogPSBDSWZyU2hpZnRMZWZ0KGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgY3R4 LkNJZnJTaGlmdExlZnRMaXN0LmFwcGVuZChTTE9iaikNCj4gDQo+ICsgICAgICAgIHJldHVybiBT TE9iag0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBw cm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjc2hpZnRUZXJtUmlnaHQuDQo+IA0KPiArICAgIGRl ZiB2aXNpdFNoaWZ0VGVybVJpZ2h0KHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuU2hpZnRUZXJt UmlnaHRDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+ IA0KPiArICAgICAgICBTUk9iaiA9IENJZnJTaGlmdFJpZ2h0KGN0eC5zdGFydC5saW5lKQ0KPiAN Cj4gKyAgICAgICAgY3R4LkNJZnJTaGlmdFJpZ2h0TGlzdC5hcHBlbmQoU1JPYmopDQo+IA0KPiAr ICAgICAgICByZXR1cm4gU1JPYmoNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2FkZE1pbnVzVGVybS4N Cj4gDQo+ICsgICAgZGVmIHZpc2l0QWRkTWludXNUZXJtKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQ YXJzZXIuQWRkTWludXNUZXJtQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hp bGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGN0eC5hZGRN aW51c1Rlcm1TdXBwbGVtZW50YXJ5KCkpKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguRXhwSW5m by5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywgY3R4 LkNJZnJBZGRMaXN0LCBjdHguQ0lmclN1YnRyYWN0TGlzdA0KPiANCj4gKw0KPiANCj4gKw0KPiAN Cj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIj YWRkTWludXNUZXJtcEFkZC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0QWRkTWludXNUZXJtcEFkZChz ZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLkFkZE1pbnVzVGVybXBBZGRDb250ZXh0KToNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBBT2Jq ID0gQ0lmckFkZChjdHguc3RhcnQubGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5DSWZyQWRkTGlz dC5hcHBlbmQoQU9iaikNCj4gDQo+ICsgICAgICAgIHJldHVybiBBT2JqDQo+IA0KPiArDQo+IA0K PiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRh eFBhcnNlciNhZGRNaW51c1Rlcm1TdWJ0cmFjdC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0QWRkTWlu dXNUZXJtU3VidHJhY3Qoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5BZGRNaW51c1Rlcm1T dWJ0cmFjdENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkN Cj4gDQo+ICsgICAgICAgIFNPYmogPSBDSWZyU3VidHJhY3QoY3R4LnN0YXJ0LmxpbmUpDQo+IA0K PiArICAgICAgICBjdHguQ0lmclN1YnRyYWN0TGlzdC5hcHBlbmQoU09iaikNCj4gDQo+ICsgICAg ICAgIHJldHVybiBTT2JqDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNtdWx0ZGl2bW9kVGVybS4NCj4g DQo+ICsgICAgZGVmIHZpc2l0TXVsdGRpdm1vZFRlcm0oc2VsZiwNCj4gY3R4OlZmclN5bnRheFBh cnNlci5NdWx0ZGl2bW9kVGVybUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjdHgubXVs dGRpdm1vZFRlcm1TdXBwbGVtZW50YXJ5KCkpKToNCj4gDQo+ICsgICAgICAgICAgICBjdHguRXhw SW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbywg Y3R4LkNJZnJNdWx0aXBseUxpc3QsIGN0eC5DSWZyRGl2aWRlTGlzdCwNCj4gY3R4LkNJZnJNb2R1 bG9MaXN0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNtdWx0ZGl2bW9kVGVybU11bC4NCj4gDQo+ICsg ICAgZGVmIHZpc2l0TXVsdGRpdm1vZFRlcm1NdWwoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNl ci5NdWx0ZGl2bW9kVGVybU11bENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENo aWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIE1PYmogPSBDSWZyTXVsdGlwbHkoY3R4LnN0YXJ0 LmxpbmUpDQo+IA0KPiArICAgICAgICBjdHguQ0lmck11bHRpcGx5TGlzdC5hcHBlbmQoTU9iaikN Cj4gDQo+ICsgICAgICAgIHJldHVybiBNT2JqDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAg ICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNtdWx0ZGl2 bW9kVGVybURpdi4NCj4gDQo+ICsgICAgZGVmIHZpc2l0TXVsdGRpdm1vZFRlcm1EaXYoc2VsZiwN Cj4gY3R4OlZmclN5bnRheFBhcnNlci5NdWx0ZGl2bW9kVGVybURpdkNvbnRleHQpOg0KPiANCj4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIERPYmogPSBD SWZyRGl2aWRlKGN0eC5zdGFydC5saW5lKQ0KPiANCj4gKyAgICAgICAgY3R4LkNJZnJEaXZpZGVM aXN0LmFwcGVuZChET2JqKQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIERPYmoNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3lu dGF4UGFyc2VyI211bHRkaXZtb2RUZXJtUm91bmQuDQo+IA0KPiArICAgIGRlZiB2aXNpdE11bHRk aXZtb2RUZXJtTW9kdWxvKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuTXVsdGRpdm1vZFRl cm1Nb2R1bG9Db250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArICAgICAgICBjdHguTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAg ICBNT2JqID0gQ0lmck1vZHVsbyhjdHguTGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5DSWZyTW9k dWxvTGlzdC5hcHBlbmQoTU9iaikNCj4gDQo+ICsgICAgICAgIHJldHVybiBNT2JqDQo+IA0KPiAr DQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZm clN5bnRheFBhcnNlciNjYXN0VGVybS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0Q2FzdFRlcm0oc2Vs ZiwgY3R4OlZmclN5bnRheFBhcnNlci5DYXN0VGVybUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAg c2VsZi52aXNpdENoaWxkcmVuKGN0eCkgIyMNCj4gDQo+ICsgICAgICAgIENhc3RUeXBlID0gMHhG Rg0KPiANCj4gKyAgICAgICAgaWYgY3R4LkJvb2xlYW4oKSAhPSBbXToNCj4gDQo+ICsgICAgICAg ICAgICBDYXN0VHlwZSA9IDANCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LlVpbnQ2NCgpICE9IFtd Og0KPiANCj4gKyAgICAgICAgICAgIENhc3RUeXBlID0gMQ0KPiANCj4gKyAgICAgICAgZWxpZiBj dHguVWludDMyKCkgIT0gW106DQo+IA0KPiArICAgICAgICAgICAgQ2FzdFR5cGUgPSAxDQo+IA0K PiArICAgICAgICBlbGlmIGN0eC5VaW50MTYoKSAhPSBbXToNCj4gDQo+ICsgICAgICAgICAgICBD YXN0VHlwZSA9IDENCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4LlVpbnQ4KCkgIT0gW106DQo+IA0K PiArICAgICAgICAgICAgQ2FzdFR5cGUgPSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBMaW5l ID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIGlmIENhc3RUeXBlID09IDA6DQo+IA0K PiArICAgICAgICAgICAgY3R4LlRCT2JqID0gQ0lmclRvQm9vbGVhbihMaW5lKQ0KPiANCj4gKyAg ICAgICAgZWxpZiBDYXN0VHlwZSA9PSAxOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5UVU9iaiA9 IENJZnJUb1VpbnQoTGluZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4 cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5UQk9iaiwgY3R4LlRVT2Jq DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1 Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNhdG9tVGVybS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0QXRv bVRlcm0oc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5BdG9tVGVybUNvbnRleHQpOg0KPiANCj4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5O T1QoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0K PiANCj4gKyAgICAgICAgICAgIE5PYmogPSBDSWZyTm90KExpbmUpDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciN2ZnJFeHByZXNzaW9uQ2F0ZW5hdGUuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckV4cHJl c3Npb25DYXRlbmF0ZShzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlZmckV4cHJlc3Npb25D YXRlbmF0ZUNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uUm9vdExldmVsICs9 IDENCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIGN0eC5DT2Jq ID0gQ0lmckNhdGVuYXRlKExpbmUpDQo+IA0KPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENv dW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguQ09iag0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdmZyRXhwcmVzc2lvbk1hdGNoLg0KPiANCj4gKyAgICBkZWYgdmlzaXRW ZnJFeHByZXNzaW9uTWF0Y2goc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJFeHByZXNz aW9uTWF0Y2hDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLlJvb3RMZXZlbCAr PSAxDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBjdHguTU9i aiA9IENJZnJNYXRjaChMaW5lKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3Vu dCArPSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk1PYmoNCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3ZmckV4cHJlc3Npb25NYXRjaDIuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZm ckV4cHJlc3Npb25NYXRjaDIoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJFeHByZXNz aW9uTWF0Y2gyQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4 KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiAr ICAgICAgICBHdWlkID0gY3R4Lmd1aWREZWZpbml0aW9uKCkuR3VpZA0KPiANCj4gKyAgICAgICAg Y3R4Lk0yT2JqID0gQ0lmck1hdGNoMihMaW5lLCBHdWlkKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4 cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4 Lk0yT2JqDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uUGFyZW4uDQo+IA0KPiAr ICAgIGRlZiB2aXNpdFZmckV4cHJlc3Npb25QYXJlbihzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFy c2VyLlZmckV4cHJlc3Npb25QYXJlbkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNz aW9uQnVpbGRJbkZ1bmN0aW9uLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJFeHByZXNzaW9uQnVp bGRJbkZ1bmN0aW9uKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbkJ1 aWxkSW5GdW5jdGlvbkNvbnRleHQpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRD aGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJz ZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNkdXBFeHAuDQo+IA0KPiArICAgIGRl ZiB2aXNpdER1cEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkR1cEV4cENvbnRleHQpOg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsg ICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgRE9iaiA9IENJZnJE dXAoTGluZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKERPYmouR2V0SGVh ZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50DQo+ID09IDApLCBMaW5lKSAjDQo+IA0KPiAr ICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHJldHVybiBjdHguRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdmFyZXF2YWxFeHAu DQo+IA0KPiArICAgIGRlZiB2aXNpdFZhcmVxdmFsRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJz ZXIuVmFyZXF2YWxFeHBDb250ZXh0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIExpbmUgPSBj dHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIFJldHVybkNvZGUgPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fVU5TVVBQT1JURUQNCj4gDQo+ICsgICAgICAgIFZhcklkU3RyID0gJ3ZhcicNCj4gDQo+ICsg ICAgICAgIFZhcklkU3RyICs9IHN0cihjdHguTnVtYmVyKDApKQ0KPiANCj4gKyAgICAgICAgVmFy U3RvcmVJZCwgUmV0dXJuQ29kZSA9IGdDVmZyRGF0YVN0b3JhZ2UuR2V0VmFyU3RvcmVJZChWYXJJ ZFN0cikNCj4gDQo+ICsgICAgICAgIGlmIFJldHVybkNvZGUgPT0gVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1VOREVGSU5FRDoNCj4gDQo+ICsgICAgICAgICAgICBwYXNzDQo+IA0KPiArICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHBhc3MNCj4gDQo+ICsgICAgICAgIFFJZCwgTWFz aywgXyA9IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKE5vbmUsIFZhcklkU3Ry KQ0KPiANCj4gKyAgICAgICAgQ29uc3RWYWwgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigx KSkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5FcXVhbCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgaWYgTWFzayA9PSAwOg0KPiANCj4gKyAgICAgICAgICAgICAgICBFSVZPYmogPSBDSWZy RXFJZFZhbChMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29u ZChFSVZPYmouR2V0SGVhZGVyKCksDQo+IChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDApLCBM aW5lKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBFSVZPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZh cklkU3RyLCBMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBFSVZPYmouU2V0VmFsdWUoQ29u c3RWYWwpDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0g MQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu SWRFcVZhbERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywN Cj4gQ29uc3RWYWwsIEVGSV9DT01QQVJFX1RZUEUuRVFVQUwpDQo+IA0KPiArICAgICAgICBlbGlm IGN0eC5MZXNzRXF1YWwoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSWRFcVZh bERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29uc3RW YWwsDQo+IEVGSV9DT01QQVJFX1RZUEUuTEVTU19FUVVBTCkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIGVsaWYgY3R4Lkxlc3MoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSWRF cVZhbERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29u c3RWYWwsDQo+IEVGSV9DT01QQVJFX1RZUEUuTEVTU19USEFOKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgZWxpZiBjdHguR3JlYXRlckVxdWFsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIs IE1hc2ssIENvbnN0VmFsLA0KPiBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfRVFVQUwpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5HcmVhdGVyKCkgIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwoY3R4LkV4cEluZm8sIExpbmUsIFFJZCwg VmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLA0KPiBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfVEhB TikNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0K PiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgQ29udmVydElkRXhwcihzZWxmLCBFeHBJ bmZvLCBMaW5lTm8sIFFJZCwgVmFySWRTdHIsIEJpdE1hc2spOg0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgUVIxT2JqID0gQ0lmclF1ZXN0aW9uUmVmMShMaW5lTm8pDQo+IA0KPiArICAgICAgICBR UjFPYmouU2V0UXVlc3Rpb25JZChRSWQsIFZhcklkU3RyLCBMaW5lTm8pDQo+IA0KPiArICAgICAg ICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChRUjFPYmouR2V0SGVhZGVyKCksIChFeHBJbmZvLkV4cE9w Q291bnQgPT0NCj4gMCkpDQo+IA0KPiArICAgICAgICBpZiBCaXRNYXNrICE9IDA6DQo+IA0KPiAr ICAgICAgICAgICAgVTMyT2JqID0gQ0lmclVpbnQzMihMaW5lTm8pDQo+IA0KPiArICAgICAgICAg ICAgVTMyT2JqLlNldFZhbHVlKEJpdE1hc2spDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg QldBT2JqID0gQ0lmckJpdFdpc2VBbmQoTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgIFU4T2JqID0gQ0lmclVpbnQ4KExpbmVObykNCj4gDQo+ICsgICAgICAgICAgICBpZiBCaXRN YXNrID09IERBVEVfWUVBUl9CSVRNQVNLOg0KPiANCj4gKyAgICAgICAgICAgICAgICBVOE9iai5T ZXRWYWx1ZSAoMCkNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIEJpdE1hc2sgPT0gVElNRV9TRUNP TkRfQklUTUFTSzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgVThPYmouU2V0VmFsdWUgKDB4MTAp DQo+IA0KPiArICAgICAgICAgICAgZWxpZiBCaXRNYXNrID09IERBVEVfREFZX0JJVE1BU0s6DQo+ IA0KPiArICAgICAgICAgICAgICAgIFU4T2JqLlNldFZhbHVlICgweDE4KQ0KPiANCj4gKyAgICAg ICAgICAgIGVsaWYgQml0TWFzayA9PSBUSU1FX0hPVVJfQklUTUFTSzoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgVThPYmouU2V0VmFsdWUgKDApDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBCaXRN YXNrID09IFRJTUVfTUlOVVRFX0JJVE1BU0s6DQo+IA0KPiArICAgICAgICAgICAgICAgIFU4T2Jq LlNldFZhbHVlICgweDgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgU1JPYmogPSBDSWZy U2hpZnRSaWdodChMaW5lTm8pDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBFeHBJbmZvLkV4cE9w Q291bnQgKz0gNA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgSWRFcVZhbERvU3Bl Y2lhbChzZWxmLCBFeHBJbmZvLCBMaW5lTm8sIFFJZCwgVmFySWRTdHIsIEJpdE1hc2ssDQo+IENv bnN0VmFsLCBDb21wYXJlVHlwZSk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLkNvbnZl cnRJZEV4cHIoRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBCaXRNYXNrKQ0KPiANCj4g KyAgICAgICAgaWYgQ29uc3RWYWwgPiAweEZGOg0KPiANCj4gKyAgICAgICAgICAgIFUxNk9iaiA9 IENJZnJVaW50MTYoTGluZU5vKQ0KPiANCj4gKyAgICAgICAgICAgIFUxNk9iai5TZXRWYWx1ZShD b25zdFZhbCkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgVThPYmog PSBDSWZyVWludDgoTGluZU5vKQ0KPiANCj4gKyAgICAgICAgICAgIFU4T2JqLlNldFZhbHVlKENv bnN0VmFsKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgQ29tcGFyZVR5cGUg PT0gRUZJX0NPTVBBUkVfVFlQRS5FUVVBTDoNCj4gDQo+ICsgICAgICAgICAgICBFT2JqID0gQ0lm ckVxdWFsKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIENvbXBhcmVUeXBlID09 IEVGSV9DT01QQVJFX1RZUEUuTEVTU19FUVVBTDoNCj4gDQo+ICsgICAgICAgICAgICBMRU9iaiA9 IENJZnJMZXNzRXF1YWwoTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgQ29tcGFy ZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5MRVNTX1RIQU46DQo+IA0KPiArICAgICAgICAgICAg TFRPYmogPSBDSWZyTGVzc1RoYW4oTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYg Q29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5HUkVBVEVSX0VRVUFMOg0KPiANCj4gKyAg ICAgICAgICAgIEdFT2JqID0gQ0lmckdyZWF0ZXJFcXVhbChMaW5lTm8pDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfVEhB TjoNCj4gDQo+ICsgICAgICAgICAgICBHVE9iaiA9IENJZnJHcmVhdGVyVGhhbihMaW5lTm8pDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBFeHBJbmZvLkV4cE9wQ291bnQgKz0gMg0KPiANCj4gKw0K PiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJT eW50YXhQYXJzZXIjaWRlcXZhbEV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0SWRlcXZhbEV4cChz ZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLklkZXF2YWxFeHBDb250ZXh0KToNCj4gDQo+ICsgICAg ICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIE1hc2sgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGRO YW1lKCkuTWFzaw0KPiANCj4gKyAgICAgICAgUUlkID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxk TmFtZSgpLlFJZA0KPiANCj4gKyAgICAgICAgVmFySWRTdHIgPSBjdHgudmZyUXVlc3Rpb25EYXRh RmllbGROYW1lKCkuVmFySWRTdHINCj4gDQo+ICsgICAgICAgIExpbmVObyA9IGN0eC52ZnJRdWVz dGlvbkRhdGFGaWVsZE5hbWUoKS5MaW5lDQo+IA0KPiArICAgICAgICBDb25zdFZhbCA9IHNlbGYu X19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBpZiBjdHguRXF1YWwoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIE1hc2sgPT0gMDoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgRUlWT2JqID0gQ0lmckVxSWRWYWwoTGluZSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoRUlWT2JqLkdldEhlYWRlcigpLA0KPiAoY3R4LkV4cElu Zm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgRUlWT2Jq LlNldFF1ZXN0aW9uSWQoUUlkLCBWYXJJZFN0ciwgTGluZU5vKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBFSVZPYmouU2V0VmFsdWUoQ29uc3RWYWwpDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0 eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgICAgIHNlbGYuSWRFcVZhbERvU3BlY2lhbChjdHguRXhwSW5mbywgTGlu ZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywNCj4gQ29uc3RWYWwsIEVGSV9DT01QQVJFX1RZUEUuRVFV QUwpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5MZXNzRXF1YWwoKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSWRFcVZhbERvU3BlY2lhbChjdHguRXhwSW5mbywg TGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29uc3RWYWwsDQo+IEVGSV9DT01QQVJFX1RZUEUu TEVTU19FUVVBTCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsaWYgY3R4Lkxlc3MoKSAhPSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSWRFcVZhbERvU3BlY2lhbChjdHguRXhwSW5m bywgTGluZSwgUUlkLCBWYXJJZFN0ciwgTWFzaywgQ29uc3RWYWwsDQo+IEVGSV9DT01QQVJFX1RZ UEUuTEVTU19USEFOKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguR3JlYXRlckVx dWFsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLklkRXFWYWxEb1NwZWNpYWwo Y3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFsLA0KPiBFRklf Q09NUEFSRV9UWVBFLkdSRUFURVJfRVFVQUwpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlm IGN0eC5HcmVhdGVyKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLklkRXFWYWxE b1NwZWNpYWwoY3R4LkV4cEluZm8sIExpbmUsIFFJZCwgVmFySWRTdHIsIE1hc2ssIENvbnN0VmFs LA0KPiBFRklfQ09NUEFSRV9UWVBFLkdSRUFURVJfVEhBTikNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHJldHVybiBjdHguRXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg SWRFcUlkRG9TcGVjaWFsKHNlbGYsIEV4cEluZm8sIExpbmVObywgUUlkMSwgVmFySWRTdHIxLCBN YXNrMSwgUUlkMiwNCj4gVmFySWRTdHIyLCBNYXNrMiwgQ29tcGFyZVR5cGUpOg0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgc2VsZi5Db252ZXJ0SWRFeHByKEV4cEluZm8sIExpbmVObywgUUlkMSwg VmFySWRTdHIxLCBNYXNrMSkNCj4gDQo+ICsgICAgICAgIHNlbGYuQ29udmVydElkRXhwcihFeHBJ bmZvLCBMaW5lTm8sIFFJZDIsIFZhcklkU3RyMiwgTWFzazIpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkVRVUFMOg0KPiANCj4gKyAg ICAgICAgICAgIEVPYmogPSBDSWZyRXF1YWwoTGluZU5vKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgQ29tcGFyZVR5cGUgPT0gRUZJX0NPTVBBUkVfVFlQRS5MRVNTX0VRVUFMOg0KPiANCj4g KyAgICAgICAgICAgIExFT2JqID0gQ0lmckxlc3NFcXVhbChMaW5lTm8pDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkxFU1NfVEhBTjoN Cj4gDQo+ICsgICAgICAgICAgICBMVE9iaiA9IENJZnJMZXNzVGhhbihMaW5lTm8pDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBpZiBDb21wYXJlVHlwZSA9PSBFRklfQ09NUEFSRV9UWVBFLkdSRUFU RVJfRVFVQUw6DQo+IA0KPiArICAgICAgICAgICAgR0VPYmogPSBDSWZyR3JlYXRlckVxdWFsKExp bmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIENvbXBhcmVUeXBlID09IEVGSV9DT01Q QVJFX1RZUEUuR1JFQVRFUl9USEFOOg0KPiANCj4gKyAgICAgICAgICAgIEdUT2JqID0gQ0lmckdy ZWF0ZXJUaGFuKExpbmVObykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEV4cEluZm8uRXhwT3BD b3VudCArPSAxDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNpZGVxaWRFeHAuDQo+IA0KPiArICAgIGRl ZiB2aXNpdElkZXFpZEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLklkZXFpZEV4cENvbnRl eHQpOg0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAg ICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgTWFzazEgPSBjdHgudmZy UXVlc3Rpb25EYXRhRmllbGROYW1lKDApLk1hc2sNCj4gDQo+ICsgICAgICAgIFFJZDEgPSBjdHgu dmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKDApLlFJZA0KPiANCj4gKyAgICAgICAgVmFySWRTdHIx ID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgwKS5WYXJJZFN0cg0KPiANCj4gKyAgICAg ICAgTGluZU5vMSA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoMCkuTGluZQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgTWFzazIgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKDEp Lk1hc2sNCj4gDQo+ICsgICAgICAgIFFJZDIgPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1l KDEpLlFJZA0KPiANCj4gKyAgICAgICAgVmFySWRTdHIyID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZp ZWxkTmFtZSgxKS5WYXJJZFN0cg0KPiANCj4gKyAgICAgICAgTGluZU5vMiA9IGN0eC52ZnJRdWVz dGlvbkRhdGFGaWVsZE5hbWUoMSkuTGluZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgY3R4 LkVxdWFsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBNYXNrMSAmIE1hc2syOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLklkRXFJZERvU3BlY2lhbChjdHguRXhwSW5mbywg TGluZSwgUUlkMSwgVmFySWRTdHIxLCBNYXNrMSwgUUlkMiwNCj4gVmFySWRTdHIyLCBNYXNrMiwg RUZJX0NPTVBBUkVfVFlQRS5FUVVBTCkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgICAgICBFSUlPYmogPSBDSWZyRXFJZElkKExpbmUpDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKEVJSU9iai5HZXRIZWFkZXIoKSwNCj4gKGN0 eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQo+IA0KPiArICAgICAgICAgICAgICAg IEVJSU9iai5TZXRRdWVzdGlvbklkMShRSWQxLCBWYXJJZFN0cjEsIExpbmVObzEpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIEVJSU9iai5TZXRRdWVzdGlvbklkMShRSWQyLCBWYXJJZFN0cjIsIExp bmVObzIpDQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0g MQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguTGVzc0VxdWFsKCkgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBzZWxmLklkRXFJZERvU3BlY2lhbChjdHguRXhwSW5mbywgTGlu ZSwgUUlkMSwgVmFySWRTdHIxLCBNYXNrMSwgUUlkMiwNCj4gVmFySWRTdHIyLCBNYXNrMiwgRUZJ X0NPTVBBUkVfVFlQRS5MRVNTX0VRVUFMKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBj dHguTGVzcygpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JZEVxSWREb1NwZWNp YWwoY3R4LkV4cEluZm8sIExpbmUsIFFJZDEsIFZhcklkU3RyMSwgTWFzazEsIFFJZDIsDQo+IFZh cklkU3RyMiwgTWFzazIsIEVGSV9DT01QQVJFX1RZUEUuTEVTU19USEFOKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgZWxpZiBjdHguR3JlYXRlckVxdWFsKCkgIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICBzZWxmLklkRXFJZERvU3BlY2lhbChjdHguRXhwSW5mbywgTGluZSwgUUlkMSwgVmFy SWRTdHIxLCBNYXNrMSwgUUlkMiwNCj4gVmFySWRTdHIyLCBNYXNrMiwgRUZJX0NPTVBBUkVfVFlQ RS5HUkVBVEVSX0VRVUFMKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguR3JlYXRl cigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5JZEVxSWREb1NwZWNpYWwoY3R4 LkV4cEluZm8sIExpbmUsIFFJZDEsIFZhcklkU3RyMSwgTWFzazEsIFFJZDIsDQo+IFZhcklkU3Ry MiwgTWFzazIsIEVGSV9DT01QQVJFX1RZUEUuR1JFQVRFUl9USEFOKQ0KPiANCj4gKyAgICAgICAg cmV0dXJuIGN0eC5FeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBJZEVx TGlzdERvU3BlY2lhbChzZWxmLCBFeHBJbmZvLCBMaW5lTm8sIFFJZCwgVmFySWRTdHIsIE1hc2ss IExpc3RMZW4sDQo+IFZhbHVlTGlzdCk6DQo+IA0KPiArICAgICAgICBpZiBMaXN0TGVuID09IDA6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxm LklkRXFWYWxEb1NwZWNpYWwoRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBNYXNrLCBW YWx1ZUxpc3RbMF0sDQo+IEVGSV9DT01QQVJFX1RZUEUuRVFVQUwpDQo+IA0KPiArICAgICAgICBm b3IgaSBpbiByYW5nZSgxLCBMaXN0TGVuKToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLklkRXFW YWxEb1NwZWNpYWwoRXhwSW5mbywgTGluZU5vLCBRSWQsIFZhcklkU3RyLCBNYXNrLA0KPiBWYWx1 ZUxpc3RbaV0sIEVGSV9DT01QQVJFX1RZUEUuRVFVQUwpDQo+IA0KPiArICAgICAgICAgICAgT09i aiA9IENJZnJPcihMaW5lTm8pDQo+IA0KPiArICAgICAgICAgICAgRXhwSW5mby5FeHBPcENvdW50 ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUg cHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI2lkZXF2YWxsaXN0RXhwLg0KPiANCj4gKyAgICBk ZWYgdmlzaXRJZGVxdmFsbGlzdEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLklkZXF2YWxs aXN0RXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBNYXNr ID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpLk1hc2sNCj4gDQo+ICsgICAgICAgIFFJ ZCA9IGN0eC52ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWUoKS5RSWQNCj4gDQo+ICsgICAgICAgIFZh cklkU3RyID0gY3R4LnZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZSgpLlZhcklkU3RyDQo+IA0KPiAr ICAgICAgICBMaW5lTm8gPSBjdHgudmZyUXVlc3Rpb25EYXRhRmllbGROYW1lKCkuTGluZQ0KPiAN Cj4gKyAgICAgICAgVmFsdWVMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJhbmdl KDAsIGxlbihjdHguTnVtYmVyKCkpKToNCj4gDQo+ICsgICAgICAgICAgICBWYWx1ZUxpc3QuYXBw ZW5kKHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKGkpKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIExpc3RMZW4gPSBsZW4oVmFsdWVMaXN0KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYg TWFzayAhPSAwOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSWRFcUxpc3REb1NwZWNpYWwoY3R4 LkV4cEluZm8sIExpbmVObywgUUlkLCBWYXJJZFN0ciwgTWFzaywNCj4gTGlzdExlbiwgVmFsdWVM aXN0KQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBFSUxPYmogPSBD SWZyRXFJZExpc3QoTGluZSwgTGlzdExlbikNCj4gDQo+ICsgICAgICAgICAgICBpZiBRSWQgIT0g RUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIEVJTE9iai5T ZXRRdWVzdGlvbklkKFFJZCwgVmFySWRTdHIsIExpbmVObykNCj4gDQo+ICsgICAgICAgICAgICBF SUxPYmouU2V0TGlzdExlbmd0aChMaXN0TGVuKQ0KPiANCj4gKyAgICAgICAgICAgIEVJTE9iai5T ZXRWYWx1ZUxpc3QoVmFsdWVMaXN0KQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BI ZHJDb25kKEVJTE9iai5HZXRIZWFkZXIoKSwNCj4gKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0g MCksIExpbmUpDQo+IA0KPiArICAgICAgICAgICAgaWYgUUlkID09IEVGSV9RVUVTVElPTl9JRF9J TlZBTElEOg0KPiANCj4gKyAgICAgICAgICAgICAgICBFSUxPYmouU2V0UXVlc3Rpb25JZChRSWQs IFZhcklkU3RyLCBMaW5lTm8pDQo+IA0KPiArICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BD b3VudCArPSAxDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8NCj4gDQo+ICsNCj4g DQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkNCj4gVmZyU3ludGF4UGFy c2VyI3ZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxLg0KPiANCj4gKyAgICBkZWYgdmlzaXRW ZnJRdWVzdGlvbkRhdGFGaWVsZE5hbWVSdWxlMShzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2Vy LlZmclF1ZXN0aW9uRGF0YUZpZWxkTmFtZVJ1bGUxQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBj dHguTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRy ZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgY3R4LlZhcklkU3RyICs9IGN0eC5TTjEudGV4dA0KPiAN Cj4gKyAgICAgICAgY3R4LlZhcklkU3RyICs9ICdbJw0KPiANCj4gKyAgICAgICAgY3R4LlZhcklk U3RyICs9IGN0eC5JLnRleHQNCj4gDQo+ICsgICAgICAgIGN0eC5WYXJJZFN0ciArPSAnXScNCj4g DQo+ICsgICAgICAgIGN0eC5RSWQsIGN0eC5NYXNrLCBfID0gc2VsZi5fX0NWZnJRdWVzdGlvbkRC LkdldFF1ZXN0aW9uSWQoTm9uZSwNCj4gY3R4LlZhcklkU3RyKQ0KPiANCj4gKyAgICAgICAgaWYg c2VsZi5fX0NvbnN0YW50T25seUluRXhwcmVzc2lvbjoNCj4gDQo+ICsgICAgICAgICAgICBzZWxm Ll9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9DT05TVEFOVF9PTkxZLA0K PiBjdHguU04xLmxpbmUpDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LlFJZCwgY3R4Lk1hc2ss IGN0eC5WYXJJZFN0cg0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieQ0KPiBWZnJTeW50YXhQYXJzZXIjdmZyUXVlc3Rpb25EYXRhRmll bGROYW1lUnVsZTIuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmclF1ZXN0aW9uRGF0YUZpZWxkTmFt ZVJ1bGUyKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyUXVlc3Rpb25EYXRhRmllbGRO YW1lUnVsZTJDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIGN0eC5MaW5lID0gY3R4LnN0YXJ0Lmxp bmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAg ICBjdHguVmFySWRTdHIgKz0gY3R4LlNOMi50ZXh0DQo+IA0KPiArICAgICAgICBmb3IgaSBpbiBy YW5nZSgwLCBsZW4oY3R4LmFycmF5TmFtZSgpKSk6DQo+IA0KPiArICAgICAgICAgICAgY3R4LlZh cklkU3RyICs9ICcuJw0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19Db25zdGFudE9ubHlJ bkV4cHJlc3Npb246DQo+IA0KPiArDQo+IHNlbGYuX19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX0NPTlNUQU5UX09OTFksDQo+IGN0eC5TTjIubGluZSkNCj4gDQo+ICsgICAg ICAgICAgICBjdHguVmFySWRTdHIgKz0gY3R4LmFycmF5TmFtZShpKS5TdWJTdHJaDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBjdHguUUlkLCBjdHguTWFzaywgXyA9IHNlbGYuX19DVmZyUXVlc3Rp b25EQi5HZXRRdWVzdGlvbklkKE5vbmUsDQo+IGN0eC5WYXJJZFN0cikNCj4gDQo+ICsgICAgICAg IHJldHVybiBjdHguUUlkLCBjdHguTWFzaywgY3R4LlZhcklkU3RyDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBh cnNlciNhcnJheU5hbWUuDQo+IA0KPiArICAgIGRlZiB2aXNpdEFycmF5TmFtZShzZWxmLCBjdHg6 VmZyU3ludGF4UGFyc2VyLkFycmF5TmFtZUNvbnRleHQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5TdWJTdHIgKz0g c2VsZi5fX1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkNCj4gDQo+ICsgICAgICAgIGN0 eC5TdWJTdHJaICs9IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKCkpDQo+IA0K PiArICAgICAgICBpZiBjdHguTiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIElkeCA9IHNl bGYuX19UcmFuc051bShjdHguTi50ZXh0KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIElkeCA+IDA6 DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5TdWJTdHIgKz0gJ1snDQo+IA0KPiArICAgICAg ICAgICAgICAgIGN0eC5TdWJTdHIgKz0gc3RyKElkeCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg Y3R4LlN1YlN0ciArPSAnXScNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBjdHguU3ViU3Ry WiArPSAnWycNCj4gDQo+ICsgICAgICAgICAgICBjdHguU3ViU3RyWiArPSBzdHIoSWR4KQ0KPiAN Cj4gKyAgICAgICAgICAgIGN0eC5TdWJTdHJaICs9ICddJw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgcmV0dXJuIGN0eC5TdWJTdHIsIGN0eC5TdWJTdHJaDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNx dWVzdGlvbnJlZjFFeHAuDQo+IA0KPiArICAgIGRlZiB2aXNpdFF1ZXN0aW9ucmVmMUV4cChzZWxm LA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9ucmVmMUV4cENvbnRleHQpOg0KPiANCj4g KyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lICMNCj4gDQo+ICsgICAgICAgIFFOYW1lID0g Tm9uZSAjDQo+IA0KPiArICAgICAgICBRSWQgPSBFRklfUVVFU1RJT05fSURfSU5WQUxJRA0KPiAN Cj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0 eC5TdHJpbmdJZGVudGlmaWVyKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBRTmFtZSA9 IHNlbGYuX19UcmFuc0lkKGN0eC5TdHJpbmdJZGVudGlmaWVyKCkpDQo+IA0KPiArICAgICAgICAg ICAgUUlkLCBfICwgXyA9IHNlbGYuX19DVmZyUXVlc3Rpb25EQi5HZXRRdWVzdGlvbklkKFFOYW1l KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguTnVtYmVyKCkgIT0gTm9uZToNCj4g DQo+ICsgICAgICAgICAgICBRSWQgPSBzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgUVIxT2JqID0gQ0lmclF1ZXN0aW9uUmVmMShMaW5lKQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoUVIxT2JqLkdldEhlYWRlcigpLA0KPiAo Y3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCj4gDQo+ICsgICAgICAgIFFSMU9i ai5TZXRRdWVzdGlvbklkKFFJZCwgUU5hbWUsIExpbmUpDQo+IA0KPiArICAgICAgICBjdHguRXhw SW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHgu RXhwSW5mbw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJl ZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcnVsZXJlZkV4cC4NCj4gDQo+ICsgICAgZGVm IHZpc2l0UnVsZXJlZkV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlJ1bGVyZWZFeHBDb250 ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIFJST2JqID0gQ0lmclJ1 bGVSZWYoTGluZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFJST2JqLkdl dEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudA0KPiA9PSAwKSwgTGluZSkNCj4gDQo+ ICsgICAgICAgIFJ1bGVJZCA9DQo+IHNlbGYuX19DVmZyUnVsZXNEQi5HZXRSdWxlSWQoc2VsZi5f X1RyYW5zSWQoY3R4LlN0cmluZ0lkZW50aWZpZXIoKSkpDQo+IA0KPiArICAgICAgICBSUk9iai5T ZXRSdWxlSWQoUnVsZUlkKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCAr PSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8NCj4gDQo+ICsN Cj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZy U3ludGF4UGFyc2VyI3N0cmluZ3JlZjFFeHAuDQo+IA0KPiArICAgIGRlZiB2aXNpdFN0cmluZ3Jl ZjFFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5TdHJpbmdyZWYxRXhwQ29udGV4dCk6DQo+ IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNlbGYu dmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBSZWZTdHJpbmdJZCA9IHNlbGYuX19U cmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBTUjFPYmogPSBDSWZyU3RyaW5n UmVmMShMaW5lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoU1IxT2JqLkdl dEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudA0KPiA9PSAwKSwgTGluZSkNCj4gDQo+ ICsgICAgICAgIFNSMU9iai5TZXRTdHJpbmdJZChSZWZTdHJpbmdJZCkNCj4gDQo+ICsgICAgICAg IGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGN0eC5FeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBw YXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNwdXNodGhpc0V4cC4NCj4gDQo+ ICsgICAgZGVmIHZpc2l0UHVzaHRoaXNFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5QdXNo dGhpc0V4cENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+ IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgVE9i aiA9IENJZnJUaGlzKExpbmUpDQo+IA0KPiArICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChU T2JqLkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudA0KPiA9PSAwKSwgTGluZSkN Cj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlz aXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzZWN1cml0eUV4cC4N Cj4gDQo+ICsgICAgZGVmIHZpc2l0U2VjdXJpdHlFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNl ci5TZWN1cml0eUV4cENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5s aW5lDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAg ICAgU09iaiA9IENJZnJTZWN1cml0eShMaW5lKQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX1NhdmVP cEhkckNvbmQoU09iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPT0g MCksIExpbmUpDQo+IA0KPiArICAgICAgICBTT2JqLlNldFBlcm1pc3Npb25zKGN0eC5ndWlkRGVm aW5pdGlvbigpLkd1aWQpDQo+IA0KPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9 IDENCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguRXhwSW5mbw0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjbnVtZXJpY1ZhclN0b3JlVHlwZS4NCj4gDQo+ICsgICAgZGVmIHZpc2l0TnVtZXJpY1ZhclN0 b3JlVHlwZShzZWxmLA0KPiBjdHg6VmZyU3ludGF4UGFyc2VyLk51bWVyaWNWYXJTdG9yZVR5cGVD b250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr ICAgICAgICBpZiBjdHguTnVtZXJpY1NpemVPbmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5WYXJUeXBlID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfMQ0KPiANCj4gKyAgICAgICAg aWYgY3R4Lk51bWVyaWNTaXplVHdvKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHgu VmFyVHlwZSA9IEVGSV9JRlJfTlVNRVJJQ19TSVpFXzINCj4gDQo+ICsgICAgICAgIGlmIGN0eC5O dW1lcmljU2l6ZUZvdXIoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYXJUeXBl ID0gRUZJX0lGUl9OVU1FUklDX1NJWkVfNA0KPiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWVyaWNT aXplRWlnaHQoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5WYXJUeXBlID0gRUZJ X0lGUl9OVU1FUklDX1NJWkVfOA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5W YXJUeXBlDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVl IHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNnZXRFeHAuDQo+IA0KPiArICAgIGRlZiB2aXNp dEdldEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkdldEV4cENvbnRleHQpOg0KPiANCj4g KyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0 Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LkJhc2VJbmZvLlZhclN0b3JlSWQg PT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAjIHN1cHBvcnQgRGF0ZS9UaW1lIHF1ZXN0aW9uDQo+ IA0KPiArICAgICAgICAgICAgVmFySWRTdHIgPSBjdHgudmZyU3RvcmFnZVZhcklkKCkuVmFySWRT dHINCj4gDQo+ICsgICAgICAgICAgICBRSWQsIE1hc2ssIFFUeXBlID0gc2VsZi5fX0NWZnJRdWVz dGlvbkRCLkdldFF1ZXN0aW9uSWQoTm9uZSwNCj4gVmFySWRTdHIsIEVGSV9RVUVTSU9OX1RZUEUu UVVFU1RJT05fTk9STUFMKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIChRSWQgPT0gRUZJX1FVRVNU SU9OX0lEX0lOVkFMSUQpIG9yIChNYXNrID09IDApIG9yIChRVHlwZSA9PQ0KPiBFRklfUVVFU0lP Tl9UWVBFLlFVRVNUSU9OX05PUk1BTCk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19F cnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiBMaW5l LCAiR2V0L1NldCBvcGNvZGUgY2FuJ3QgZ2V0IHRoZSBlbm91Z2ggdmFyc3RvcmUgaW5mb3JtYXRp b24iKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUuUVVF U1RJT05fREFURToNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUg PSBFRklfSUZSX1RZUEVfREFURQ0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgUVR5cGUgPT0gRUZJ X1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FOg0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHgu QmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9USU1FDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgaWYgTWFzayA9PSBEQVRFX1lFQVJfQklUTUFTSzoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgY3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDANCj4gDQo+ICsgICAgICAgICAgICBlbGlm IE1hc2sgPT0gREFURV9EQVlfQklUTUFTSzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkJh c2VJbmZvLlZhck9mZnNldCA9IDMNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIE1hc2sgPT0gVElN RV9IT1VSX0JJVE1BU0s6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJP ZmZzZXQgPSAwDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJTUVfTUlOVVRFX0JJ VE1BU0s6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAx DQo+IA0KPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJTUVfU0VDT05EX0JJVE1BU0s6DQo+ IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAyDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFu ZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+IExpbmUsICJHZXQv U2V0IG9wY29kZSBjYW4ndCBnZXQgdGhlIGVub3VnaCB2YXJzdG9yZSBpbmZvcm1hdGlvbiIpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIFZhclR5cGUg PSBFRklfSUZSX1RZUEVfVU5ERUZJTkVEDQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LkZMQUdT KCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmFyVHlwZSA9IGN0eC5udW1lcmlj VmFyU3RvcmVUeXBlKCkuVmFyVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIChn Q1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShjdHguQmFzZUluZm8uVmFyU3RvcmVJZCkg PT0NCj4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfTkFNRSkgYW5kIChW YXJUeXBlID09DQo+IEVGSV9JRlJfVFlQRV9VTkRFRklORUQpOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBP UlRFRCwNCj4gTGluZSwgIkdldC9TZXQgb3Bjb2RlIGRvbid0IHN1cHBvcnQgbmFtZSBzdHJpbmci KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgIT0gRUZJX0lGUl9UWVBF X1VOREVGSU5FRDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5cGUg PSBWYXJUeXBlDQo+IA0KPiArICAgICAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiBn Q1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShjdHguQmFzZUluZm8u VmFyVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihSZXR1 cm5Db2RlLCBMaW5lLCAiR2V0L1NldCBvcGNvZGUgY2FuJ3QgZ2V0DQo+IHZhciB0eXBlIHNpemUi KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplID0gU2l6 ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiBnQ1Zm clZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShjdHguQmFzZUluZm8uVmFy VHlwZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNvZGUs IExpbmUsICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdmFyDQo+IHR5cGUgc2l6ZSIpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgaWYgU2l6ZSAhPSBjdHguQmFzZUluZm8uVmFyVG90YWxT aXplOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gTGluZSwgIkdldC9TZXQgb3Bjb2RlIGRv bid0IHN1cHBvcnQgZGF0YSBhcnJheSIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBjdHguR09i aiA9IENJZnJHZXQoTGluZSkNCj4gDQo+ICsgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKGN0 eC5HT2JqLkdldEhlYWRlcigpLA0KPiAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGlu ZSkNCj4gDQo+ICsgICAgICAgIGN0eC5HT2JqLlNldFZhckluZm8oY3R4LkJhc2VJbmZvKQ0KPiAN Cj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICByZXR1cm4gY3R4LkdPYmoNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3ZmckV4cHJlc3Np b25Db25zdGFudC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lvbkNvbnN0YW50KHNl bGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvbkNvbnN0YW50Q29udGV4dCk6 DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBpZiBjdHguVHJ1ZVN5bWJvbCgp ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgVE9iaiA9IENJZnJUcnVlKExpbmUpDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNvbmQoVE9iai5HZXRIZWFkZXIoKSwgKGN0 eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPT0gMCksIExpbmUpDQo+IA0KPiArICAgICAgICAgICAg Y3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBj dHguRmFsc2VTeW1ib2woKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIEZPYmogPSBDSWZy RmFsc2UoTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChGT2Jq LkdldEhlYWRlcigpLCAoY3R4LkV4cEluZm8uRXhwT3BDb3VudA0KPiA9PSAwKSwgTGluZSkNCj4g DQo+ICsgICAgICAgICAgICBjdHguRXhwSW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIGN0eC5PbmUoKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIE9P YmogPSBDSWZyT25lKExpbmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX1NhdmVPcEhkckNv bmQoT09iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4gPT0gMCksIExp bmUpDQo+IA0KPiArICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBpZiBjdHguT25lcygpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgT09iaiA9IENJZnJPbmVzKExpbmUpDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX1Nh dmVPcEhkckNvbmQoT09iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQNCj4g PT0gMCksIExpbmUpDQo+IA0KPiArICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCAr PSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguWmVybygpICE9IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgWk9iaiA9IENJZnJaZXJvKExpbmUpDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fX1NhdmVPcEhkckNvbmQoWk9iai5HZXRIZWFkZXIoKSwgKGN0eC5FeHBJbmZvLkV4cE9w Q291bnQNCj4gPT0gMCksIExpbmUpDQo+IA0KPiArICAgICAgICAgICAgY3R4LkV4cEluZm8uRXhw T3BDb3VudCArPSAxDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBjdHguVW5kZWZpbmVkKCkg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBVT2JqID0gQ0lmclVuZGVmaW5lZChMaW5lKQ0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFVPYmouR2V0SGVhZGVyKCks IChjdHguRXhwSW5mby5FeHBPcENvdW50DQo+ID09IDApLCBMaW5lKQ0KPiANCj4gKyAgICAgICAg ICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg aWYgY3R4LlZlcnNpb24oKSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIFZPYmogPSBDSWZy VmVyc2lvbihMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFZP YmouR2V0SGVhZGVyKCksIChjdHguRXhwSW5mby5FeHBPcENvdW50DQo+ID09IDApLCBMaW5lKQ0K PiANCj4gKyAgICAgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgaWYgY3R4Lk51bWJlcigpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgVTY0T2JqID0gQ0lmclVpbnQ2NChMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgIFU2NE9iai5T ZXRWYWx1ZShzZWxmLl9fVHJhbnNOdW0oY3R4Lk51bWJlcigpKSkNCj4gDQo+ICsgICAgICAgICAg ICBzZWxmLl9fU2F2ZU9wSGRyQ29uZChVNjRPYmouR2V0SGVhZGVyKCksDQo+IChjdHguRXhwSW5m by5FeHBPcENvdW50ID09IDApLCBMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgIGN0eC5FeHBJbmZv LkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5FeHBJ bmZvDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciN2ZnJFeHByZXNzaW9uVW5hcnlPcC4NCj4gDQo+ICsg ICAgZGVmIHZpc2l0VmZyRXhwcmVzc2lvblVuYXJ5T3Aoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBh cnNlci5WZnJFeHByZXNzaW9uVW5hcnlPcENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgcmV0dXJu IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMg VmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNsZW5ndGhFeHAu DQo+IA0KPiArICAgIGRlZiB2aXNpdExlbmd0aEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2Vy Lkxlbmd0aEV4cENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5l DQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAg Y3R4LkxPYmogPSBDSWZyTGVuZ3RoKExpbmUpDQo+IA0KPiArICAgICAgICBjdHguRXhwSW5mby5F eHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTE9iag0KPiANCj4gKw0K PiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJz ZXIjYml0d2lzZW5vdEV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0Qml0d2lzZW5vdEV4cChzZWxm LCBjdHg6VmZyU3ludGF4UGFyc2VyLkJpdHdpc2Vub3RFeHBDb250ZXh0KToNCj4gDQo+ICsgICAg ICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxk cmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5CV05PYmogPSBDSWZyQml0V2lzZU5vdChMaW5l KQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArICAg ICAgICByZXR1cm4gY3R4LkJXTk9iag0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjcXVlc3Rpb24yM3Jl ZkV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0UXVlc3Rpb24yM3JlZkV4cChzZWxmLA0KPiBjdHg6 VmZyU3ludGF4UGFyc2VyLlF1ZXN0aW9uMjNyZWZFeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAg IExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgVHlwZSA9IDB4MQ0KPiANCj4g KyAgICAgICAgRGV2aWNlUGF0aCA9IEVGSV9TVFJJTkdfSURfSU5WQUxJRA0KPiANCj4gKyAgICAg ICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGlmIGN0eC5EZXZpY2VQ YXRoKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBUeXBlID0gMHgyDQo+IA0KPiArICAg ICAgICAgICAgRGV2aWNlUGF0aCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBpZiBjdHguVXVpZCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgVHlwZSA9IDB4Mw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgVHlwZSA9PSAweDE6 DQo+IA0KPiArICAgICAgICAgICAgUVIyT2JqID0gQ0lmclF1ZXN0aW9uUmVmMihMaW5lKQ0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFFSMk9iai5HZXRIZWFkZXIoKSwN Cj4gKGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgPT0gMCksIExpbmUpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBpZiBUeXBlID09IDB4MjoNCj4gDQo+ICsgICAgICAgICAgICBRUjNfMk9iaiA9IENJ ZnJRdWVzdGlvblJlZjNfMihMaW5lKQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BI ZHJDb25kKFFSM18yT2JqLkdldEhlYWRlcigpLA0KPiAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9 PSAwKSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAgICBRUjNfMk9iai5TZXREZXZpY2VQYXRoKERl dmljZVBhdGgpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBUeXBlID09IDB4MzoNCj4gDQo+ ICsgICAgICAgICAgICBRUjNfM09iaiA9IENJZnJRdWVzdGlvblJlZjNfMyhMaW5lKQ0KPiANCj4g KyAgICAgICAgICAgIHNlbGYuX19TYXZlT3BIZHJDb25kKFFSM18zT2JqLkdldEhlYWRlcigpLA0K PiAoY3R4LkV4cEluZm8uRXhwT3BDb3VudCA9PSAwKSwgTGluZSkNCj4gDQo+ICsgICAgICAgICAg ICBRUjNfM09iai5TZXREZXZpY2VQYXRoKERldmljZVBhdGgpDQo+IA0KPiArICAgICAgICAgICAg UVIzXzNPYmouU2V0R3VpZChjdHguZ3VpZERlZmluaXRpb24oKS5HdWlkKQ0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkV4cEluZm8NCj4gDQo+ICsNCj4gDQo+ICsNCj4g DQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2Vy I3N0cmluZ3JlZjJFeHAuDQo+IA0KPiArICAgIGRlZiB2aXNpdFN0cmluZ3JlZjJFeHAoc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5TdHJpbmdyZWYyRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAg ICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJl bihjdHgpDQo+IA0KPiArICAgICAgICBjdHguU1IyT2JqID0gQ0lmclN0cmluZ1JlZjIoTGluZSkN Cj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAg ICAgcmV0dXJuIGN0eC5TUjJPYmoNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBWaXNp dCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3RvYm9vbEV4cC4NCj4g DQo+ICsgICAgZGVmIHZpc2l0VG9ib29sRXhwKHNlbGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVG9i b29sRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBjdHgu VEJPYmogPSBDSWZyVG9Cb29sZWFuKExpbmUpDQo+IA0KPiArICAgICAgICBjdHguRXhwSW5mby5F eHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguVEJPYmoNCj4gDQo+ICsN Cj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFy c2VyI3Rvc3RyaW5nRXhwLg0KPiANCj4gKyAgICBkZWYgdmlzaXRUb3N0cmluZ0V4cChzZWxmLCBj dHg6VmZyU3ludGF4UGFyc2VyLlRvc3RyaW5nRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBM aW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+IA0KPiArICAgICAgICBjdHguVFNPYmogPSBDSWZyVG9TdHJpbmcoTGluZSkNCj4gDQo+ ICsgICAgICAgIEZtdCA9IHNlbGYuX19UcmFuc051bShjdHguTnVtYmVyKCkpDQo+IA0KPiArICAg ICAgICBjdHguVFNPYmouU2V0Rm9ybWF0KEZtdCkNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZv LkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5UU09iag0KPiANCj4g Kw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBW ZnJTeW50YXhQYXJzZXIjdW5pbnRFeHAuDQo+IA0KPiArICAgIGRlZiB2aXNpdFVuaW50RXhwKHNl bGYsIGN0eDpWZnJTeW50YXhQYXJzZXIuVW5pbnRFeHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAg IExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVu KGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5UVU9iaiA9IENJZnJUb1VpbnQoTGluZSkNCj4gDQo+ ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgcmV0 dXJuIGN0eC5UVU9iag0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFy c2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjdG91cHBlckV4cC4NCj4gDQo+ICsg ICAgZGVmIHZpc2l0VG91cHBlckV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlRvdXBwZXJF eHBDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4g KyAgICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5UVU9i aiA9IENJZnJUb1VwcGVyKExpbmUpDQo+IA0KPiArICAgICAgICBjdHguRXhwSW5mby5FeHBPcENv dW50ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguVFVPYmoNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3RvbHdlckV4cC4NCj4gDQo+ICsgICAgZGVmIHZpc2l0VG9sd2VyRXhwKHNlbGYsIGN0 eDpWZnJTeW50YXhQYXJzZXIuVG9sd2VyRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5l ID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgp DQo+IA0KPiArICAgICAgICBjdHguVExPYmogPSBDSWZyVG9Mb3dlcihMaW5lKQ0KPiANCj4gKyAg ICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArICAgICAgICByZXR1cm4g Y3R4LlRMT2JqDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0 cmVlIHByb2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNzZXRFeHAuDQo+IA0KPiArICAgIGRlZiB2 aXNpdFNldEV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlNldEV4cENvbnRleHQpOg0KPiAN Cj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBzZWxmLnZp c2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgaWYgY3R4LkJhc2VJbmZvLlZhclN0b3Jl SWQgPT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAjIHN1cHBvcnQgRGF0ZS9UaW1lIHF1ZXN0aW9u DQo+IA0KPiArICAgICAgICAgICAgVmFySWRTdHIgPSBjdHgudmZyU3RvcmFnZVZhcklkKCkuVmFy SWRTdHINCj4gDQo+ICsgICAgICAgICAgICBRSWQsIE1hc2ssIFFUeXBlID0gc2VsZi5fX0NWZnJR dWVzdGlvbkRCLkdldFF1ZXN0aW9uSWQoTm9uZSwNCj4gVmFySWRTdHIsIEVGSV9RVUVTSU9OX1RZ UEUuUVVFU1RJT05fTk9STUFMKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIChRSWQgPT0gRUZJX1FV RVNUSU9OX0lEX0lOVkFMSUQpIG9yIChNYXNrID09IDApIG9yIChRVHlwZSA9PQ0KPiBFRklfUVVF U0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTCk6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYu X19FcnJvckhhbmRsZXIoVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOU1VQUE9SVEVELA0KPiBM aW5lLCAiR2V0L1NldCBvcGNvZGUgY2FuJ3QgZ2V0IHRoZSBlbm91Z2ggdmFyc3RvcmUgaW5mb3Jt YXRpb24iKQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFFUeXBlID09IEVGSV9RVUVTSU9OX1RZUEUu UVVFU1RJT05fREFURToNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5 cGUgPSBFRklfSUZSX1RZUEVfREFURQ0KPiANCj4gKyAgICAgICAgICAgIGVsaWYgUVR5cGUgPT0g RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FOg0KPiANCj4gKyAgICAgICAgICAgICAgICBj dHguQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9USU1FDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICAgICAgaWYgTWFzayA9PSBEQVRFX1lFQVJfQklUTUFTSzoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgY3R4LkJhc2VJbmZvLlZhck9mZnNldCA9IDANCj4gDQo+ICsgICAgICAgICAgICBl bGlmIE1hc2sgPT0gREFURV9EQVlfQklUTUFTSzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4 LkJhc2VJbmZvLlZhck9mZnNldCA9IDMNCj4gDQo+ICsgICAgICAgICAgICBlbGlmIE1hc2sgPT0g VElNRV9IT1VSX0JJVE1BU0s6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5W YXJPZmZzZXQgPSAwDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJTUVfTUlOVVRF X0JJVE1BU0s6DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQg PSAxDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBNYXNrID09IFRJTUVfU0VDT05EX0JJVE1BU0s6 DQo+IA0KPiArICAgICAgICAgICAgICAgIGN0eC5CYXNlSW5mby5WYXJPZmZzZXQgPSAyDQo+IA0K PiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9y SGFuZGxlcihWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fVU5TVVBQT1JURUQsDQo+IExpbmUsICJH ZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdGhlIGVub3VnaCB2YXJzdG9yZSBpbmZvcm1hdGlvbiIp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIFZhclR5 cGUgPSBFRklfSUZSX1RZUEVfVU5ERUZJTkVEDQo+IA0KPiArICAgICAgICAgICAgaWYgY3R4LkZM QUdTKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmFyVHlwZSA9IGN0eC5udW1l cmljVmFyU3RvcmVUeXBlKCkuVmFyVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlm IChnQ1ZmckRhdGFTdG9yYWdlLkdldFZhclN0b3JlVHlwZShjdHguQmFzZUluZm8uVmFyU3RvcmVJ ZCkgPT0NCj4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfTkFNRSkgYW5k IChWYXJUeXBlID09DQo+IEVGSV9JRlJfVFlQRV9VTkRFRklORUQpOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTlNV UFBPUlRFRCwNCj4gTGluZSwgIkdldC9TZXQgb3Bjb2RlIGRvbid0IHN1cHBvcnQgbmFtZSBzdHJp bmciKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhclR5cGUgIT0gRUZJX0lGUl9U WVBFX1VOREVGSU5FRDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgY3R4LkJhc2VJbmZvLlZhclR5 cGUgPSBWYXJUeXBlDQo+IA0KPiArICAgICAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0K PiBnQ1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShjdHguQmFzZUlu Zm8uVmFyVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0Vycm9ySGFuZGxlcihS ZXR1cm5Db2RlLCBMaW5lLCAiR2V0L1NldCBvcGNvZGUgY2FuJ3QgZ2V0DQo+IHZhciB0eXBlIHNp emUiKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBjdHguQmFzZUluZm8uVmFyVG90YWxTaXplID0g U2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIFNpemUsIFJldHVybkNvZGUgPQ0KPiBn Q1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVTaXplQnlEYXRhVHlwZShjdHguQmFzZUluZm8u VmFyVHlwZSkNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFJldHVybkNv ZGUsIExpbmUsICJHZXQvU2V0IG9wY29kZSBjYW4ndCBnZXQgdmFyDQo+IHR5cGUgc2l6ZSIpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgaWYgU2l6ZSAhPSBjdHguQmFzZUluZm8uVmFyVG90 YWxTaXplOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fRXJyb3JIYW5kbGVyKFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9VTlNVUFBPUlRFRCwNCj4gTGluZSwgIkdldC9TZXQgb3Bjb2Rl IGRvbid0IHN1cHBvcnQgZGF0YSBhcnJheSIpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBjdHgu VFNPYmogPSBDSWZyU2V0KExpbmUpDQo+IA0KPiArICAgICAgICBzZWxmLl9fU2F2ZU9wSGRyQ29u ZChjdHguVFNPYmouR2V0SGVhZGVyKCksDQo+IChjdHguRXhwSW5mby5FeHBPcENvdW50ID09IDAp LCBMaW5lKQ0KPiANCj4gKyAgICAgICAgY3R4LlRTT2JqLlNldFZhckluZm8oY3R4LkJhc2VJbmZv KQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICByZXR1cm4gY3R4LlRTT2JqDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr ICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5DQo+IFZmclN5bnRheFBhcnNlciN2 ZnJFeHByZXNzaW9uVGVybmFyeU9wLg0KPiANCj4gKyAgICBkZWYgdmlzaXRWZnJFeHByZXNzaW9u VGVybmFyeU9wKHNlbGYsDQo+IGN0eDpWZnJTeW50YXhQYXJzZXIuVmZyRXhwcmVzc2lvblRlcm5h cnlPcENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYudmlzaXRDaGlsZHJlbihj dHgpDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHBy b2R1Y2VkIGJ5IFZmclN5bnRheFBhcnNlciNjb25kaXRpb25hbEV4cC4NCj4gDQo+ICsgICAgZGVm IHZpc2l0Q29uZGl0aW9uYWxFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5Db25kaXRpb25h bEV4cENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgTGluZSA9IGN0eC5zdGFydC5saW5lDQo+IA0K PiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0KPiANCj4gKyAgICAgICAgY3R4LkNP YmogPSBDSWZyQ29uZGl0aW9uYWwoTGluZSkNCj4gDQo+ICsgICAgICAgIGN0eC5FeHBJbmZvLkV4 cE9wQ291bnQgKz0gMQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIGN0eC5DT2JqDQo+IA0KPiArDQo+ IA0KPiArDQo+IA0KPiArICAgICMgVmlzaXQgYSBwYXJzZSB0cmVlIHByb2R1Y2VkIGJ5IFZmclN5 bnRheFBhcnNlciNmaW5kRXhwLg0KPiANCj4gKyAgICBkZWYgdmlzaXRGaW5kRXhwKHNlbGYsIGN0 eDpWZnJTeW50YXhQYXJzZXIuRmluZEV4cENvbnRleHQpOg0KPiANCj4gKyAgICAgICAgTGluZSA9 IGN0eC5zdGFydC5saW5lDQo+IA0KPiArICAgICAgICBzZWxmLnZpc2l0Q2hpbGRyZW4oY3R4KQ0K PiANCj4gKyAgICAgICAgRk9iaiA9IENJZnJGaW5kKExpbmUpDQo+IA0KPiArICAgICAgICBGb3Jt YXQgPSAwDQo+IA0KPiArICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY3R4LmZpbmRGb3Jt YXQoKSkpOg0KPiANCj4gKyAgICAgICAgICAgIEZvcm1hdCA9IGN0eC5maW5kRm9ybWF0KGkpLkZv cm1hdA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgRk9iai5TZXRGb3JtYXQoRm9ybWF0KQ0KPiAN Cj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAxDQo+IA0KPiArICAgICAgICBy ZXR1cm4gRk9iag0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2Ug dHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjZmluZEZvcm1hdC4NCj4gDQo+ICsgICAg ZGVmIHZpc2l0RmluZEZvcm1hdChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLkZpbmRGb3JtYXRD b250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiAr ICAgICAgICBpZiBjdHguU2Vuc2l0aXZlKCkgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBj dHguRm9ybWF0ID0gMHgwMA0KPiANCj4gKyAgICAgICAgZWxpZiBjdHguSW5zZW5zaXRpdmUoKSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGN0eC5Gb3JtYXQgPSAweDAxDQo+IA0KPiArICAg ICAgICByZXR1cm4gY3R4LkZvcm1hdA0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICAjIFZp c2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50YXhQYXJzZXIjbWlkRXhwLg0KPiAN Cj4gKyAgICBkZWYgdmlzaXRNaWRFeHAoc2VsZiwgY3R4OlZmclN5bnRheFBhcnNlci5NaWRFeHBD b250ZXh0KToNCj4gDQo+ICsgICAgICAgIExpbmUgPSBjdHguc3RhcnQubGluZQ0KPiANCj4gKyAg ICAgICAgc2VsZi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGN0eC5NT2JqID0g Q0lmck1pZChMaW5lKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BDb3VudCArPSAx DQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4Lk1PYmoNCj4gDQo+ICsNCj4gDQo+ICsgICAgIyBW aXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4UGFyc2VyI3Rva2VuRXhwLg0K PiANCj4gKyAgICBkZWYgdmlzaXRUb2tlbkV4cChzZWxmLCBjdHg6VmZyU3ludGF4UGFyc2VyLlRv a2VuRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4g DQo+ICsgICAgICAgIHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBjdHgu VE9iaiA9IENJZnJUb2tlbihMaW5lKQ0KPiANCj4gKyAgICAgICAgY3R4LkV4cEluZm8uRXhwT3BD b3VudCArPSAxDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LlRPYmoNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3NwYW5FeHAuDQo+IA0KPiArICAgIGRlZiB2aXNpdFNwYW5FeHAoc2VsZiwgY3R4OlZm clN5bnRheFBhcnNlci5TcGFuRXhwQ29udGV4dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4 LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAgIEZsYWdzID0gMA0KPiANCj4gKyAgICAgICAgc2Vs Zi52aXNpdENoaWxkcmVuKGN0eCkNCj4gDQo+ICsgICAgICAgIGZvciBGbGFnc0N0eCBpbiBjdHgu c3BhbkZsYWdzKCk6DQo+IA0KPiArICAgICAgICAgICAgRmxhZ3MgfD0gRmxhZ3NDdHguRmxhZw0K PiANCj4gKyAgICAgICAgY3R4LlNPYmogPSBDSWZyU3BhbihMaW5lKQ0KPiANCj4gKyAgICAgICAg Y3R4LlNPYmouU2V0RmxhZ3MoRmxhZ3MpDQo+IA0KPiArICAgICAgICBjdHguRXhwSW5mby5FeHBP cENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguU09iag0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICAjIFZpc2l0IGEgcGFyc2UgdHJlZSBwcm9kdWNlZCBieSBWZnJTeW50 YXhQYXJzZXIjc3BhbkZsYWdzLg0KPiANCj4gKyAgICBkZWYgdmlzaXRTcGFuRmxhZ3Moc2VsZiwg Y3R4OlZmclN5bnRheFBhcnNlci5TcGFuRmxhZ3NDb250ZXh0KToNCj4gDQo+ICsgICAgICAgIHNl bGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBpZiBjdHguTnVtYmVyKCkgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBjdHguRmxhZyA9IHNlbGYuX19UcmFuc051bShjdHgu TnVtYmVyKCkpDQo+IA0KPiArICAgICAgICBlbGlmIGN0eC5MYXN0Tm9uTWF0Y2goKSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGN0eC5GbGFnID0gMHgwMA0KPiANCj4gKyAgICAgICAgZWxp ZiBjdHguRmlyc3ROb25NYXRjaCgpICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgY3R4LkZs YWcgPSAweDAxDQo+IA0KPiArICAgICAgICByZXR1cm4gY3R4LkZsYWcNCj4gDQo+ICsNCj4gDQo+ ICsNCj4gDQo+ICsgICAgIyBWaXNpdCBhIHBhcnNlIHRyZWUgcHJvZHVjZWQgYnkgVmZyU3ludGF4 UGFyc2VyI3ZmckV4cHJlc3Npb25NYXAuDQo+IA0KPiArICAgIGRlZiB2aXNpdFZmckV4cHJlc3Np b25NYXAoc2VsZiwNCj4gY3R4OlZmclN5bnRheFBhcnNlci5WZnJFeHByZXNzaW9uTWFwQ29udGV4 dCk6DQo+IA0KPiArICAgICAgICBMaW5lID0gY3R4LnN0YXJ0LmxpbmUNCj4gDQo+ICsgICAgICAg IHNlbGYudmlzaXRDaGlsZHJlbihjdHgpDQo+IA0KPiArICAgICAgICBjdHguTU9iaiA9IENJZnJN YXAoTGluZSkNCj4gDQo+ICsgICAgICAgIEVPYmogPSBDSWZyRW5kKCkNCj4gDQo+ICsgICAgICAg IExpbmUgPSAoTm9uZSBpZiBjdHguc3RvcCBpcyBOb25lIGVsc2UgY3R4LnN0b3ApLmxpbmUNCj4g DQo+ICsgICAgICAgIEVPYmouU2V0TGluZU5vKExpbmUpDQo+IA0KPiArICAgICAgICBjdHguRXhw SW5mby5FeHBPcENvdW50ICs9IDENCj4gDQo+ICsgICAgICAgIHJldHVybiBjdHguTU9iag0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgX19HZXRUZXh0KHNlbGYsIGN0eCk6DQo+IA0KPiArICAgICAg ICBpZiBjdHggPT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gTm9uZQ0KPiANCj4g KyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gY3R4LnRleHQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIF9fVHJhbnNJZChzZWxmLCBTdHJpbmdJZGVudGlmaWVyVG9rZW4s IERlZmF1bHRWYWx1ZT1Ob25lKToNCj4gDQo+ICsgICAgICAgIGlmIFN0cmluZ0lkZW50aWZpZXJU b2tlbiA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBEZWZhdWx0VmFsdWUNCj4g DQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIHN0cihTdHJpbmdJ ZGVudGlmaWVyVG9rZW4pDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX1RyYW5zTnVtKHNlbGYs IE51bWJlclRva2VuLCBEZWZhdWx0VmFsdWU9MCk6DQo+IA0KPiArICAgICAgICBpZiBOdW1iZXJU b2tlbiA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBEZWZhdWx0VmFsdWUNCj4g DQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgU3RyVG9rZW4gPSBzdHIoTnVt YmVyVG9rZW4pDQo+IA0KPiArICAgICAgICAgICAgaWYgJzB4JyBpbiBTdHJUb2tlbjoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgTnVtYmVyVG9rZW4gPSBpbnQoU3RyVG9rZW4sIDApDQo+IA0KPiAr ICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgTnVtYmVyVG9rZW4gPSBp bnQoU3RyVG9rZW4pDQo+IA0KPiArICAgICAgICAjIGVycm9yIGhhbmRsZSAsIHZhbHVlIGlzIHRv byBsYXJnZSB0byBzdG9yZQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIE51bWJlclRva2VuDQo+IA0K PiArDQo+IA0KPiArICAgIGRlZiBfX0Fzc2lnblF1ZXN0aW9uS2V5KHNlbGYsIE9wT2JqLCBLZXkp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgS2V5ID09IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuDQo+IA0KPiArICAgICAgICBpZiBPcE9iai5HZXRGbGFncygpICYgRUZJX0lG Ul9GTEFHX0NBTExCQUNLOg0KPiANCj4gKyAgICAgICAgICAgICMgaWYgdGhlIHF1ZXN0aW9uIGlz IG5vdCBDQUxMQkFDSyBpZ25vcmUgdGhlIGtleS4NCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9f Q1ZmclF1ZXN0aW9uREIuVXBkYXRlUXVlc3Rpb25JZChPcE9iai5HZXRRdWVzdGlvbklkKCksDQo+ IEtleSkNCj4gDQo+ICsgICAgICAgICAgICBPcE9iai5TZXRRdWVzdGlvbklkKEtleSkNCj4gDQo+ ICsgICAgICAgIHJldHVybg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19FeHRyYWN0T3JpZ2lu YWxUZXh0KHNlbGYsIGN0eCk6DQo+IA0KPiArICAgICAgICBTb3VyY2UgPSBjdHguc3RhcnQuZ2V0 VG9rZW5Tb3VyY2UoKQ0KPiANCj4gKyAgICAgICAgSW5wdXRTdHJlYW0gPSBTb3VyY2UuaW5wdXRT dHJlYW0NCj4gDQo+ICsgICAgICAgIHN0YXJ0LCBzdG9wICA9IGN0eC5zdGFydC5zdGFydCwgY3R4 LnN0b3Auc3RvcA0KPiANCj4gKyAgICAgICAgVGV4dCA9IElucHV0U3RyZWFtLmdldFRleHQoc3Rh cnQsIHN0b3ApDQo+IA0KPiArICAgICAgICByZXR1cm4gVGV4dC5yZXBsYWNlKCdcbicsICcnKQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19DaGVja0R1cGxpY2F0ZURlZmF1bHRWYWx1ZShzZWxm LCBEZWZhdWx0SWQsIExpbmUsIFRva2VuVmFsdWUpOg0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4g cmFuZ2UoMCwgbGVuKHNlbGYuX19Vc2VkRGVmYXVsdEFycmF5KSk6DQo+IA0KPiArICAgICAgICAg ICAgaWYgc2VsZi5fX1VzZWREZWZhdWx0QXJyYXlbaV0gPT0gRGVmYXVsdElkOg0KPiANCj4gKw0K PiBnQ1ZmckVycm9ySGFuZGxlLkhhbmRsZVdhcm5pbmcoRUZJX1ZGUl9XQVJOSU5HX0NPREUuVkZS X1dBUk5JTg0KPiBHX0RFRkFVTFRfVkFMVUVfUkVERUZJTkVELCBMaW5lLCBUb2tlblZhbHVlKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgbGVuKHNlbGYuX19Vc2VkRGVmYXVsdEFycmF5KSA+ PSBFRklfSUZSX01BWF9ERUZBVUxUX1RZUEUgLSAxOg0KPiANCj4gKw0KPiBnQ1ZmckVycm9ySGFu ZGxlLkhhbmRsZUVycm9yKFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUiwNCj4g TGluZSwgVG9rZW5WYWx1ZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuX19Vc2VkRGVm YXVsdEFycmF5LmFwcGVuZChEZWZhdWx0SWQpDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX0Vy cm9ySGFuZGxlcihzZWxmLCBSZXR1cm5Db2RlLCBMaW5lTnVtLCBUb2tlblZhbHVlPU5vbmUpOg0K PiANCj4gKyAgICAgICAgc2VsZi5fX1BhcnNlclN0YXR1cyArPSBnQ1ZmckVycm9ySGFuZGxlLkhh bmRsZUVycm9yKFJldHVybkNvZGUsDQo+IExpbmVOdW0sIFRva2VuVmFsdWUpDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBfX0NvbXBhcmVFcnJvckhhbmRsZXIoc2VsZiwgUmV0dXJuQ29kZSwgRXhw ZWN0ZWRDb2RlLCBMaW5lTnVtLA0KPiBUb2tlblZhbHVlPU5vbmUsIEVycm9yTXNnPU5vbmUpOg0K PiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBFeHBlY3RlZENvZGU6DQo+IA0KPiArICAg ICAgICAgICAgc2VsZi5fX1BhcnNlclN0YXR1cyArPSAxDQo+IA0KPiArICAgICAgICAgICAgZ0NW ZnJFcnJvckhhbmRsZS5QcmludE1zZyhMaW5lTnVtLCAnRXJyb3InLCBFcnJvck1zZywgVG9rZW5W YWx1ZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9fSW5zZXJ0Q2hpbGQoc2VsZiwgUGFyZW50 Tm9kZTogVmZyVHJlZU5vZGUsIENoaWxkQ3R4KToNCj4gDQo+ICsgICAgICAgIGlmIENoaWxkQ3R4 ICE9IE5vbmUgYW5kIENoaWxkQ3R4Lk5vZGUgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBQ YXJlbnROb2RlLmluc2VydENoaWxkKENoaWxkQ3R4Lk5vZGUpDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBHZXRSb290KHNlbGYpOg0KPiANCj4gKyAgICAgICAgcmV0dXJuIHNlbGYuX19Sb290DQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRRdWVzdGlvbkRCKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgcmV0dXJuIHNlbGYuX19DVmZyUXVlc3Rpb25EQg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg RHVtcEpzb24oc2VsZiwgRmlsZU5hbWUpOg0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAg ICAgICAgICAgIHdpdGggb3BlbihGaWxlTmFtZSwgJ3cnKSBhcyBmOg0KPiANCj4gKyAgICAgICAg ICAgICAgICBmLndyaXRlKCd7XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg IFwiRGF0YVN0cnVjdFwiIDoge1xuJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcE5vZGUgPSBn Q1ZmclZhckRhdGFUeXBlREIuR2V0RGF0YVR5cGVMaXN0KCkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICBcInt9XCIgOiBbXG4nLmZvcm1hdChzdHIocE5vZGUuVHlwZU5hbWUpKSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIEZOb2RlID0gcE5vZGUuTWVtYmVycw0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgd2hpbGUgRk5vZGUgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICB7XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJOYW1lXCI6IFwie31cIixcbicuZm9ybWF0KHN0cihG Tm9kZS5GaWVsZE5hbWUpKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBGTm9k ZS5BcnJheU51bSA+IDA6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgXCJUeXBlXCI6DQo+IFwie31be31dXCIsXG4nLmZvcm1hdChzdHIoRk5vZGUu RmllbGRUeXBlLlR5cGVOYW1lKSxzdHIoRk5vZGUuQXJyYXlOdW0pKSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgIFwiVHlwZVwiOg0KPiBcInt9XCIsXG4nLmZvcm1hdChzdHIoRk5v ZGUuRmllbGRUeXBlLlR5cGVOYW1lKSkpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICBcIk9mZnNldFwiOiB7fVxuJy5mb3JtYXQoc3RyKEZOb2RlLk9mZnNl dCkpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIEZOb2RlLk5leHQgPT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgfVxu JykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICB9LCBcbicpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgRk5vZGUgPSBGTm9kZS5OZXh0DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBpZiBwTm9kZS5OZXh0ID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgIF1cbicpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBdLFxuJykNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgIH0sXG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgIFwiRGF0YVN0cnVjdEF0dHJpYnV0ZVwiOiB7XG4nKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBwTm9kZSA9IGdDVmZyVmFyRGF0YVR5cGVEQi5HZXREYXRhVHlwZUxpc3QoKQ0KPiANCj4g KyAgICAgICAgICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgIFwie31cIicuZm9ybWF0KHN0cihwTm9kZS5UeXBlTmFtZSkp ICsgJzoge1xuJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAg XCJBbGlnbm1lbnRcIjoge30sXG4nLmZvcm1hdChzdHIocE5vZGUuQWxpZ24pKSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJUb3RhbFNpemVcIjoge31cbicu Zm9ybWF0KHN0cihwTm9kZS5Ub3RhbFNpemUpKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IGlmIHBOb2RlLk5leHQgPT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICB9XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZWxzZToNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICB9LFxuJykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgIH0sXG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRl KCcgIFwiVmFyRGVmaW5lXCIgOiB7XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwVnNOb2Rl ID0gZ0NWZnJEYXRhU3RvcmFnZS5HZXRCdWZmZXJWYXJTdG9yZUxpc3QoKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICB3aGlsZSBwVnNOb2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgXCJ7fVwiJy5mb3JtYXQoc3RyKHBWc05vZGUuVmFyU3RvcmVOYW1l KSkgKyAnOiB7XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICBcIlR5cGVcIjoNCj4gXCJ7fVwiLFxuJy5mb3JtYXQoc3RyKHBWc05vZGUuRGF0YVR5cGUuVHlw ZU5hbWUpKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJB dHRyaWJ1dGVzXCI6IHt9LFxuJy5mb3JtYXQoc3RyKHBWc05vZGUuQXR0cmlidXRlcykpKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhclN0b3JlSWRcIjoN Cj4ge30sXG4nLmZvcm1hdChzdHIocFZzTm9kZS5WYXJTdG9yZUlkKSkpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmVuZG9yR3VpZFwiOiAnICsgJ1wie30s IHt9LA0KPiB7fSwnLmZvcm1hdCgnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhMSksJzB4JXgnJShw VnNOb2RlLkd1aWQuRGF0YTIpLA0KPiAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhMykpIFwNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICsgJyB7ICcgKyAgJ3t9LCB7fSwge30sIHt9LCB7fSwg e30sIHt9LA0KPiB7fScuZm9ybWF0KCcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGE0WzBdKSwNCj4g JzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbMV0pLCAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRh NFsyXSksDQo+ICcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGE0WzNdKSwgXA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbNF0pLA0KPiAnMHgleCcl KHBWc05vZGUuR3VpZC5EYXRhNFs1XSksICcweCV4JyUocFZzTm9kZS5HdWlkLkRhdGE0WzZdKSwN Cj4gJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbN10pKSArICcgfX1cIlxuJykNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIGlmIHBWc05vZGUuTmV4dCA9PSBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIH1cbicpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgIH0sXG4nKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcFZzTm9k ZSA9IHBWc05vZGUuTmV4dA0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIH0sXG4n KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIFwiRGF0YVwiIDogW1xuJykNCj4g DQo+ICsgICAgICAgICAgICAgICAgcFZzTm9kZSA9IGdDVmZyQnVmZmVyQ29uZmlnLkdldFZhckl0 ZW1MaXN0KCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgd2hpbGUgcFZzTm9kZSAhPSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgcFZzTm9kZS5JZCA9PSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIHBWc05vZGUgPSBwVnNOb2RlLk5leHQNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgcEluZm9Ob2RlID0gcFZzTm9kZS5JbmZvU3RyTGlzdA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgd2hpbGUgcEluZm9Ob2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAge1xuJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgIFwiVmVuZG9yR3VpZFwiOiAnICsgJ1wie30sIHt9LA0KPiB7fSwn LmZvcm1hdCgnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhMSksJzB4JXgnJShwVnNOb2RlLkd1aWQu RGF0YTIpLA0KPiAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhMykpIFwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fSwN Cj4ge30nLmZvcm1hdCgnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhNFswXSksDQo+ICcweCV4JyUo cFZzTm9kZS5HdWlkLkRhdGE0WzFdKSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbMl0pLA0K PiAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhNFszXSksIFwNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAnMHgleCclKHBWc05vZGUuR3VpZC5EYXRhNFs0XSksDQo+ICcweCV4JyUocFZz Tm9kZS5HdWlkLkRhdGE0WzVdKSwgJzB4JXgnJShwVnNOb2RlLkd1aWQuRGF0YTRbNl0pLA0KPiAn MHgleCclKHBWc05vZGUuR3VpZC5EYXRhNFs3XSkpICsgJyB9fVwiLFxuJykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFyTmFtZVwiOg0KPiBcInt9 XCIsXG4nLmZvcm1hdChzdHIocFZzTm9kZS5OYW1lKSkpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIkRlZmF1bHRTdG9yZVwiOg0KPiBcInt9XCIsXG4n LmZvcm1hdChzdHIocFZzTm9kZS5JZCkpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgXCJTaXplXCI6IFwie31cIixcbicuZm9ybWF0KHN0cihwSW5mb05v ZGUuV2lkdGgpKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgIFwiT2Zmc2V0XCI6IHt9LFxuJy5mb3JtYXQoc3RyKHBJbmZvTm9kZS5PZmZzZXQpKSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAjZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6 IFwie31cIlxuJy5mb3JtYXQoc3RyKHBJbmZvTm9kZS5WYWx1ZSkpKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmIHBJbmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQRV9EQVRFOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFs dWVcIjoNCj4gXCJ7fS97fS97fVwiXG4nLmZvcm1hdChwSW5mb05vZGUuVmFsdWUuZGF0ZS5ZZWFy LA0KPiBwSW5mb05vZGUuVmFsdWUuZGF0ZS5Nb250aCwgcEluZm9Ob2RlLlZhbHVlLmRhdGUuRGF5 KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBwSW5mb05vZGUuVHlwZSA9PSBF RklfSUZSX1RZUEVfVElNRToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgICBcIlZhbHVlXCI6DQo+IFwie306e306e31cIlxuJy5mb3JtYXQocEluZm9O b2RlLlZhbHVlLnRpbWUuSG91ciwNCj4gcEluZm9Ob2RlLlZhbHVlLnRpbWUuTWludXRlLCBwSW5m b05vZGUuVmFsdWUudGltZS5TZWNvbmQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGlmIHBJbmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQRV9SRUY6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWYWx1ZVwiOg0KPiBcInt9O3t9 OycuZm9ybWF0KHBJbmZvTm9kZS5WYWx1ZS5yZWYuUXVlc3Rpb25JZCwNCj4gcEluZm9Ob2RlLlZh bHVlLnJlZi5Gb3JtSWQpICsgICd7JyArICd7fSwge30sDQo+IHt9LCcuZm9ybWF0KCcweCV4JyUo cEluZm9Ob2RlLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhMSksJzB4JXgnJShwSW5mbw0KPiBO b2RlLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhMiksDQo+ICcweCV4JyUocEluZm9Ob2RlLlZh bHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhMykpIFwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sDQo+IHt9Jy5m b3JtYXQoJzB4JXgnJShwSW5mb05vZGUuVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzBdKSwN Cj4gJzB4JXgnJShwSW5mb05vZGUuVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzFdKSwNCj4g JzB4JXgnJShwSW5mb05vZGUuVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzJdKSwNCj4gJzB4 JXgnJShwSW5mb05vZGUuVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzNdKSwgXA0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMHgleCclKHBJbmZvTm9kZS5WYWx1ZS5yZWYu Rm9ybVNldEd1aWQuRGF0YTRbNF0pLA0KPiAnMHgleCclKHBJbmZvTm9kZS5WYWx1ZS5yZWYuRm9y bVNldEd1aWQuRGF0YTRbNV0pLA0KPiAnMHgleCclKHBJbmZvTm9kZS5WYWx1ZS5yZWYuRm9ybVNl dEd1aWQuRGF0YTRbNl0pLA0KPiAnMHgleCclKHBJbmZvTm9kZS5WYWx1ZS5yZWYuRm9ybVNldEd1 aWQuRGF0YTRbN10pKSArICcgfX0nICsNCj4gJzt7fVxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVl LnJlZi5EZXZpY2VQYXRoKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBwSW5m b05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfU1RSSU5HOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjoNCj4gXCJ7fVwiXG4nLmZv cm1hdChwSW5mb05vZGUuVmFsdWUuc3RyaW5nKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBpZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6 IFwie31cIlxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnU4KSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBpZiBwSW5mb05vZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVf MTY6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAg XCJWYWx1ZVwiOiBcInt9XCJcbicuZm9ybWF0KHBJbmZvTm9kZS5WYWx1ZS51MTYpKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBJbmZvTm9kZS5UeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICBcIlZhbHVlXCI6IFwie31cIlxuJy5mb3JtYXQocEluZm9Ob2RlLlZhbHVlLnUz MikpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgaWYgcEluZm9Ob2RlLlR5cGUgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgIFwiVmFsdWVcIjogXCJ7fVwiXG4nLmZvcm1hdChwSW5mb05v ZGUuVmFsdWUudTY0KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZiBwSW5mb05v ZGUuVHlwZSA9PSBFRklfSUZSX1RZUEVfQk9PTEVBTjoNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlZhbHVlXCI6IFwie31cIlxuJy5mb3JtYXQo cEluZm9Ob2RlLlZhbHVlLmIpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgIH0sXG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IHBJbmZvTm9kZSA9IHBJbmZvTm9kZS5OZXh0DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBw VnNOb2RlID0gcFZzTm9kZS5OZXh0DQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgIHtcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWZW5k b3JHdWlkXCI6IFwiTkFcIixcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgXCJWYXJOYW1lXCI6IFwiTkFcIixcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgXCJEZWZhdWx0U3RvcmVcIjogXCJOQVwiLFxuJykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICBcIlNpemVcIjogMCxcbicpDQo+IA0KPiArICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJPZmZzZXRcIjogMCxcbicpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgXCJWYWx1ZVwiOiBcIjB4MDBcIlxuJykN Cj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgfVxuJykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgZi53cml0ZSgnICBdXG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndy aXRlKCd9XG4nKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGYuY2xvc2UoKQ0KPiANCj4g KyAgICAgICAgZXhjZXB0Og0KPiANCj4gKyAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcigiVmZy Q29tcGlsZXIiLCBGSUxFX09QRU5fRkFJTFVSRSwgIkZpbGUgb3Blbg0KPiBmYWlsZWQgZm9yICVz IiAlIEZpbGVOYW1lLCBOb25lKQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRHVtcFlhbWwoc2Vs ZiwgUm9vdCwgRmlsZU5hbWUpOg0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAg ICAgIHdpdGggb3BlbihGaWxlTmFtZSwgJ3cnKSBhcyBmOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBmLndyaXRlKCcjIyBETyBOT1QgUkVNT1ZFIC0tIFZGUiBNb2RlXG4nKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBzZWxmLkR1bXBZYW1sRGZzKFJvb3QsIGYpDQo+IA0KPiArICAgICAgICAgICAg Zi5jbG9zZSgpDQo+IA0KPiArICAgICAgICBleGNlcHQ6DQo+IA0KPiArICAgICAgICAgICAgRWRr TG9nZ2VyLmVycm9yKCJWZnJDb21waWxlciIsIEZJTEVfT1BFTl9GQUlMVVJFLCAiRmlsZSBvcGVu DQo+IGZhaWxlZCBmb3IgJXMiICUgRmlsZU5hbWUsIE5vbmUpDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBEdW1wWWFtbERmcyhzZWxmLCBSb290LCBmKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGlmIFJvb3QuT3BDb2RlICE9IE5vbmU6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgaWYg Um9vdC5PcENvZGUgPT0gRUZJX0lGUl9GT1JNX1NFVF9PUDoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53 cml0ZSgnRm9ybXNldDpcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgR3Vp ZDogIHsnICsgJ3t9LCB7fSwNCj4ge30sJy5mb3JtYXQoJzB4JXgnJShJbmZvLkd1aWQuRGF0YTEp LCcweCV4JyUoSW5mby5HdWlkLkRhdGEyKSwNCj4gJzB4JXgnJShJbmZvLkd1aWQuRGF0YTMpKSBc DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwg e30sIHt9LCB7fSwNCj4ge30nLmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhNFswXSksICcw eCV4JyUoSW5mby5HdWlkLkRhdGE0WzFdKSwNCj4gJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbMl0p LCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFszXSksIFwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICcweCV4JyUoSW5mby5HdWlkLkRhdGE0WzRdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRb NV0pLA0KPiAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs2XSksICcweCV4JyUoSW5mby5HdWlkLkRh dGE0WzddKSkgKyAnIH19XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgIFRp dGxlOiAge30gICMgVGl0bGUgU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLkZvcm1TZXRUaXRsZSkp DQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgSGVscDogIHt9ICAjIEhlbHAgU1RS SU5HX0lEXG4nLmZvcm1hdChJbmZvLkhlbHApKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmb3Ig R3VpZCBpbiBSb290LkRhdGEuR2V0Q2xhc3NHdWlkKCk6DQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCcgIENsYXNzR3VpZDogIHsnICsgJ3t9LCB7fSwNCj4ge30sJy5mb3JtYXQo JzB4JXgnJShHdWlkLkRhdGExKSwnMHgleCclKEd1aWQuRGF0YTIpLCAnMHgleCclKEd1aWQuRGF0 YTMpKQ0KPiBcDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30s IHt9LCB7fSwge30sIHt9LCB7fSwge30nLmZvcm1hdCgnMHgleCclKEd1aWQuRGF0YTRbMF0pLA0K PiAnMHgleCclKEd1aWQuRGF0YTRbMV0pLCAnMHgleCclKEd1aWQuRGF0YTRbMl0pLCAnMHgleCcl KEd1aWQuRGF0YTRbM10pLCBcDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAnMHgleCclKEd1 aWQuRGF0YTRbNF0pLCAnMHgleCclKEd1aWQuRGF0YTRbNV0pLA0KPiAnMHgleCclKEd1aWQuRGF0 YTRbNl0pLCAnMHgleCclKEd1aWQuRGF0YTRbN10pKSArICcgfX1cbicpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9WQVJTVE9SRV9PUDoNCj4g DQo+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAtIHZhcnN0b3JlOlxuJykNCj4gDQo+ICsgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgdmFyaWQ6ICB7fVxuJy5mb3JtYXQoSW5mby5WYXJTdG9y ZUlkKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgbmFtZTogIHt9XG4n LmZvcm1hdChJbmZvLk5hbWUpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICBzaXplOiAge31cbicuZm9ybWF0KEluZm8uU2l6ZSkpDQo+IA0KPiArICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgIGd1aWQ6ICB7JyArICd7fSwge30sDQo+IHt9LCcuZm9ybWF0KCcweCV4 JyUoSW5mby5HdWlkLkRhdGExKSwnMHgleCclKEluZm8uR3VpZC5EYXRhMiksDQo+ICcweCV4JyUo SW5mby5HdWlkLkRhdGEzKSkgXA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyAr ICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sDQo+IHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZv Lkd1aWQuRGF0YTRbMF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFsxXSksDQo+ICcweCV4JyUo SW5mby5HdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbM10pLCBcDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs0XSksICcweCV4 JyUoSW5mby5HdWlkLkRhdGE0WzVdKSwNCj4gJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNl0pLCAn MHgleCclKEluZm8uR3VpZC5EYXRhNFs3XSkpICsgJyB9fVxuJykNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1ZBUlNUT1JFX0VGSV9PUDoNCj4g DQo+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAtIGVmaXZhcnN0b3JlOlxuJykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgdmFyaWQ6ICB7fVxuJy5mb3JtYXQoSW5mby5WYXJT dG9yZUlkKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgbmFtZTogIHt9 XG4nLmZvcm1hdChJbmZvLk5hbWUpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICBzaXplOiAge31cbicuZm9ybWF0KEluZm8uU2l6ZSkpDQo+IA0KPiArICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgIGd1aWQ6ICB7JyArICd7fSwge30sDQo+IHt9LCcuZm9ybWF0KCcw eCV4JyUoSW5mby5HdWlkLkRhdGExKSwnMHgleCclKEluZm8uR3VpZC5EYXRhMiksDQo+ICcweCV4 JyUoSW5mby5HdWlkLkRhdGEzKSkgXA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKyAnIHsg JyArICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sDQo+IHt9Jy5mb3JtYXQoJzB4JXgnJShJ bmZvLkd1aWQuRGF0YTRbMF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFsxXSksDQo+ICcweCV4 JyUoSW5mby5HdWlkLkRhdGE0WzJdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbM10pLCBcDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs0XSksICcw eCV4JyUoSW5mby5HdWlkLkRhdGE0WzVdKSwNCj4gJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNl0p LCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs3XSkpICsgJyB9fVxuJykNCj4gDQo+ICsgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgYXR0cmlidXRlOiAge31cbicuZm9ybWF0KEluZm8uQXR0 cmlidXRlcykpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0g RUZJX0lGUl9WQVJTVE9SRV9OQU1FX1ZBTFVFX09QOg0KPiANCj4gKyAgICAgICAgICAgICAgICBJ bmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRl KCcgIC0gbmFtZXZhbHVldmFyc3RvcmU6XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICB2YXJpZDogIHt9XG4nLmZvcm1hdChJbmZvLlZhclN0b3JlSWQpKQ0KPiANCj4g KyAgICAgICAgICAgICAgICAjIGYud3JpdGUoJyAgICAgIG5hbWU6ICB7fVxuJy5mb3JtYXQoSW5m by5OYW1lKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgZ3VpZDogIHsn ICsgJ3t9LCB7fSwNCj4ge30sJy5mb3JtYXQoJzB4JXgnJShJbmZvLkd1aWQuRGF0YTEpLCcweCV4 JyUoSW5mby5HdWlkLkRhdGEyKSwNCj4gJzB4JXgnJShJbmZvLkd1aWQuRGF0YTMpKSBcDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9 LCB7fSwNCj4ge30nLmZvcm1hdCgnMHgleCclKEluZm8uR3VpZC5EYXRhNFswXSksICcweCV4JyUo SW5mby5HdWlkLkRhdGE0WzFdKSwNCj4gJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbMl0pLCAnMHgl eCclKEluZm8uR3VpZC5EYXRhNFszXSksIFwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICcw eCV4JyUoSW5mby5HdWlkLkRhdGE0WzRdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNV0pLA0K PiAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs2XSksICcweCV4JyUoSW5mby5HdWlkLkRhdGE0Wzdd KSkgKyAnIH19XG4nKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2Rl ID09IEVGSV9JRlJfRk9STV9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3Qu RGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAtIGZvcm06 XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgY29uZGl0aW9uOiAge31c bicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgRm9ybUlkOiAge30gICMgRm9ybUlkIFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5G b3JtSWQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICBGb3JtVGl0bGU6 ICB7fSAgIyBGb3JtVGl0bGUNCj4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLkZvcm1UaXRsZSkp DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9G T1JNX01BUF9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgSW5mbywgTWV0aG9kTWFwTGlzdCA9 IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAt IGZvcm1tYXA6XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgY29uZGl0 aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgRm9ybUlkOiAge30gICMgRm9ybUlkIFNUUklOR19JRFxuJy5mb3Jt YXQoSW5mby5Gb3JtSWQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmb3IgTWV0aG9kTWFwIGlu ICBNZXRob2RNYXBMaXN0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgbWFwdGl0bGU6ICB7fVxuJy5mb3JtYXQoTWV0aG9kTWFwLk1ldGhvZFRpdGxlKSkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIG1hcGd1aWQ6ICB7JyArICd7fSwg e30sDQo+IHt9LCcuZm9ybWF0KCcweCV4JyUoTWV0aG9kTWFwLk1ldGhvZElkZW50aWZpZXIuRGF0 YTEpLCcweCV4JyUoTWV0aG9kDQo+IE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGEyKSwNCj4gJzB4 JXgnJShNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllci5EYXRhMykpIFwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICsgJyB7ICcgKyAgJ3t9LCB7fSwge30sIHt9LCB7fSwge30sIHt9LA0KPiB7 fScuZm9ybWF0KCcweCV4JyUoTWV0aG9kTWFwLk1ldGhvZElkZW50aWZpZXIuRGF0YTRbMF0pLA0K PiAnMHgleCclKE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGE0WzFdKSwNCj4gJzB4JXgn JShNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllci5EYXRhNFsyXSksDQo+ICcweCV4JyUoTWV0aG9k TWFwLk1ldGhvZElkZW50aWZpZXIuRGF0YTRbM10pLCBcDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICAnMHgleCclKE1ldGhvZE1hcC5NZXRob2RJZGVudGlmaWVyLkRhdGE0WzRdKSwNCj4gJzB4 JXgnJShNZXRob2RNYXAuTWV0aG9kSWRlbnRpZmllci5EYXRhNFs1XSksDQo+ICcweCV4JyUoTWV0 aG9kTWFwLk1ldGhvZElkZW50aWZpZXIuRGF0YTRbNl0pLA0KPiAnMHgleCclKE1ldGhvZE1hcC5N ZXRob2RJZGVudGlmaWVyLkRhdGE0WzddKSkgKyAnIH19XG4nKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfSU1BR0VfT1A6DQo+IA0KPiArICAg ICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+IA0KPiArICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgIC0gaW1hZ2U6XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlv bikpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBJZDogIHt9ICMg SW1hZ2VJZFxuJy5mb3JtYXQoSW5mby5JZCkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg aWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9SVUxFX09QOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndy aXRlKCcgICAgICAtIHJ1bGU6XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNv bmRpdGlvbiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBSdWxlSWQ6ICB7fSAjIFJ1bGVJZFxu Jy5mb3JtYXQoSW5mby5SdWxlSWQpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFJv b3QuT3BDb2RlID09IEVGSV9JRlJfU1VCVElUTEVfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAg IEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgIC0gc3VidGl0bGU6XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290 LkNvbmRpdGlvbiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQo+IA0K PiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0 ZW1lbnQgUHJvbXB0DQo+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5TdGF0ZW1lbnQuUHJvbXB0 KSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZS X1RFWFRfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5m bygpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gdGV4dDpcbicpDQo+ IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicu Zm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIHByb21wdDogIHt9ICAjIFN0YXRlbWVudCBQcm9tcHQNCj4gU1RSSU5HX0lEXG4n LmZvcm1hdChJbmZvLlN0YXRlbWVudC5Qcm9tcHQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwDQo+IFNUUklOR19J RFxuJy5mb3JtYXQoSW5mby5TdGF0ZW1lbnQuSGVscCkpDQo+IA0KPiArICAgICAgICAgICAgICAg IGYud3JpdGUoJyAgICAgICAgICB0ZXh0OiAge30gICMgU3RhdGVtZW50IEhlbHANCj4gU1RSSU5H X0lEXG4nLmZvcm1hdChJbmZvLlRleHRUd28pKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfQUNUSU9OX09QOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAtIGFjdGlvbjpcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJv b3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHByb21wdDogIHt9ICAjIFN0 YXRlbWVudCBQcm9tcHQNCj4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRl ci5Qcm9tcHQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVs cDogIHt9ICAjIFN0YXRlbWVudCBIZWxwDQo+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVz dGlvbi5IZWFkZXIuSGVscCkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgICBxdWVzdGlvbmlkOiAge30gICMgUXVlc3Rpb24NCj4gUXVlc3Rpb25JZFxuJy5mb3JtYXQo SW5mby5RdWVzdGlvbi5RdWVzdGlvbklkKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgIHZhcnN0b3JlaWQ6ICB7fSAgIyBRdWVzdGlvbg0KPiBWYXJTdG9yZUlkXG4n LmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSWQpKQ0KPiANCj4gKyAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgZmxhZ3M6ICB7fSAgIyBRdWVzdGlvbg0KPiBGbGFnc1xuJy5m b3JtYXQoSW5mby5RdWVzdGlvbi5GbGFncykpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICBxdWVzdGlvbmNvbmZpZzogIHt9ICAjDQo+IFF1ZXN0aW9uQ29uZmlnXG4n LmZvcm1hdChJbmZvLlF1ZXN0aW9uQ29uZmlnKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX09ORV9PRl9PUDoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgLSBvbmVvZjpcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJv b3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHByb21wdDog IHt9ICAjIFN0YXRlbWVudCBQcm9tcHQNCj4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0 aW9uLkhlYWRlci5Qcm9tcHQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwDQo+IFNUUklOR19JRFxuJy5mb3JtYXQo SW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICBxdWVzdGlvbmlkOiAge30gICMgUXVlc3Rpb24NCj4gUXVlc3Rpb25JZFxu Jy5mb3JtYXQoSW5mby5RdWVzdGlvbi5RdWVzdGlvbklkKSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIHZhcnN0b3JlaWQ6ICB7fSAgIyBRdWVzdGlvbg0KPiBWYXJT dG9yZUlkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSWQpKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZTogIHt9ICAjIFF1ZXN0aW9uIFZh ck5hbWUNCj4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSW5mby5W YXJOYW1lKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcm9m ZnNldDogIHt9ICAjIFF1ZXN0aW9uDQo+IFZhck9mZnNldFxuJy5mb3JtYXQoSW5mby5RdWVzdGlv bi5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgIGZsYWdzOiAge30gICMgUXVlc3Rpb24NCj4gRmxhZ3NcbicuZm9ybWF0KElu Zm8uUXVlc3Rpb24uRmxhZ3MpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFJvb3Qu T3BDb2RlID09IEVGSV9JRlJfT05FX09GX09QVElPTl9PUDoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgICAgIC0gb3B0aW9uOiAge31cbicuZm9ybWF0KEluZm8uT3B0aW9uKSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0gTm9uZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgY29uZGl0aW9uOiAge31c bicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgICAgICBvcHRpb24gZmxhZzogIHt9XG4nLmZvcm1hdChJbmZv LkZsYWdzKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBv cHRpb24gdHlwZTogIHt9XG4nLmZvcm1hdChJbmZvLlR5cGUpKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gQ0lmck9uZU9mT3B0aW9uOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9EQVRF Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAg b3B0aW9uIHZhbHVlOg0KPiB7fS97fS97fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5kYXRlLlllYXIs IEluZm8uVmFsdWUuZGF0ZS5Nb250aCwNCj4gSW5mby5WYWx1ZS5kYXRlLkRheSkpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX1RJTUU6DQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBvcHRp b24gdmFsdWU6DQo+IHt9Ont9Ont9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnRpbWUuSG91ciwgSW5m by5WYWx1ZS50aW1lLk1pbnV0ZSwNCj4gSW5mby5WYWx1ZS50aW1lLlNlY29uZCkpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX1JFRjoNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIG9wdGlv biB2YWx1ZToNCj4ge307e307Jy5mb3JtYXQoSW5mby5WYWx1ZS5yZWYuUXVlc3Rpb25JZCwgSW5m by5WYWx1ZS5yZWYuRm9ybUlkKSArICAneycgKyAne30sIHt9LA0KPiB7fSwnLmZvcm1hdCgnMHgl eCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGExKSwnMHgleCclKEluZm8uVmFsdWUu cg0KPiBlZi5Gb3JtU2V0R3VpZC5EYXRhMiksICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNl dEd1aWQuRGF0YTMpKSBcDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyAr ICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sDQo+IHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZv LlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFswXSksDQo+ICcweCV4JyUoSW5mby5WYWx1ZS5y ZWYuRm9ybVNldEd1aWQuRGF0YTRbMV0pLA0KPiAnMHgleCclKEluZm8uVmFsdWUucmVmLkZvcm1T ZXRHdWlkLkRhdGE0WzJdKSwNCj4gJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5E YXRhNFszXSksIFwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAnMHgleCclKEluZm8u VmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzRdKSwNCj4gJzB4JXgnJShJbmZvLlZhbHVlLnJl Zi5Gb3JtU2V0R3VpZC5EYXRhNFs1XSksDQo+ICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNl dEd1aWQuRGF0YTRbNl0pLA0KPiAnMHgleCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRh dGE0WzddKSkgKyAnIH19JyArDQo+ICc7e31cbicuZm9ybWF0KEluZm8uVmFsdWUucmVmLkRldmlj ZVBhdGgpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9J RlJfVFlQRV9TVFJJTkc6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgICAgICBvcHRpb24gdmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5zdHJp bmcpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJf VFlQRV9OVU1fU0laRV84Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUudTgp KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV8xNjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgICAgIG9wdGlvbiB2YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnUxNikp DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBF X05VTV9TSVpFXzMyOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUudTMyKSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9PSBFRklfSUZSX1RZUEVf TlVNX1NJWkVfNjQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgICAgICAgICBvcHRpb24gdmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS51NjQpKQ0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9C T09MRUFOOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAg ICAgICAgb3B0aW9uIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUuYikpDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyT25lT2ZP cHRpb24yOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAg ICB2YWx1ZTogIHsnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgVmFsdWVUeXBlID0gUm9v dC5EYXRhLkdldFZhbHVlVHlwZSgpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBWYWx1 ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX1NUUklORzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0u c3RyaW5nKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fScuZm9y bWF0KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnN0cmluZykgKyAnfVxuJykNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlVHlwZSA9PSBFRklfSUZSX1RZ UEVfTlVNX1NJWkVfODoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBy YW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0udTgpKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4o SW5mby5WYWx1ZSktMV0udTgpICsgJ31cbicpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzE2Og0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJbmZvLlZhbHVl KS0xKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5m b3JtYXQoSW5mby5WYWx1ZVtpXS51MTYpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGYud3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5mby5WYWx1ZSktMV0udTE2KSAr ICd9XG4nKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBl ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8zMjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0u dTMyKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fScuZm9ybWF0 KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnUzMikgKyAnfVxuJykNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVN X1NJWkVfNjQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo MCwgbGVuKEluZm8uVmFsdWUpLTEpOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCd7fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ldLnU2NCkpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1hdChJbmZvLlZhbHVlW2xlbihJbmZv LlZhbHVlKS0xXS51NjQpICsgJ31cbicpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX0JPT0xFQU46DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKEluZm8uVmFsdWUpLTEpOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fSwnLmZvcm1hdChJ bmZvLlZhbHVlW2ldLmIpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo J3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5mby5WYWx1ZSktMV0uYikgKyAnfVxuJykNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklf SUZSX0RFRkFVTFRfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEu R2V0SW5mbygpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAtIGRl ZmF1bHQ6XG4nKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBj b25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHR5cGU6ICB7fVxuJy5mb3JtYXQoSW5mby5U eXBlKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBkZWZh dWx0SWQ6ICB7fVxuJy5mb3JtYXQoSW5mby5EZWZhdWx0SWQpKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gQ0lmckRlZmF1bHQ6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX0RBVEU6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICB2YWx1ZTogIHt9L3t9 L3t9XG4nLmZvcm1hdChJbmZvLlZhbHVlLmRhdGUuWWVhciwNCj4gSW5mby5WYWx1ZS5kYXRlLk1v bnRoLCBJbmZvLlZhbHVlLmRhdGUuRGF5KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlm IEluZm8uVHlwZSA9PSBFRklfSUZSX1RZUEVfVElNRToNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHZhbHVlOiAge306e306e31cbicuZm9ybWF0 KEluZm8uVmFsdWUudGltZS5Ib3VyLA0KPiBJbmZvLlZhbHVlLnRpbWUuTWludXRlLCBJbmZvLlZh bHVlLnRpbWUuU2Vjb25kKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlw ZSA9PSBFRklfSUZSX1RZUEVfUkVGOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICAgICAgb3B0aW9uIHZhbHVlOg0KPiB7fTt7fTsnLmZvcm1hdChJbmZv LlZhbHVlLnJlZi5RdWVzdGlvbklkLCBJbmZvLlZhbHVlLnJlZi5Gb3JtSWQpICsgICd7JyArICd7 fSwge30sDQo+IHt9LCcuZm9ybWF0KCcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQu RGF0YTEpLCcweCV4JyUoSW5mby5WYWx1ZS5yDQo+IGVmLkZvcm1TZXRHdWlkLkRhdGEyKSwgJzB4 JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhMykpIFwNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30sIHt9LCB7fSwge30sIHt9LCB7fSwN Cj4ge30nLmZvcm1hdCgnMHgleCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzBd KSwNCj4gJzB4JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFsxXSksDQo+ICcw eCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbMl0pLA0KPiAnMHgleCclKElu Zm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzNdKSwgXA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICcweCV4JyUoSW5mby5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbNF0p LA0KPiAnMHgleCclKEluZm8uVmFsdWUucmVmLkZvcm1TZXRHdWlkLkRhdGE0WzVdKSwNCj4gJzB4 JXgnJShJbmZvLlZhbHVlLnJlZi5Gb3JtU2V0R3VpZC5EYXRhNFs2XSksDQo+ICcweCV4JyUoSW5m by5WYWx1ZS5yZWYuRm9ybVNldEd1aWQuRGF0YTRbN10pKSArICcgfX0nICsNCj4gJzt7fVxuJy5m b3JtYXQoSW5mby5WYWx1ZS5yZWYuRGV2aWNlUGF0aCkpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX1NUUklORzoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHZhbHVlOiAge31cbicuZm9y bWF0KEluZm8uVmFsdWUuc3RyaW5nKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIElu Zm8uVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfODoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHZhbHVlOiAge31cbicuZm9ybWF0KElu Zm8uVmFsdWUudTgpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09 IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCcgICAgICAgICAgICAgIHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uVmFsdWUu dTE2KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIEluZm8uVHlwZSA9PSBFRklfSUZS X1RZUEVfTlVNX1NJWkVfMzI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgICAgICB2YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLlZhbHVlLnUzMikpDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBJbmZvLlR5cGUgPT0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgICAgICAgdmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS51NjQpKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgaWYgSW5mby5UeXBlID09IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0K PiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgdmFs dWU6ICB7fVxuJy5mb3JtYXQoSW5mby5WYWx1ZS5iKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg ICAgICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IENJZnJEZWZhdWx0MzoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgdmFsdWU6ICB7JykNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIFZhbHVlVHlwZSA9IFJvb3QuRGF0YS5HZXRWYWx1ZVR5cGUo KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBlID09IEVGSV9JRlJfVFlQ RV9TVFJJTkc6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo MCwgbGVuKEluZm8uVmFsdWUpLTEpOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCd7fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ldLnN0cmluZykpDQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1hdChJbmZvLlZhbHVlW2xlbihJ bmZvLlZhbHVlKS0xXS5zdHJpbmcpICsgJ31cbicpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKEluZm8uVmFs dWUpLTEpOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fSwn LmZvcm1hdChJbmZvLlZhbHVlW2ldLnU4KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCd7fScuZm9ybWF0KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnU4KSAr ICd9XG4nKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBl ID09IEVGSV9JRlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oSW5mby5WYWx1ZSktMSk6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3t9LCcuZm9ybWF0KEluZm8uVmFsdWVbaV0u dTE2KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fScuZm9ybWF0 KEluZm8uVmFsdWVbbGVuKEluZm8uVmFsdWUpLTFdLnUxNikgKyAnfVxuJykNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIFZhbHVlVHlwZSA9PSBFRklfSUZSX1RZUEVfTlVN X1NJWkVfMzI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo MCwgbGVuKEluZm8uVmFsdWUpLTEpOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmLndyaXRlKCd7fSwnLmZvcm1hdChJbmZvLlZhbHVlW2ldLnUzMikpDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30nLmZvcm1hdChJbmZvLlZhbHVlW2xlbihJbmZv LlZhbHVlKS0xXS51MzIpICsgJ31cbicpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBpZiBWYWx1ZVR5cGUgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJbmZvLlZhbHVlKS0x KToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3Jt YXQoSW5mby5WYWx1ZVtpXS51NjQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJ3t9Jy5mb3JtYXQoSW5mby5WYWx1ZVtsZW4oSW5mby5WYWx1ZSktMV0udTY0KSArICd9 XG4nKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgVmFsdWVUeXBlID09 IEVGSV9JRlJfVFlQRV9CT09MRUFOOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZv ciBpIGluIHJhbmdlKDAsIGxlbihJbmZvLlZhbHVlKS0xKToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZi53cml0ZSgne30sJy5mb3JtYXQoSW5mby5WYWx1ZVtpXS5iKSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCd7fScuZm9ybWF0KEluZm8uVmFs dWVbbGVuKEluZm8uVmFsdWUpLTFdLmIpICsgJ31cbicpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgaWYgUm9vdC5PcENvZGUgPT0gRUZJX0lGUl9PUkRFUkVEX0xJU1RfT1A6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+IA0KPiArICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gb3JkZXJlZGxpc3Q6XG4nKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290 LkNvbmRpdGlvbikpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0DQo+IFNUUklOR19JRFxuJy5m b3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCj4gDQo+ICsgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgIGhlbHA6ICB7fSAgIyBTdGF0ZW1lbnQgSGVscA0KPiBTVFJJ TkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHApKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9ICAjIFF1ZXN0aW9u DQo+IFF1ZXN0aW9uSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uUXVlc3Rpb25JZCkpDQo+IA0K PiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMg UXVlc3Rpb24NCj4gVmFyU3RvcmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlk KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIG1heENvbnRhaW5l cnM6ICB7fVxuJy5mb3JtYXQoSW5mby5NYXhDb250YWluZXJzKSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIGZsYWdzOiAge31cbicuZm9ybWF0KEluZm8uUXVlc3Rp b24uRmxhZ3MpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09 IEVGSV9JRlJfTlVNRVJJQ19PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3Qu RGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBu dW1lcmljOlxuJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBjb25k aXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgcHJvbXB0OiAge30gICMgU3RhdGVtZW50IFByb21wdA0K PiBTVFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLlByb21wdCkpDQo+IA0K PiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBoZWxwOiAge30gICMgU3RhdGVt ZW50IEhlbHANCj4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5IZWxw KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6 ICB7fSAgIyBRdWVzdGlvbg0KPiBRdWVzdGlvbklkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1 ZXN0aW9uSWQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFy c3RvcmVpZDogIHt9ICAjIFF1ZXN0aW9uDQo+IFZhclN0b3JlSWRcbicuZm9ybWF0KEluZm8uUXVl c3Rpb24uVmFyU3RvcmVJZCkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg ICAgICB2YXJuYW1lOiAge30gICMgUXVlc3Rpb24gVmFyTmFtZQ0KPiBTVFJJTkdfSURcbicuZm9y bWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck5hbWUpKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyb2Zmc2V0OiAge30gICMgUXVlc3Rpb24NCj4g VmFyT2Zmc2V0XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSW5mby5WYXJPZmZzZXQp KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgZmxhZ3M6ICB7fSAg IyBRdWVzdGlvbg0KPiBGbGFnc1xuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5GbGFncykpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuRGF0YS5HZXRWYXJUeXBlKCkgPT0g RUZJX0lGUl9UWVBFX05VTV9TSVpFXzY0Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53 cml0ZSgnICAgICAgICAgIG1heHZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51NjQuTWF4 VmFsdWUpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIG1p bnZhbHVlOiAge31cbicuZm9ybWF0KEluZm8uRGF0YS51NjQuTWluVmFsdWUpKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHN0ZXA6ICB7fVxuJy5mb3JtYXQo SW5mby5EYXRhLnU2NC5TdGVwKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYg Um9vdC5EYXRhLkdldFZhclR5cGUoKSA9PSBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMzI6DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbWF4dmFsdWU6ICB7fVxu Jy5mb3JtYXQoSW5mby5EYXRhLnUzMi5NYXhWYWx1ZSkpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgbWludmFsdWU6ICB7fVxuJy5mb3JtYXQoSW5mby5EYXRh LnUzMi5NaW5WYWx1ZSkpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAgICAgc3RlcDogIHt9XG4nLmZvcm1hdChJbmZvLkRhdGEudTMyLlN0ZXApKQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290LkRhdGEuR2V0VmFyVHlwZSgpID09IEVGSV9J RlJfVFlQRV9OVU1fU0laRV8xNjoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICBtYXh2YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLkRhdGEudTE2Lk1heFZhbHVl KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBtaW52YWx1 ZTogIHt9XG4nLmZvcm1hdChJbmZvLkRhdGEudTE2Lk1pblZhbHVlKSkNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBzdGVwOiAge31cbicuZm9ybWF0KEluZm8u RGF0YS51MTYuU3RlcCkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3Qu RGF0YS5HZXRWYXJUeXBlKCkgPT0gRUZJX0lGUl9UWVBFX05VTV9TSVpFXzg6DQo+IA0KPiArICAg ICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgbWF4dmFsdWU6ICB7fVxuJy5mb3Jt YXQoSW5mby5EYXRhLnU4Lk1heFZhbHVlKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICBtaW52YWx1ZTogIHt9XG4nLmZvcm1hdChJbmZvLkRhdGEudTguTWlu VmFsdWUpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHN0 ZXA6ICB7fVxuJy5mb3JtYXQoSW5mby5EYXRhLnU4LlN0ZXApKQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfQ0hFQ0tCT1hfT1A6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+IA0KPiArICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gY2hlY2tib3g6XG4nKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNv bmRpdGlvbikpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9t cHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0DQo+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5R dWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIGhlbHA6ICB7fSAgIyBTdGF0ZW1lbnQgSGVscA0KPiBTVFJJTkdfSURcbicuZm9y bWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHApKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9ICAjIFF1ZXN0aW9uDQo+IFF1ZXN0aW9u SWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uUXVlc3Rpb25JZCkpDQo+IA0KPiArICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVlc3Rpb24NCj4g VmFyU3RvcmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcm5hbWU6ICB7fSAgIyBRdWVzdGlv biBWYXJOYW1lDQo+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlu Zm8uVmFyTmFtZSkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2 YXJvZmZzZXQ6ICB7fSAgIyBRdWVzdGlvbg0KPiBWYXJPZmZzZXRcbicuZm9ybWF0KEluZm8uUXVl c3Rpb24uVmFyU3RvcmVJbmZvLlZhck9mZnNldCkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICBmbGFnczogIHt9ICAjIEZsYWdzXG4nLmZvcm1hdChJbmZvLkZsYWdz KSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZS X1RJTUVfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5m bygpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gdGltZTpcbicpDQo+ IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicu Zm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0DQo+IFNUUklOR19J RFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5RdWVzdGlvbklkKSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcnN0b3JlaWQ6ICB7fSAgIyBRdWVzdGlvbg0KPiBW YXJTdG9yZUlkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3JlSWQpKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZToNCj4ge31cbicuZm9ybWF0 KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck5hbWUpKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyb2Zmc2V0Og0KPiB7fVxuJy5mb3JtYXQoSW5mby5R dWVzdGlvbi5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgIHByb21wdDogIHt9ICAjIFN0YXRlbWVudCBQcm9tcHQNCj4gU1RS SU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5Qcm9tcHQpKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBI ZWxwDQo+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuSGVscCkpDQo+ IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmbGFnczogIHt9XG4nLmZv cm1hdChJbmZvLkZsYWdzKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBSb290Lk9w Q29kZSA9PSBFRklfSUZSX0RBVEVfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgIEluZm8gPSBS b290LkRhdGEuR2V0SW5mbygpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAg IC0gZGF0ZTpcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29u ZGl0aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIHF1ZXN0aW9uaWQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJv bXB0DQo+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5RdWVzdGlvbklkKSkNCj4g DQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcnN0b3JlaWQ6ICB7fSAg IyBRdWVzdGlvbg0KPiBWYXJTdG9yZUlkXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLlZhclN0b3Jl SWQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFybmFtZToN Cj4ge31cbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck5hbWUpKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgdmFyb2Zmc2V0Og0KPiB7fVxu Jy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUluZm8uVmFyT2Zmc2V0KSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHByb21wdDogIHt9ICAjIFN0YXRlbWVu dCBQcm9tcHQNCj4gU1RSSU5HX0lEXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkhlYWRlci5Qcm9t cHQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgaGVscDogIHt9 ICAjIFN0YXRlbWVudCBIZWxwDQo+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5I ZWFkZXIuSGVscCkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBm bGFnczogIHt9XG4nLmZvcm1hdChJbmZvLkZsYWdzKSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1NUUklOR19PUDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBzdHJpbmc6XG4nKQ0KPiANCj4gKyAgICAgICAg ICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNv bmRpdGlvbikpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBwcm9t cHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0DQo+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5R dWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIGhlbHA6ICB7fSAgIyBTdGF0ZW1lbnQgSGVscA0KPiBTVFJJTkdfSURcbicuZm9y bWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHApKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9ICAjIFF1ZXN0aW9uDQo+IFF1ZXN0aW9u SWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uUXVlc3Rpb25JZCkpDQo+IA0KPiArICAgICAgICAg ICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30gICMgUXVlc3Rpb24NCj4g VmFyU3RvcmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlkKSkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcm5hbWU6ICB7fSAgIyBRdWVzdGlv biBWYXJOYW1lDQo+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9yZUlu Zm8uVmFyTmFtZSkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2 YXJvZmZzZXQ6ICB7fSAgIyBRdWVzdGlvbg0KPiBWYXJPZmZzZXRcbicuZm9ybWF0KEluZm8uUXVl c3Rpb24uVmFyU3RvcmVJbmZvLlZhck9mZnNldCkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICBmbGFnczogIHt9ICAjIFF1ZXN0aW9uDQo+IEZsYWdzXG4nLmZvcm1h dChJbmZvLlF1ZXN0aW9uLkZsYWdzKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgn ICAgICAgICAgIHN0cmluZ2ZsYWdzOiAge31cbicuZm9ybWF0KEluZm8uRmxhZ3MpKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgc3RyaW5nbWluc2l6ZTogIHt9XG4n LmZvcm1hdChJbmZvLk1pblNpemUpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcg ICAgICAgICAgc3RyaW5nbWF4c2l6ZTogIHt9XG4nLmZvcm1hdChJbmZvLk1heFNpemUpKQ0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfUEFTU1dP UkRfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygp DQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gcGFzc3dvcmQ6XG4nKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4n LmZvcm1hdChSb290LkNvbmRpdGlvbikpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICBwcm9tcHQ6ICB7fSAgIyBTdGF0ZW1lbnQgUHJvbXB0DQo+IFNUUklOR19JRFxu Jy5mb3JtYXQoSW5mby5RdWVzdGlvbi5IZWFkZXIuUHJvbXB0KSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIGhlbHA6ICB7fSAgIyBTdGF0ZW1lbnQgSGVscA0KPiBT VFJJTkdfSURcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHApKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9ICAjIFF1ZXN0 aW9uDQo+IFF1ZXN0aW9uSWRcbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uUXVlc3Rpb25JZCkpDQo+ IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICB2YXJzdG9yZWlkOiAge30g ICMgUXVlc3Rpb24NCj4gVmFyU3RvcmVJZFxuJy5mb3JtYXQoSW5mby5RdWVzdGlvbi5WYXJTdG9y ZUlkKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHZhcm5hbWU6 ICB7fSAgIyBRdWVzdGlvbiBWYXJOYW1lDQo+IFNUUklOR19JRFxuJy5mb3JtYXQoSW5mby5RdWVz dGlvbi5WYXJTdG9yZUluZm8uVmFyTmFtZSkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICB2YXJvZmZzZXQ6ICB7fSAgIyBRdWVzdGlvbg0KPiBWYXJPZmZzZXRcbicu Zm9ybWF0KEluZm8uUXVlc3Rpb24uVmFyU3RvcmVJbmZvLlZhck9mZnNldCkpDQo+IA0KPiArICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmbGFnczogIHt9ICAjIFF1ZXN0aW9uDQo+ IEZsYWdzXG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9uLkZsYWdzKSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgZi53cml0ZSgnICAgICAgICAgIG1pbnNpemU6ICB7fVxuJy5mb3JtYXQoSW5mby5NaW5T aXplKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIG1heHNpemU6 ICB7fVxuJy5mb3JtYXQoSW5mby5NYXhTaXplKSkNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1JFU0VUX0JVVFRPTl9PUDoNCj4g DQo+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSByZXNldGJ1dHRvbjpcbicpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicuZm9ybWF0 KFJvb3QuQ29uZGl0aW9uKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAg ICAgIHByb21wdDogIHt9ICAjIFN0YXRlbWVudCBQcm9tcHQNCj4gU1RSSU5HX0lEXG4nLmZvcm1h dChJbmZvLlN0YXRlbWVudC5Qcm9tcHQpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRl KCcgICAgICAgICAgaGVscDogIHt9ICAjIFN0YXRlbWVudCBIZWxwDQo+IFNUUklOR19JRFxuJy5m b3JtYXQoSW5mby5TdGF0ZW1lbnQuSGVscCkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3Jp dGUoJyAgICAgICAgICBkZWZhdWx0aWQ6ICB7fVxuJy5mb3JtYXQoSW5mby5EZWZhdWx0SWQpKQ0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJfUkVG X09QOg0KPiANCj4gKyAgICAgICAgICAgICAgICBJbmZvID0gUm9vdC5EYXRhLkdldEluZm8oKQ0K PiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAtIGdvdG86XG4nKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZvcm1h dChSb290LkNvbmRpdGlvbikpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHR5 cGUoUm9vdC5EYXRhKSA9PSBDSWZyUmVmNDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYu d3JpdGUoJyAgICAgICAgICBmb3JtaWQ6ICB7fVxuJy5mb3JtYXQoSW5mby5Gb3JtSWQpKQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIGZvcm1zZXRpZDogIHsn ICsgJ3t9LCB7fSwNCj4ge30sJy5mb3JtYXQoJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhMSks JzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhMiksDQo+ICcweCV4JyUoSW5mby5Gb3JtU2V0SWQu RGF0YTMpKSBcDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICArICcgeyAnICsgICd7fSwge30s IHt9LCB7fSwge30sIHt9LCB7fSwNCj4ge30nLmZvcm1hdCgnMHgleCclKEluZm8uRm9ybVNldElk LkRhdGE0WzBdKSwNCj4gJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhNFsxXSksICcweCV4JyUo SW5mby5Gb3JtU2V0SWQuRGF0YTRbMl0pLA0KPiAnMHgleCclKEluZm8uRm9ybVNldElkLkRhdGE0 WzNdKSwgXA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgJzB4JXgnJShJbmZvLkZvcm1TZXRJ ZC5EYXRhNFs0XSksDQo+ICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbNV0pLCAnMHgleCcl KEluZm8uRm9ybVNldElkLkRhdGE0WzZdKSwNCj4gJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRh NFs3XSkpICsgJyB9fVxuJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICBxdWVzdGlvbmlkOiAge31cbicuZm9ybWF0KEluZm8uUXVlc3Rpb25JZCkpDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgZGV2aWNlcGF0aDogIHt9 XG4nLmZvcm1hdChJbmZvLkRldmljZVBhdGgpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg ICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gQ0lmclJlZjM6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBmLndyaXRlKCcgICAgICAgICAgZm9ybWlkOiAge31cbicuZm9ybWF0KEluZm8uRm9y bUlkKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBmb3Jt c2V0aWQ6ICB7JyArICd7fSwge30sDQo+IHt9LCcuZm9ybWF0KCcweCV4JyUoSW5mby5Gb3JtU2V0 SWQuRGF0YTEpLCcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTIpLA0KPiAnMHgleCclKEluZm8u Rm9ybVNldElkLkRhdGEzKSkgXA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyAr ICAne30sIHt9LCB7fSwge30sIHt9LCB7fSwge30sDQo+IHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZv LkZvcm1TZXRJZC5EYXRhNFswXSksDQo+ICcweCV4JyUoSW5mby5Gb3JtU2V0SWQuRGF0YTRbMV0p LCAnMHgleCclKEluZm8uRm9ybVNldElkLkRhdGE0WzJdKSwNCj4gJzB4JXgnJShJbmZvLkZvcm1T ZXRJZC5EYXRhNFszXSksIFwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICcweCV4JyUoSW5m by5Gb3JtU2V0SWQuRGF0YTRbNF0pLA0KPiAnMHgleCclKEluZm8uRm9ybVNldElkLkRhdGE0WzVd KSwgJzB4JXgnJShJbmZvLkZvcm1TZXRJZC5EYXRhNFs2XSksDQo+ICcweCV4JyUoSW5mby5Gb3Jt U2V0SWQuRGF0YTRbN10pKSArICcgfX1cbicpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9XG4nLmZvcm1hdChJbmZvLlF1ZXN0aW9u SWQpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkg PT0gQ0lmclJlZjI6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAg ICAgZm9ybWlkOiAge31cbicuZm9ybWF0KEluZm8uRm9ybUlkKSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBxdWVzdGlvbmlkOiAge31cbicuZm9ybWF0KElu Zm8uUXVlc3Rpb25JZCkpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHR5cGUo Um9vdC5EYXRhKSA9PSBDSWZyUmVmOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0 ZSgnICAgICAgICAgIGZvcm1pZDogIHt9XG4nLmZvcm1hdChJbmZvLkZvcm1JZCkpDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcXVlc3Rpb25pZDogIHt9XG4n LmZvcm1hdChJbmZvLlF1ZXN0aW9uLlF1ZXN0aW9uSWQpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgcHJvbXB0OiAge31cbicuZm9ybWF0KEluZm8u UXVlc3Rpb24uSGVhZGVyLlByb21wdCkpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUo JyAgICAgICAgICBoZWxwOiAge31cbicuZm9ybWF0KEluZm8uUXVlc3Rpb24uSGVhZGVyLkhlbHAp KQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFJvb3QuT3BDb2RlID09IEVGSV9JRlJf UkVGUkVTSF9PUDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJ bmZvKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIC0gcmVmcmVz aDpcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIGNvbmRp dGlvbjogIHt9XG4nLmZvcm1hdChSb290LkNvbmRpdGlvbikpDQo+IA0KPiArICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgICAgICAgaW50ZXJ2YWw6ICB7fSAgIw0KPiBSZWZyZXNoSW50 ZXJ2YWxcbicuZm9ybWF0KEluZm8uUmVmcmVzaEludGVydmFsKSkNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1ZBUlNUT1JFX0RFVklDRV9PUDoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIC0gdmFyc3RvcmVkZXZpY2U6XG4n KQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgICAgICBjb25kaXRpb246 ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBm LndyaXRlKCcgICAgICAgICAgICAgIGRldmljZXBhdGg6ICB7fSAgIw0KPiBEZXZpY2VQYXRoXG4n LmZvcm1hdChJbmZvLkRldmljZVBhdGgpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlm IFJvb3QuT3BDb2RlID09IEVGSV9JRlJfUkVGUkVTSF9JRF9PUDoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgSW5mbyA9IFJvb3QuRGF0YS5HZXRJbmZvKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAg Zi53cml0ZSgnICAgICAgICAgIC0gcmVmcmVzaGd1aWQ6XG4nKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgZi53cml0ZSgnICAgICAgICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5D b25kaXRpb24pKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAg IGV2ZW50Z3JvdXBpZDogIHsnICsgJ3t9LCB7fSwNCj4ge30sJy5mb3JtYXQoJzB4JXgnJShJbmZv LlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTEpLCcweCV4JyUoSW5mby5SZWZyZXNoDQo+IEV2ZW50 R3JvdXBJZC5EYXRhMiksICcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGEzKSkg XA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAne30sIHt9LCB7fSwge30s IHt9LCB7fSwge30sDQo+IHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZvLlJlZnJlc2hFdmVudEdyb3Vw SWQuRGF0YTRbMF0pLA0KPiAnMHgleCclKEluZm8uUmVmcmVzaEV2ZW50R3JvdXBJZC5EYXRhNFsx XSksDQo+ICcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGE0WzJdKSwNCj4gJzB4 JXgnJShJbmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTRbM10pLCBcDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAnMHgleCclKEluZm8uUmVmcmVzaEV2ZW50R3JvdXBJZC5EYXRhNFs0XSks DQo+ICcweCV4JyUoSW5mby5SZWZyZXNoRXZlbnRHcm91cElkLkRhdGE0WzVdKSwNCj4gJzB4JXgn JShJbmZvLlJlZnJlc2hFdmVudEdyb3VwSWQuRGF0YTRbNl0pLA0KPiAnMHgleCclKEluZm8uUmVm cmVzaEV2ZW50R3JvdXBJZC5EYXRhNFs3XSkpICsgJyB9fVxuJykNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgICAgICBpZiBSb290Lk9wQ29kZSA9PSBFRklfSUZSX1dBUk5JTkdfSUZfT1A6DQo+IA0K PiArICAgICAgICAgICAgICAgIEluZm8gPSBSb290LkRhdGEuR2V0SW5mbygpDQo+IA0KPiArICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICAtIHdhcm5pbmdpZjpcbicpDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGlmIFJvb3QuQ29uZGl0aW9uICE9IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIGNvbmRpdGlvbjogIHt9XG4nLmZv cm1hdChSb290LkNvbmRpdGlvbikpDQo+IA0KPiArICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICAgICAgd2FybmluZzogIHt9XG4nLmZvcm1hdChJbmZvLldhcm5pbmcpKQ0KPiANCj4g KyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgICAgIHRpbWVPdXQ6ICB7fVxuJy5m b3JtYXQoSW5mby5UaW1lT3V0KSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBSb290 Lk9wQ29kZSA9PSBFRklfSUZSX0dVSURfT1A6DQo+IA0KPiArICAgICAgICAgICAgICAgIEluZm8g PSBSb290LkRhdGEuR2V0SW5mbygpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9v dC5EYXRhKSA9PSBDSWZyTGFiZWw6ICMgdHlwZShJbmZvKSA9PQ0KPiBFRklfSUZSX0dVSURfTEFC RUwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgIC0gbGFiZWw6XG4n KQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0 aW9uOiAge31cbicuZm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBsYWJlbG51bWJlcjogIHt9ICAjDQo+ IExhYmVsTnVtYmVyXG4nLmZvcm1hdChJbmZvLk51bWJlcikpDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZyQmFubmVyOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgLSBiYW5uZXI6XG4nKQ0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgaWYgUm9vdC5Db25kaXRpb24gIT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgICAgICAgY29uZGl0aW9uOiAge31cbicu Zm9ybWF0KFJvb3QuQ29uZGl0aW9uKSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIGYud3JpdGUoJyAgICAgICAgICB0aXRsZTogIHt9XG4nLmZvcm1hdChJbmZvLlRpdGxlKSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBsaW5lbnVtYmVy OiAge31cbicuZm9ybWF0KEluZm8uTGluZU51bWJlcikpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCcgICAgICAgICAgYWxpZ246ICB7fVxuJy5mb3JtYXQoSW5mby5BbGlnbm1l bnQpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkg PT0gQ0lmclRpbWVvdXQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAg ICAtIGJhbm5lcjpcbicpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBSb290LkNvbmRp dGlvbiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyAg ICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQoUm9vdC5Db25kaXRpb24pKQ0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICAgICAgIHRpbWVvdXQ6 ICB7fVxuJy5mb3JtYXQoSW5mby5UaW1lT3V0KSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAg ICAgICAgaWYgdHlwZShSb290LkRhdGEpID09IENJZnJDbGFzczoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyAgQ2xhc3M6ICB7fVxuJy5mb3JtYXQoSW5mby5DbGFzcykpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHR5cGUoUm9vdC5EYXRhKSA9PSBDSWZy U3ViQ2xhc3M6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCcgIFN1YkNsYXNz OiAge31cbicuZm9ybWF0KEluZm8uU3ViQ2xhc3MpKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgICAgICBpZiB0eXBlKFJvb3QuRGF0YSkgPT0gQ0lmckd1aWQ6DQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBmLndyaXRlKCcgICAgICAtIGd1aWRvcDpcbicpDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICBpZiBSb290LkNvbmRpdGlvbiAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgICBjb25kaXRpb246ICB7fVxuJy5mb3JtYXQo Um9vdC5Db25kaXRpb24pKQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnICAg ICAgICAgIGd1aWQ6ICB7JyArICd7fSwge30sDQo+IHt9LCcuZm9ybWF0KCcweCV4JyUoSW5mby5H dWlkLkRhdGExKSwnMHgleCclKEluZm8uR3VpZC5EYXRhMiksDQo+ICcweCV4JyUoSW5mby5HdWlk LkRhdGEzKSkgXA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgKyAnIHsgJyArICAne30sIHt9 LCB7fSwge30sIHt9LCB7fSwge30sDQo+IHt9Jy5mb3JtYXQoJzB4JXgnJShJbmZvLkd1aWQuRGF0 YTRbMF0pLCAnMHgleCclKEluZm8uR3VpZC5EYXRhNFsxXSksDQo+ICcweCV4JyUoSW5mby5HdWlk LkRhdGE0WzJdKSwgJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbM10pLCBcDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAnMHgleCclKEluZm8uR3VpZC5EYXRhNFs0XSksICcweCV4JyUoSW5mby5H dWlkLkRhdGE0WzVdKSwNCj4gJzB4JXgnJShJbmZvLkd1aWQuRGF0YTRbNl0pLCAnMHgleCclKElu Zm8uR3VpZC5EYXRhNFs3XSkpICsgJyB9fVxuJykNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIGlmIFJvb3QuQ2hpbGQgIT0gW106DQo+IA0KPiArICAgICAgICAgICAgZm9yIENoaWxk Tm9kZSBpbiBSb290LkNoaWxkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBSb290Lk9wQ29k ZSBpbiBDb25kaXRpb25PcHM6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpZiBDaGlsZE5v ZGUuT3BDb2RlIGluIENvbmRpdGlvbk9wczoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICBDaGlsZE5vZGUuQ29uZGl0aW9uID0gUm9vdC5Db25kaXRpb24gKyAnIHwgJyArDQo+IENoaWxk Tm9kZS5Db25kaXRpb24NCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgQ2hpbGROb2RlLkNvbmRpdGlvbiA9IFJvb3QuQ29uZGl0 aW9uDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuRHVtcFlhbWxEZnMoQ2hp bGROb2RlLCBmKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuDQo+IA0KPiArDQo+IA0K PiArZGVsIFZmclN5bnRheFBhcnNlcg0KPiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCj4g ZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1ZmckNvbXBpbGVyL1ZmclRyZWUu cHkNCj4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJUcmVlLnB5DQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjM0ZjljZTRlMzMNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxl ci9WZnJUcmVlLnB5DQo+IEBAIC0wLDAgKzEsODggQEANCj4gK2Zyb20gVmZyQ29tcGlsZXIuQ29t bW9uQ3R5cGVzIGltcG9ydCAqDQo+IA0KPiArZnJvbSBWZnJDb21waWxlci5WZnJGb3JtUGtnIGlt cG9ydCAqDQo+IA0KPiArDQo+IA0KPiArIyBJZnIgcmVsYXRlZCBJbmZvIC0+IGN0eXBlcyBvYmoN Cj4gDQo+ICsj44CAY29uZGl0aW9uYWwgSW5mbw0KPiANCj4gKyMgU3RydWN0dXJlIEluZm8NCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBWZnJUcmVlTm9kZSgpOg0KPiANCj4gKyAgICBk ZWYgX19pbml0X18oc2VsZiwgT3Bjb2RlOiBpbnQ9Tm9uZSkgLT4gTm9uZToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHNlbGYuT3BDb2RlID0gT3Bjb2RlDQo+IA0KPiArICAgICAgICBzZWxmLkRh dGEgPSBOb25lICMgc2F2ZSBjbGFzcyBvciBieXRlcw0KPiANCj4gKyAgICAgICAgc2VsZi5Db25k aXRpb24gPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLkV4cHJlc3Npb24gPSBOb25lDQo+IA0K PiArICAgICAgICBzZWxmLlBhcmVudCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuQ2hpbGQg PSBbXQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgaGFzQ29uZGl0aW9uKHNlbGYp IC0+Ym9vbDoNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuQ29uZGl0aW9uID09IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIEZhbHNlDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBUcnVlDQo+IA0KPiArDQo+IA0KPiArICAgICMgR2V0IGRhdGEg ZnJvbSBjdHlwZXMgdG8gYnl0ZXMuDQo+IA0KPiArICAgIGRlZiBzdHJ1Y3Qyc3RyZWFtKHNlbGYs IHMpIC0+IGJ5dGVzOg0KPiANCj4gKyAgICAgICAgbGVuZ3RoID0gc2l6ZW9mKHMpDQo+IA0KPiAr ICAgICAgICBwID0gY2FzdChwb2ludGVyKHMpLCBQT0lOVEVSKGNfY2hhciAqIGxlbmd0aCkpDQo+ IA0KPiArICAgICAgICByZXR1cm4gcC5jb250ZW50cy5yYXcNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIGhhc0NoaWxkKHNlbGYpIC0+IGJvb2w6DQo+IA0KPiArICAgICAgICBpZiBzZWxmLkNoaWxk ID09IFtdOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiANCj4gKyAgICAgICAg ZWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVHJ1ZQ0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgaXNGaW5hbENoaWxkKHNlbGYpIC0+IGJvb2w6DQo+IA0KPiArICAgICAgICBQYXJUcmVl ID0gc2VsZi5QYXJlbnQNCj4gDQo+ICsgICAgICAgIGlmIFBhclRyZWU6DQo+IA0KPiArICAgICAg ICAgICAgaWYgUGFyVHJlZS5DaGlsZFstMV0gPT0gc2VsZjoNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIFRydWUNCj4gDQo+ICsgICAgICAgIHJldHVybiBGYWxzZQ0KPiANCj4gKw0KPiAN Cj4gKw0KPiANCj4gKyAgICBkZWYgaW5zZXJ0Q2hpbGQoc2VsZiwgTmV3Tm9kZSwgcG9zOiBpbnQ9 Tm9uZSkgLT4gTm9uZToNCj4gDQo+ICsgICAgICAgIGlmIGxlbihzZWxmLkNoaWxkKSA9PSAwOg0K PiANCj4gKyAgICAgICAgICAgIHNlbGYuQ2hpbGQuYXBwZW5kKE5ld05vZGUpDQo+IA0KPiArICAg ICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGlmIG5vdCBwb3M6DQo+IA0KPiArICAgICAg ICAgICAgICAgIExhc3RUcmVlID0gc2VsZi5DaGlsZFstMV0NCj4gDQo+ICsgICAgICAgICAgICAg ICAgc2VsZi5DaGlsZC5hcHBlbmQoTmV3Tm9kZSkNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLkNoaWxkLmluc2VydChwb3MsIE5ld05vZGUpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBOZXdOb2RlLlBhcmVudCA9IHNlbGYNCj4gDQo+ICsNCj4g DQo+ICsNCj4gDQo+ICsgICAgIyBsYXN0Tm9kZS5pbnNlcnRSZWwobmV3Tm9kZSkNCj4gDQo+ICsg ICAgZGVmIGluc2VydFJlbChzZWxmLCBuZXdOb2RlKSAtPiBOb25lOg0KPiANCj4gKyAgICAgICAg aWYgc2VsZi5QYXJlbnQ6DQo+IA0KPiArICAgICAgICAgICAgcGFyZW50VHJlZSA9IHNlbGYuUGFy ZW50DQo+IA0KPiArICAgICAgICAgICAgbmV3X2luZGV4ID0gcGFyZW50VHJlZS5DaGlsZC5pbmRl eChzZWxmKSArIDENCj4gDQo+ICsgICAgICAgICAgICBwYXJlbnRUcmVlLkNoaWxkLmluc2VydChu ZXdfaW5kZXgsIG5ld05vZGUpDQo+IA0KPiArICAgICAgICBzZWxmLk5leHRSZWwgPSBuZXdOb2Rl DQo+IA0KPiArICAgICAgICBuZXdOb2RlLkxhc3RSZWwgPSBzZWxmDQo+IA0KPiArDQo+IA0KPiAr DQo+IA0KPiArICAgIGRlZiBkZWxldGVOb2RlKHNlbGYsIGRlbGV0ZWtleTogc3RyKSAtPiBOb25l Og0KPiANCj4gKyAgICAgICAgRmluZFN0YXR1cywgRGVsZXRlVHJlZSA9IHNlbGYuRmluZE5vZGUo ZGVsZXRla2V5KQ0KPiANCj4gKyAgICAgICAgaWYgRmluZFN0YXR1czoNCj4gDQo+ICsgICAgICAg ICAgICBwYXJlbnRUcmVlID0gRGVsZXRlVHJlZS5QYXJlbnQNCj4gDQo+ICsgICAgICAgICAgICBs YXN0VHJlZSA9IERlbGV0ZVRyZWUuTGFzdFJlbA0KPiANCj4gKyAgICAgICAgICAgIG5leHRUcmVl ID0gRGVsZXRlVHJlZS5OZXh0UmVsDQo+IA0KPiArICAgICAgICAgICAgaWYgcGFyZW50VHJlZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgaW5kZXggPSBwYXJlbnRUcmVlLkNoaWxkLmluZGV4KERl bGV0ZVRyZWUpDQo+IA0KPiArICAgICAgICAgICAgICAgIGRlbCBwYXJlbnRUcmVlLkNoaWxkW2lu ZGV4XQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGxhc3RUcmVlIGFuZCBuZXh0VHJlZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgbGFzdFRyZWUuTmV4dFJlbCA9IG5leHRUcmVlDQo+IA0KPiArICAg ICAgICAgICAgICAgIG5leHRUcmVlLkxhc3RSZWwgPSBsYXN0VHJlZQ0KPiANCj4gKyAgICAgICAg ICAgIGVsaWYgbGFzdFRyZWU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGxhc3RUcmVlLk5leHRS ZWwgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgZWxpZiBuZXh0VHJlZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgbmV4dFRyZWUuTGFzdFJlbCA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gRGVsZXRlVHJlZQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAg ICBwcmludCgnQ291bGQgbm90IGZpbmQgdGhlIHRhcmdldCB0cmVlJykNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gTm9uZQ0KPiANCj4gZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0 aG9uL1ZmckNvbXBpbGVyL1ZmclV0aWxpdHkucHkNCj4gYi9CYXNlVG9vbHMvU291cmNlL1B5dGhv bi9WZnJDb21waWxlci9WZnJVdGlsaXR5LnB5DQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4IDAwMDAwMDAwMDAuLjFhMmJmOTk1ZGMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9CYXNl VG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxlci9WZnJVdGlsaXR5LnB5DQo+IEBAIC0wLDAg KzEsMTk5MSBAQA0KPiArZnJvbSBhc3QgaW1wb3J0IFBhc3MsIFJldHVybg0KPiANCj4gK2Zyb20g YXN5bmNpby53aW5kb3dzX2V2ZW50cyBpbXBvcnQgTlVMTA0KPiANCj4gK2Zyb20gY3R5cGVzLndp bnR5cGVzIGltcG9ydCBTSVpFTA0KPiANCj4gK2Zyb20gbXNpbGliLnNjaGVtYSBpbXBvcnQgRXJy b3INCj4gDQo+ICtmcm9tIHRraW50ZXIgaW1wb3J0IE4NCj4gDQo+ICtmcm9tIHR1cnRsZSBpbXBv cnQgZ290bw0KPiANCj4gK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0DQo+IA0KPiArZnJvbSB1bml0 dGVzdC5tb2NrIGltcG9ydCBOb25DYWxsYWJsZU1hZ2ljTW9jaw0KPiANCj4gK2Zyb20geG1scnBj LmNsaWVudCBpbXBvcnQgYm9vbGVhbg0KPiANCj4gK2Zyb20gVmZyQ29tcGlsZXIuVmZyRXJyb3Ig aW1wb3J0ICoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVyLkNvbW1vbkN0eXBlcyBpbXBvcnQgKg0K PiANCj4gK2Zyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZA0KPiANCj4gK2lt cG9ydCBjdHlwZXMNCj4gDQo+ICsNCj4gDQo+ICtpbXBvcnQgc3lzDQo+IA0KPiArDQo+IA0KPiAr VkZSX1BBQ0tfU0hPVyA9IDB4MDINCj4gDQo+ICtWRlJfUEFDS19BU1NJR04gPSAweDAxDQo+IA0K PiArVkZSX1BBQ0tfUFVTSCA9IDB4MDQNCj4gDQo+ICtWRlJfUEFDS19QT1AgPSAweDA4DQo+IA0K PiArREVGQVVMVF9QQUNLX0FMSUdOID0gMHg4DQo+IA0KPiArREVGQVVMVF9BTElHTiA9IDENCj4g DQo+ICtNQVhfTkFNRV9MRU4gPSA2NA0KPiANCj4gK01BWF9CSVRfV0lEVEggPSAzMg0KPiANCj4g K0VGSV9WQVJTVE9SRV9JRF9NQVggPSAweEZGRkYNCj4gDQo+ICtFRklfQklUU19TSElGVF9QRVJf VUlOVDMyID0gMHg1DQo+IA0KPiArRUZJX0JJVFNfUEVSX1VJTlQzMiA9ICgxIDw8IEVGSV9CSVRT X1NISUZUX1BFUl9VSU5UMzIpDQo+IA0KPiArRUZJX0ZSRUVfVkFSU1RPUkVfSURfQklUTUFQX1NJ WkUgPSBpbnQoDQo+IA0KPiArICAgIChFRklfVkFSU1RPUkVfSURfTUFYICsgMSkgLyBFRklfQklU U19QRVJfVUlOVDMyKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIFNWZnJQYWNrU3Rh Y2tOb2RlKG9iamVjdCk6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBJ ZGVudGlmaWVyLCBOdW1iZXIpOg0KPiANCj4gKyAgICAgICAgc2VsZi5JZGVudGlmaWVyID0gSWRl bnRpZmllcg0KPiANCj4gKyAgICAgICAgc2VsZi5OdW1iZXIgPSBOdW1iZXINCj4gDQo+ICsgICAg ICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIE1hdGNoKHNlbGYs IElkZW50aWZpZXIpOg0KPiANCj4gKyAgICAgICAgaWYgSWRlbnRpZmllciA9PSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiBUcnVlDQo+IA0KPiArICAgICAgICBlbGlmIHNlbGYuSWRl bnRpZmllciA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBGYWxzZQ0KPiANCj4g KyAgICAgICAgZWxpZiBzZWxmLklkZW50aWZpZXIgPT0gSWRlbnRpZmllcjoNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVHJ1ZQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBTVmZyRGF0 YVR5cGUob2JqZWN0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsIFR5 cGVOYW1lPScnKToNCj4gDQo+ICsgICAgICAgIHNlbGYuVHlwZU5hbWUgPSBUeXBlTmFtZQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5UeXBlID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5BbGlnbiA9IDEN Cj4gDQo+ICsgICAgICAgIHNlbGYuVG90YWxTaXplID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5I YXNCaXRGaWVsZCA9IEZhbHNlDQo+IA0KPiArICAgICAgICBzZWxmLk1lbWJlcnMgPSBOb25lDQo+ IA0KPiArICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgU1ZmckRhdGFGaWVsZChvYmplY3QpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19p bml0X18oc2VsZiwgRmllbGROYW1lPU5vbmUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5GaWVsZE5h bWUgPSBGaWVsZE5hbWUNCj4gDQo+ICsgICAgICAgIHNlbGYuRmllbGRUeXBlID0gTm9uZQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5PZmZzZXQgPSAwDQo+IA0KPiArICAgICAgICBzZWxmLkFycmF5TnVt ID0gMA0KPiANCj4gKyAgICAgICAgc2VsZi5Jc0JpdEZpZWxkID0gRmFsc2UNCj4gDQo+ICsgICAg ICAgIHNlbGYuQml0V2lkdGggPSAwDQo+IA0KPiArICAgICAgICBzZWxmLkJpdE9mZnNldCA9IDAN Cj4gDQo+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBJ bnRlcm5hbFR5cGVzKCk6DQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLCBUeXBlTmFtZSwg VHlwZSwgU2l6ZSwgQWxpZ24pOg0KPiANCj4gKyAgICAgICAgc2VsZi5UeXBlTmFtZSA9IFR5cGVO YW1lDQo+IA0KPiArICAgICAgICBzZWxmLlR5cGUgPSBUeXBlDQo+IA0KPiArICAgICAgICBzZWxm LlNpemUgPSBTaXplDQo+IA0KPiArICAgICAgICBzZWxmLkFsaWduID0gQWxpZ24NCj4gDQo+ICsN Cj4gDQo+ICtnSW50ZXJuYWxUeXBlc1RhYmxlID0gWw0KPiANCj4gKyAgICBJbnRlcm5hbFR5cGVz KCJVSU5UNjQiLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfNjQsDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgc2l6ZW9mKGN0eXBlcy5jX3Vsb25nbG9uZyksIHNpemVvZihjdHlwZXMuY191bG9uZ2xv bmcpKSwNCj4gDQo+ICsgICAgSW50ZXJuYWxUeXBlcygiVUlOVDMyIiwgRUZJX0lGUl9UWVBFX05V TV9TSVpFXzMyLA0KPiBzaXplb2YoY3R5cGVzLmNfdWxvbmcpLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgIHNpemVvZihjdHlwZXMuY191bG9uZykpLA0KPiANCj4gKyAgICBJbnRlcm5hbFR5cGVz KCJVSU5UMTYiLCBFRklfSUZSX1RZUEVfTlVNX1NJWkVfMTYsDQo+IHNpemVvZihjdHlwZXMuY191 c2hvcnQpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgIHNpemVvZihjdHlwZXMuY191c2hvcnQp KSwNCj4gDQo+ICsgICAgSW50ZXJuYWxUeXBlcygiVUlOVDgiLCBFRklfSUZSX1RZUEVfTlVNX1NJ WkVfOCwNCj4gc2l6ZW9mKGN0eXBlcy5jX3VieXRlKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICBzaXplb2YoY3R5cGVzLmNfdWJ5dGUpKSwNCj4gDQo+ICsgICAgSW50ZXJuYWxUeXBlcygiQk9P TEVBTiIsIEVGSV9JRlJfVFlQRV9CT09MRUFOLA0KPiBzaXplb2YoY3R5cGVzLmNfdWJ5dGUpLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgIHNpemVvZihjdHlwZXMuY191Ynl0ZSkpLA0KPiANCj4g KyAgICBJbnRlcm5hbFR5cGVzKCJFRklfR1VJRCIsIEVGSV9JRlJfVFlQRV9PVEhFUiwgc2l6ZW9m KEVGSV9HVUlEKSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICBzaXplb2YoY191Ynl0ZSAqIDgp KSwNCj4gDQo+ICsgICAgSW50ZXJuYWxUeXBlcygiRUZJX0hJSV9EQVRFIiwgRUZJX0lGUl9UWVBF X0RBVEUsIHNpemVvZihFRklfSElJX0RBVEUpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgIHNp emVvZihjdHlwZXMuY191c2hvcnQpKSwNCj4gDQo+ICsgICAgSW50ZXJuYWxUeXBlcygiRUZJX1NU UklOR19JRCIsIEVGSV9JRlJfVFlQRV9TVFJJTkcsDQo+IA0KPiArICAgICAgICAgICAgICAgICAg c2l6ZW9mKGN0eXBlcy5jX3VzaG9ydCksIHNpemVvZihjdHlwZXMuY191c2hvcnQpKSwNCj4gDQo+ ICsgICAgSW50ZXJuYWxUeXBlcygiRUZJX0hJSV9USU1FIiwgRUZJX0lGUl9UWVBFX1RJTUUsIHNp emVvZihFRklfSElJX1RJTUUpLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgIHNpemVvZihjdHlw ZXMuY191Ynl0ZSkpLA0KPiANCj4gKyAgICBJbnRlcm5hbFR5cGVzKCJFRklfSElJX1JFRiIsIEVG SV9JRlJfVFlQRV9SRUYsIHNpemVvZihFRklfSElJX1JFRiksDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgc2l6ZW9mKEVGSV9HVUlEKSksDQo+IA0KPiArXQ0KPiANCj4gKw0KPiANCj4gK2NsYXNz IENWZnJWYXJEYXRhVHlwZURCKG9iamVjdCk6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19QYWNrQWxpZ24gPSBERUZBVUxUX1BB Q0tfQUxJR04NCj4gDQo+ICsgICAgICAgIHNlbGYuX19QYWNrU3RhY2sgPSBOb25lDQo+IA0KPiAr ICAgICAgICBzZWxmLl9fRGF0YVR5cGVMaXN0ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5f X05ld0RhdGFUeXBlID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0N1cnJEYXRhVHlwZSA9 IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuX19DdXJyRGF0YUZpZWxkID0gTm9uZQ0KPiANCj4g KyAgICAgICAgc2VsZi5fX0ZpcnN0TmV3RGF0YVR5cGVOYW1lID0gTm9uZQ0KPiANCj4gKyAgICAg ICAgc2VsZi5JbnRlcm5hbFR5cGVzTGlzdEluaXQoKQ0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4g KyAgICBkZWYgSW50ZXJuYWxUeXBlc0xpc3RJbml0KHNlbGYpOg0KPiANCj4gKyAgICAgICAgZm9y IGkgaW4gcmFuZ2UoMCwgbGVuKGdJbnRlcm5hbFR5cGVzVGFibGUpKToNCj4gDQo+ICsgICAgICAg ICAgICBwTmV3VHlwZSA9IFNWZnJEYXRhVHlwZSgpDQo+IA0KPiArICAgICAgICAgICAgcE5ld1R5 cGUuVHlwZU5hbWUgPSBnSW50ZXJuYWxUeXBlc1RhYmxlW2ldLlR5cGVOYW1lDQo+IA0KPiArICAg ICAgICAgICAgcE5ld1R5cGUuVHlwZSA9IGdJbnRlcm5hbFR5cGVzVGFibGVbaV0uVHlwZQ0KPiAN Cj4gKyAgICAgICAgICAgIHBOZXdUeXBlLkFsaWduID0gZ0ludGVybmFsVHlwZXNUYWJsZVtpXS5B bGlnbg0KPiANCj4gKyAgICAgICAgICAgIHBOZXdUeXBlLlRvdGFsU2l6ZSA9IGdJbnRlcm5hbFR5 cGVzVGFibGVbaV0uU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIGdJbnRlcm5h bFR5cGVzVGFibGVbaV0uVHlwZU5hbWUgPT0gJ0VGSV9ISUlfREFURSc6DQo+IA0KPiArICAgICAg ICAgICAgICAgIHBZZWFyRmllbGQgID0gU1ZmckRhdGFGaWVsZCgpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBNb250aEZpZWxkICA9IFNWZnJEYXRhRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBwRGF5RmllbGQgID0gU1ZmckRhdGFGaWVsZCgpDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgICAgIHBZZWFyRmllbGQuRmllbGROYW1lID0gJ1llYXInDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBZZWFyRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnVUlOVDE2 JykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcFllYXJGaWVsZC5PZmZzZXQgPSAwDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHBZZWFyRmllbGQuTmV4dCA9IHBNb250aEZpZWxkDQo+IA0KPiArICAg ICAgICAgICAgICAgIHBZZWFyRmllbGQuQXJyYXlOdW0gPSAwDQo+IA0KPiArICAgICAgICAgICAg ICAgIHBZZWFyRmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgICAg ICAgICAgICAgIHBNb250aEZpZWxkLkZpZWxkTmFtZSA9ICdNb250aCcNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcE1vbnRoRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnVUlO VDgnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwTW9udGhGaWVsZC5PZmZzZXQgPSAyDQo+IA0K PiArICAgICAgICAgICAgICAgIHBNb250aEZpZWxkLk5leHQgPSBwRGF5RmllbGQNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcE1vbnRoRmllbGQuQXJyYXlOdW0gPSAwDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBNb250aEZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgICAgICAgICBwRGF5RmllbGQuRmllbGROYW1lID0gJ0RheScNCj4gDQo+ICsgICAgICAg ICAgICAgICAgcERheUZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYuR2V0RGF0YVR5cGUoJ1VJTlQ4 JykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcERheUZpZWxkLk9mZnNldCA9IDMNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcERheUZpZWxkLk5leHQgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAg ICAgIHBEYXlGaWVsZC5BcnJheU51bSA9IDANCj4gDQo+ICsgICAgICAgICAgICAgICAgcERheUZp ZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBw TmV3VHlwZS5NZW1iZXJzID0gcFllYXJGaWVsZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IGVsaWYgZ0ludGVybmFsVHlwZXNUYWJsZVtpXS5UeXBlTmFtZSA9PSAnRUZJX0hJSV9USU1FJzoN Cj4gDQo+ICsgICAgICAgICAgICAgICAgcEhvdXJzRmllbGQgID0gU1ZmckRhdGFGaWVsZCgpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBNaW51dGVzRmllbGQgID0gU1ZmckRhdGFGaWVsZCgpDQo+ IA0KPiArICAgICAgICAgICAgICAgIHBTZWNvbmRzRmllbGQgID0gU1ZmckRhdGFGaWVsZCgpDQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHBIb3Vyc0ZpZWxkLkZpZWxkTmFtZSA9ICdI b3VycycNCj4gDQo+ICsgICAgICAgICAgICAgICAgcEhvdXJzRmllbGQuRmllbGRUeXBlLCBfID0g c2VsZi5HZXREYXRhVHlwZSgnVUlOVDgnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwSG91cnNG aWVsZC5PZmZzZXQgPSAwDQo+IA0KPiArICAgICAgICAgICAgICAgIHBIb3Vyc0ZpZWxkLk5leHQg PSBwTWludXRlc0ZpZWxkDQo+IA0KPiArICAgICAgICAgICAgICAgIHBIb3Vyc0ZpZWxkLkFycmF5 TnVtID0gMA0KPiANCj4gKyAgICAgICAgICAgICAgICBwSG91cnNGaWVsZC5Jc0JpdEZpZWxkID0g RmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgcE1pbnV0ZXNGaWVsZC5GaWVs ZE5hbWUgPSAnTWludXRlcycNCj4gDQo+ICsgICAgICAgICAgICAgICAgcE1pbnV0ZXNGaWVsZC5G aWVsZFR5cGUsIF8gPSBzZWxmLkdldERhdGFUeXBlKCdVSU5UOCcpDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBNaW51dGVzRmllbGQuT2Zmc2V0ID0gMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBw TWludXRlc0ZpZWxkLk5leHQgPSBwU2Vjb25kc0ZpZWxkDQo+IA0KPiArICAgICAgICAgICAgICAg IHBNaW51dGVzRmllbGQuQXJyYXlOdW0gPSAwDQo+IA0KPiArICAgICAgICAgICAgICAgIHBNaW51 dGVzRmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAg ICAgIHBTZWNvbmRzRmllbGQuRmllbGROYW1lID0gJ1NlY29uZHMnDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBTZWNvbmRzRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXREYXRhVHlwZSgnVUlO VDgnKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLk9mZnNldCA9IDINCj4g DQo+ICsgICAgICAgICAgICAgICAgcFNlY29uZHNGaWVsZC5OZXh0ID0gTm9uZQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBwU2Vjb25kc0ZpZWxkLkFycmF5TnVtID0gMA0KPiANCj4gKyAgICAgICAg ICAgICAgICBwU2Vjb25kc0ZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgICAgICBwTmV3VHlwZS5NZW1iZXJzID0gcEhvdXJzRmllbGQNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgICAgICBlbGlmIGdJbnRlcm5hbFR5cGVzVGFibGVbaV0uVHlwZU5hbWUg PT0gJ0VGSV9ISUlfUkVGJzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVs ZCAgPSBTVmZyRGF0YUZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcEZvcm1JZEZpZWxk ICA9IFNWZnJEYXRhRmllbGQoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwRm9ybVNldEd1aWRG aWVsZCAgPSBTVmZyRGF0YUZpZWxkKCkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcERldmljZVBh dGhGaWVsZCA9IFNWZnJEYXRhRmllbGQoKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAg ICBwUXVlc3Rpb25JZEZpZWxkLkZpZWxkTmFtZSA9ICdRdWVzdGlvbklkJw0KPiANCj4gKyAgICAg ICAgICAgICAgICBwUXVlc3Rpb25JZEZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYuR2V0RGF0YVR5 cGUoJ1VJTlQxNicpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBRdWVzdGlvbklkRmllbGQuT2Zm c2V0ID0gMA0KPiANCj4gKyAgICAgICAgICAgICAgICBwUXVlc3Rpb25JZEZpZWxkLk5leHQgPSBw Rm9ybUlkRmllbGQNCj4gDQo+ICsgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVsZC5BcnJh eU51bSA9IDANCj4gDQo+ICsgICAgICAgICAgICAgICAgcFF1ZXN0aW9uSWRGaWVsZC5Jc0JpdEZp ZWxkID0gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgcEZvcm1JZEZpZWxk LkZpZWxkTmFtZSA9ICdGb3JtSWQnDQo+IA0KPiArICAgICAgICAgICAgICAgIHBGb3JtSWRGaWVs ZC5GaWVsZFR5cGUsIF8gPSBzZWxmLkdldERhdGFUeXBlKCdVSU5UMTYnKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBwRm9ybUlkRmllbGQuT2Zmc2V0ID0gMg0KPiANCj4gKyAgICAgICAgICAgICAg ICBwRm9ybUlkRmllbGQuTmV4dCA9IHBGb3JtU2V0R3VpZEZpZWxkDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBGb3JtSWRGaWVsZC5BcnJheU51bSA9IDANCj4gDQo+ICsgICAgICAgICAgICAgICAg cEZvcm1JZEZpZWxkLklzQml0RmllbGQgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgICAgICBwRm9ybVNldEd1aWRGaWVsZC5GaWVsZE5hbWUgPSAnRm9ybVNldEd1aWQnDQo+IA0K PiArICAgICAgICAgICAgICAgIHBGb3JtU2V0R3VpZEZpZWxkLkZpZWxkVHlwZSwgXyA9IHNlbGYu R2V0RGF0YVR5cGUoJ0VGSV9HVUlEJykNCj4gDQo+ICsgICAgICAgICAgICAgICAgcEZvcm1TZXRH dWlkRmllbGQuT2Zmc2V0ID0gNA0KPiANCj4gKyAgICAgICAgICAgICAgICBwRm9ybVNldEd1aWRG aWVsZC5OZXh0ID0gcERldmljZVBhdGhGaWVsZA0KPiANCj4gKyAgICAgICAgICAgICAgICBwRm9y bVNldEd1aWRGaWVsZC5BcnJheU51bSA9IDANCj4gDQo+ICsgICAgICAgICAgICAgICAgcEZvcm1T ZXRHdWlkRmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAg ICAgICAgIHBEZXZpY2VQYXRoRmllbGQuRmllbGROYW1lID0gJ0RldmljZVBhdGgnDQo+IA0KPiAr ICAgICAgICAgICAgICAgIHBEZXZpY2VQYXRoRmllbGQuRmllbGRUeXBlLCBfID0gc2VsZi5HZXRE YXRhVHlwZSgnRUZJX1NUUklOR19JRCcpDQo+IA0KPiArICAgICAgICAgICAgICAgIHBEZXZpY2VQ YXRoRmllbGQuT2Zmc2V0ID0gMjANCj4gDQo+ICsgICAgICAgICAgICAgICAgcERldmljZVBhdGhG aWVsZC5OZXh0ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgICAgICAgICBwRGV2aWNlUGF0aEZpZWxk LkFycmF5TnVtID0gMA0KPiANCj4gKyAgICAgICAgICAgICAgICBwRGV2aWNlUGF0aEZpZWxkLklz Qml0RmllbGQgPSBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBwTmV3VHlw ZS5NZW1iZXJzID0gcFF1ZXN0aW9uSWRGaWVsZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IHBOZXdUeXBlLk5leHQgPSBOb25lDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX1JlZ2lzdGVy TmV3VHlwZShwTmV3VHlwZSkNCj4gDQo+ICsgICAgICAgICAgICBwTmV3VHlwZSA9IE5vbmUNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldERhdGFUeXBlTGlzdChzZWxmKToNCj4gDQo+ICsgICAg ICAgIHJldHVybiBzZWxmLl9fRGF0YVR5cGVMaXN0DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBQ YWNrKHNlbGYsDQo+IA0KPiArICAgICAgICAgICAgIExpbmVOdW0sDQo+IA0KPiArICAgICAgICAg ICAgIEFjdGlvbiwNCj4gDQo+ICsgICAgICAgICAgICAgSWRlbnRpZmllcj1Ob25lLA0KPiANCj4g KyAgICAgICAgICAgICBOdW1iZXI9REVGQVVMVF9QQUNLX0FMSUdOKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIEFjdGlvbiAmIFZGUl9QQUNLX1NIT1c6DQo+IA0KPiArICAgICAgICAgICAg TXNnID0gc3RyLmZvcm1hdCgndmFsdWUgb2YgcHJhZ21hIHBhY2soc2hvdykgPT0gJWQnICUNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9fUGFja0FsaWduKSkNCj4g DQo+ICsgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLlByaW50TXNnKExpbmVOdW0sICdXYXJu aW5nJywgTXNnKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgQWN0aW9uICYgVkZSX1BBQ0tf UFVTSDoNCj4gDQo+ICsgICAgICAgICAgICBwTmV3ID0gU1ZmclBhY2tTdGFja05vZGUoSWRlbnRp Zmllciwgc2VsZi5fX1BhY2tBbGlnbikNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTmV3ID09IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fRkFUQUxfRVJST1INCj4gDQo+ICsgICAgICAgICAgICBwTmV3Lk5leHQgPSBzZWxmLl9fUGFj a1N0YWNrDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX1BhY2tTdGFjayA9IHBOZXcNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGlmIEFjdGlvbiAmIFZGUl9QQUNLX1BPUDoNCj4gDQo+ICsgICAg ICAgICAgICBwTm9kZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLl9fUGFja1N0 YWNrID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGdDVmZyRXJyb3JIYW5kbGUuUHJp bnRNc2coTGluZU51bSwgJ0Vycm9yJywgJyNwcmFnbWEgcGFjayhwb3AuLi4pIDoNCj4gbW9yZSBw b3BzIHRoYW4gcHVzaGVzJykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBwTm9kZSA9IHNl bGYuX19QYWNrU3RhY2sNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICBpZiBwTm9kZS5NYXRjaChJZGVudGlmaWVyKSA9PSBUcnVl Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX1BhY2tBbGlnbiA9IHBOb2RlLk51 bWJlcg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX1BhY2tTdGFjayA9IHBOb2Rl Lk5leHQNCj4gDQo+ICsgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBpZiBBY3Rpb24gJiBWRlJfUEFDS19BU1NJR046DQo+IA0KPiArICAg ICAgICAgICAgUGFja0FsaWduID0gKE51bWJlciArIE51bWJlciAlIDIpIGlmIChOdW1iZXIgPiAx KSBlbHNlIE51bWJlcg0KPiANCj4gKyAgICAgICAgICAgIGlmIFBhY2tBbGlnbiA9PSAwIG9yIFBh Y2tBbGlnbiA+IDE2Og0KPiANCj4gKyAgICAgICAgICAgICAgICBnQ1ZmckVycm9ySGFuZGxlLlBy aW50TXNnKExpbmVOdW0sICdFcnJvcicsICJleHBlY3RlZCBwcmFnbWENCj4gcGFyYW1ldGVyIHRv IGJlICcxJywgJzInLCAnNCcsICc4Jywgb3IgJzE2JyIpDQo+IA0KPiArICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX1BhY2tBbGlnbiA9IFBhY2tBbGlnbg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9T VUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBEZWNsYXJlRGF0YVR5cGVCZWdpbihzZWxm KToNCj4gDQo+ICsgICAgICAgIHBOZXdUeXBlID0gU1ZmckRhdGFUeXBlKCkNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHBOZXdUeXBlLlR5cGVOYW1lID0gJycNCj4gDQo+ICsgICAgICAgIHBOZXdU eXBlLlR5cGUgPSBFRklfSUZSX1RZUEVfT1RIRVINCj4gDQo+ICsgICAgICAgIHBOZXdUeXBlLkFs aWduID0gREVGQVVMVF9BTElHTg0KPiANCj4gKyAgICAgICAgcE5ld1R5cGUuVG90YWxTaXplID0g MA0KPiANCj4gKyAgICAgICAgcE5ld1R5cGUuSGFzQml0RmllbGQgPSBGYWxzZQ0KPiANCj4gKyAg ICAgICAgcE5ld1R5cGUuTWVtYmVycyA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHBOZXdUeXBlLk5l eHQgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUgPSBwTmV3VHlwZQ0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0TmV3VHlwZVR5cGUoc2VsZiwgVHlwZSk6DQo+IA0K PiArICAgICAgICBpZiBzZWxmLl9fTmV3RGF0YVR5cGUgPT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX1NLSVBFRA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgaWYgVHlwZSA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19OZXdEYXRhVHlwZS5UeXBlID0gVHlwZSAgIyBuZWVkIHRvIGxpbWl0 IHRoZSB2YWx1ZSBvZiB0aGUgdHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBT ZXROZXdUeXBlVG90YWxTaXplKHNlbGYsIFNpemUpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX05l d0RhdGFUeXBlLlRvdGFsU2l6ZSA9IFNpemUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFNldE5l d1R5cGVBbGlnbihzZWxmLCBBbGlnbik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fTmV3RGF0YVR5 cGUuQWxpZ24gPSBBbGlnbg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgU2V0TmV3VHlwZU5hbWUo c2VsZiwgVHlwZU5hbWUpOg0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5fX05ld0RhdGFUeXBlID09 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9FUlJPUl9TS0lQRUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFR5cGVOYW1lID09IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9G QVRBTF9FUlJPUg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgbGVuKFR5cGVOYW1lKSA+PSBN QVhfTkFNRV9MRU46DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9JTlZBTElEX1BBUkFNRVRFUg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcFR5cGUg PSBzZWxmLl9fRGF0YVR5cGVMaXN0DQo+IA0KPiArICAgICAgICB3aGlsZSBwVHlwZSAhPSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIGlmIHBUeXBlLlR5cGVOYW1lID09IFR5cGVOYW1lOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVG SU5FRA0KPiANCj4gKyAgICAgICAgICAgIHBUeXBlID0gcFR5cGUuTmV4dA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLlR5cGVOYW1lID0gVHlwZU5hbWUNCj4gDQo+ ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4g Kw0KPiANCj4gKyAgICBkZWYgX19BbGlnblN0dWZmKHNlbGYsIFNpemUsIEFsaWduKToNCj4gDQo+ ICsgICAgICAgIHJldHVybiBBbGlnbiAtIChTaXplKSAlIChBbGlnbikNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIERlY2xhcmVEYXRhVHlwZUVuZChzZWxmKToNCj4gDQo+ICsgICAgICAgIGlmIHNl bGYuX19OZXdEYXRhVHlwZS5UeXBlTmFtZSA9PSAnJzoNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNp emUgJSBzZWxmLl9fTmV3RGF0YVR5cGUuQWxpZ24gIT0gMDoNCj4gDQo+ICsgICAgICAgICAgICBz ZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplICs9IHNlbGYuX19BbGlnblN0dWZmKA0KPiANCj4g KyAgICAgICAgICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplLCBzZWxmLl9fTmV3 RGF0YVR5cGUuQWxpZ24pDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxmLl9fUmVnaXN0ZXJO ZXdUeXBlKHNlbGYuX19OZXdEYXRhVHlwZSkNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuX19GaXJz dE5ld0RhdGFUeXBlTmFtZSA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19GaXJz dE5ld0RhdGFUeXBlTmFtZSA9IHNlbGYuX19OZXdEYXRhVHlwZS5UeXBlTmFtZQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlID0gTm9uZQ0KPiANCj4gKw0KPiANCj4g KyAgICAjIHR3byBkZWZpbml0aW9ucw0KPiANCj4gKyAgICBkZWYgR2V0RGF0YVR5cGVTaXplQnlU eXBlTmFtZShzZWxmLCBUeXBlTmFtZSk6DQo+IA0KPiArICAgICAgICBTaXplID0gMA0KPiANCj4g KyAgICAgICAgcERhdGFUeXBlID0gc2VsZi5fX0RhdGFUeXBlTGlzdA0KPiANCj4gKyAgICAgICAg d2hpbGUgcERhdGFUeXBlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcERhdGFUeXBl LlR5cGVOYW1lID09IFR5cGVOYW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBTaXplID0gcERh dGFUeXBlLlRvdGFsU2l6ZQ0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gU2l6ZSwgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgICAgICBwRGF0YVR5 cGUgPSBwRGF0YVR5cGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFNpemUs IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIEdldERhdGFUeXBlU2l6ZUJ5RGF0YVR5cGUoc2VsZiwgRGF0YVR5cGUpOg0KPiANCj4gKyAg ICAgICAgU2l6ZSA9IDANCj4gDQo+ICsgICAgICAgIERhdGFUeXBlID0gRGF0YVR5cGUgJiAweDBG DQo+IA0KPiArICAgICAgICAjIEZvciB1c2VyIGRlZmluZWQgZGF0YSB0eXBlLCB0aGUgc2l6ZSBj YW4ndCBiZSBnb3QgYnkgdGhpcyBmdW5jdGlvbi4NCj4gDQo+ICsgICAgICAgIGlmIERhdGFUeXBl ID09IEVGSV9JRlJfVFlQRV9PVEhFUjoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gU2l6ZSwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgIHBEYXRhVHlw ZSA9IHNlbGYuX19EYXRhVHlwZUxpc3QNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBEYXRhVHlwZSAh PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIERhdGFUeXBlID09IHBEYXRhVHlwZS5UeXBl Og0KPiANCj4gKyAgICAgICAgICAgICAgICBTaXplID0gcERhdGFUeXBlLlRvdGFsU2l6ZQ0KPiAN Cj4gKyAgICAgICAgICAgICAgICByZXR1cm4gU2l6ZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgICAgICBwRGF0YVR5cGUgPSBwRGF0YVR5cGUuTmV4dA0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFNpemUsIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9VTkRFRklORUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9fRXh0cmFjdFN0cnVjdFR5 cGVOYW1lKHNlbGYsIFZhclN0cik6DQo+IA0KPiArICAgICAgICB0cnk6DQo+IA0KPiArICAgICAg ICAgICAgaW5kZXggPSBWYXJTdHIuaW5kZXgoJy4nKQ0KPiANCj4gKyAgICAgICAgZXhjZXB0IFZh bHVlRXJyb3I6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZhclN0ciwgbGVuKFZhclN0cikN Cj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZhclN0clsw OmluZGV4XSwgaW5kZXggKyAxDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX0V4dHJhY3RGaWVs ZE5hbWVBbmRBcnJhcnkoc2VsZiwgVmFyU3RyLCBzKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IEFycmF5SWR4ID0gSU5WQUxJRF9BUlJBWV9JTkRFWA0KPiANCj4gKyAgICAgICAgc19jb3B5ID0g cw0KPiANCj4gKyAgICAgICAgd2hpbGUgKHMgPCBsZW4oVmFyU3RyKSBhbmQgVmFyU3RyW3NdICE9 ICcuJyBhbmQgVmFyU3RyW3NdICE9ICdbJw0KPiANCj4gKyAgICAgICAgICAgICAgIGFuZCBWYXJT dHJbc10gIT0gJ10nKToNCj4gDQo+ICsgICAgICAgICAgICBzICs9IDENCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIEZOYW1lID0gVmFyU3RyW3NfY29weTpzXQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgcyA9PSBsZW4oVmFyU3RyKToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gQXJyYXlJ ZHgsIHMsIEZOYW1lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgZWxpZiBWYXJTdHJbc10gPT0gJy4nOg0KPiANCj4gKyAgICAgICAgICAg IHMgKz0gMQ0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBBcnJheUlkeCwgcywgRk5hbWUsIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBl bGlmIFZhclN0cltzXSA9PSAnWyc6DQo+IA0KPiArICAgICAgICAgICAgcyArPSAxDQo+IA0KPiAr ICAgICAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgICAgICBlID0gcyArIFZhclN0cltz Ol0uaW5kZXgoJ10nKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVy cm9yOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgTm9uZSwNCj4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0RBVEFfU1RSSU5HX0VSUk9SDQo+IA0KPiArICAgICAg ICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgQXJyYXlTdHIgPSBWYXJTdHJbczpl XQ0KPiANCj4gKyAgICAgICAgICAgICAgICBBcnJheUlkeCA9IGludChBcnJheVN0cikNCj4gDQo+ ICsgICAgICAgICAgICAgICAgaWYgVmFyU3RyW2VdID09ICddJzoNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGUgKz0gMQ0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBlIDwgbGVuKFZhclN0 cikgYW5kIChWYXJTdHJbZV0gPT0gJy4nKToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGUg Kz0gMQ0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXlJZHgsIGUsIEZOYW1lLCBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ZWxpZiBWYXJTdHJbc10gPT0gJ10nOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBOb25lLCBO b25lLCBOb25lLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fREFUQV9TVFJJTkdfRVJST1IN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBBcnJheUlkeCwgcywgRk5hbWUsIFZmclJl dHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRU eXBlRmllbGQoc2VsZiwgRk5hbWUsIFR5cGUpOg0KPiANCj4gKyAgICAgICAgaWYgRk5hbWUgPT0g Tm9uZSBvciBUeXBlID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFZm clJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgcEZpZWxkID0gVHlwZS5NZW1iZXJzDQo+IA0KPiArICAgICAgICB3aGlsZSAocEZpZWxkICE9 IE5vbmUpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFR5cGUuVHlwZSA9PSBFRklf SUZSX1RZUEVfVElNRToNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgRk5hbWUgPT0gJ0hvdXIn Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgRk5hbWUgPSAnSG91cnMnDQo+IA0KPiArICAg ICAgICAgICAgICAgIGVsaWYgRk5hbWUgPT0gJ01pbnV0ZSc6DQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBGTmFtZSA9PSAnTWludXRlcycNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxpZiBG TmFtZSA9PSAnU2Vjb25kJzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIEZOYW1lID0gJ1Nl Y29uZHMnDQo+IA0KPiArICAgICAgICAgICAgaWYgcEZpZWxkLkZpZWxkTmFtZSA9PSBGTmFtZToN Cj4gDQo+ICsgICAgICAgICAgICAgICAgRmllbGQgPSBwRmllbGQNCj4gDQo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIEZpZWxkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgICAgIHBGaWVsZCA9IHBGaWVsZC5OZXh0DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVG SU5FRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgSXNUaGlzQml0RmllbGQoc2VsZiwgVmFyU3Ry TmFtZSk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBUTmFtZSwgaSA9IHNlbGYuX19FeHRyYWN0 U3RydWN0VHlwZU5hbWUoVmFyU3RyTmFtZSkNCj4gDQo+ICsgICAgICAgIHBUeXBlLCBSZXR1cm5D b2RlID0gc2VsZi5HZXREYXRhVHlwZShUTmFtZSkNCj4gDQo+ICsgICAgICAgIGlmIFJldHVybkNv ZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIE5vbmUsIFJldHVybkNvZGUNCj4gDQo+ICsgICAgICAgIHBGaWVsZCA9IE5vbmUN Cj4gDQo+ICsgICAgICAgIHdoaWxlIChpIDwgbGVuKFZhclN0ck5hbWUpKToNCj4gDQo+ICsgICAg ICAgICAgICAjIGkgc3RhcnQgZnJvbSBmaWVsZA0KPiANCj4gKyAgICAgICAgICAgIF8sIGksIEZO YW1lLCBSZXR1cm5Db2RlID0gc2VsZi5fX0V4dHJhY3RGaWVsZE5hbWVBbmRBcnJhcnkoDQo+IA0K PiArICAgICAgICAgICAgICAgIFZhclN0ck5hbWUsIGkpDQo+IA0KPiArICAgICAgICAgICAgaWYg UmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFJldHVybkNvZGUNCj4gDQo+ICsgICAgICAgICAg ICBwRmllbGQsIFJldHVybkNvZGUgPSBzZWxmLkdldFR5cGVGaWVsZChGTmFtZSwgcFR5cGUpDQo+ IA0KPiArICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFJldHVybkNv ZGUNCj4gDQo+ICsgICAgICAgICAgICBwVHlwZSA9IHBGaWVsZC5GaWVsZFR5cGUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIGlmIHBGaWVsZCAhPSBOb25lIGFuZCBwRmllbGQuSXNCaXRGaWVsZDoN Cj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgUmV0dXJuQ29kZQ0KPiANCj4gKyAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gRmFsc2UsIFJldHVybkNvZGUNCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEZpZWxkT2Zmc2V0KHNlbGYsIEZpZWxkLCBBcnJheUlk eCwgSXNCaXRGaWVsZCk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBGaWVsZCA9PSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIChBcnJheUlkeCAhPSBJ TlZBTElEX0FSUkFZX0lOREVYKSBhbmQgKEZpZWxkLkFycmF5TnVtID09IDAgb3INCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkLkFy cmF5TnVtIDw9IEFycmF5SWR4KToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX0VSUk9SX0FSUkFSWV9OVU0NCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIElkeCA9IDAgaWYgQXJyYXlJZHggPT0gSU5WQUxJRF9BUlJBWV9JTkRFWCBlbHNlIEFy cmF5SWR4DQo+IA0KPiArICAgICAgICBpZiBJc0JpdEZpZWxkOg0KPiANCj4gKyAgICAgICAgICAg IE9mZnNldCA9IEZpZWxkLkJpdE9mZnNldCArIEZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUgKiBJ ZHggKiA4DQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIE9mZnNldCA9 IEZpZWxkLk9mZnNldCArIEZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUgKiBJZHgNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBPZmZzZXQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9T VUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX0dldEZpZWxkV2lkdGgoc2VsZiwgRmll bGQpOg0KPiANCj4gKyAgICAgICAgaWYgRmllbGQgPT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gMA0KPiANCj4gKyAgICAgICAgcmV0dXJuIEZpZWxkLkZpZWxkVHlwZS5UeXBlDQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX0dldEZpZWxkU2l6ZShzZWxmLCBGaWVsZCwgQXJyYXlJ ZHgsIEJpdEZpZWxkKToNCj4gDQo+ICsgICAgICAgIGlmIEZpZWxkID09IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgKEFycmF5SWR4ID09IElOVkFMSURfQVJSQVlfSU5E RVgpIGFuZCAoRmllbGQuQXJyYXlOdW0gIT0gMCk6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJu IEZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUgKiBGaWVsZC5BcnJheU51bQ0KPiANCj4gKyAgICAg ICAgZWxzZToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBpZiBCaXRGaWVsZDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkLkJpdFdpZHRoDQo+IA0KPiArICAgICAgICAg ICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIEZpZWxkLkZpZWxkVHlwZS5U b3RhbFNpemUNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldERhdGFGaWVsZEluZm8oc2VsZiwg VmFyU3RyKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgVmFyU3RyIC0+IFR5cGUuRmllbGQN Cj4gDQo+ICsgICAgICAgIE9mZnNldCA9IDANCj4gDQo+ICsgICAgICAgIFR5cGUgPSBFRklfSUZS X1RZUEVfT1RIRVINCj4gDQo+ICsgICAgICAgIFNpemUgPSAwDQo+IA0KPiArICAgICAgICBCaXRG aWVsZCA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBUTmFtZSwgaSA9IHNlbGYuX19F eHRyYWN0U3RydWN0VHlwZU5hbWUoVmFyU3RyKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcFR5 cGUsIFJldHVybkNvZGUgPSBzZWxmLkdldERhdGFUeXBlKFROYW1lKQ0KPiANCj4gKyAgICAgICAg aWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gT2Zmc2V0LCBUeXBlLCBTaXplLCBCaXRGaWVsZCwgUmV0dXJu Q29kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgQml0RmllbGQsIFJldHVybkNvZGUgPSBzZWxm LklzVGhpc0JpdEZpZWxkKFZhclN0cikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFJldHVy bkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIE9mZnNldCwgVHlwZSwgU2l6ZSwgQml0RmllbGQsIFJldHVybkNvZGUNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgICPjgIBpZiBpdCBpcyBub3Qgc3RydWN0IGRhdGEgdHlwZQ0K PiANCj4gKyAgICAgICAgVHlwZSA9IHBUeXBlLlR5cGUNCj4gDQo+ICsgICAgICAgIFNpemUgPSBw VHlwZS5Ub3RhbFNpemUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHdoaWxlIChpIDwgbGVuKFZh clN0cikpOg0KPiANCj4gKyAgICAgICAgICAgIEFycmF5SWR4LCBpLCBGTmFtZSwgUmV0dXJuQ29k ZSA9IHNlbGYuX19FeHRyYWN0RmllbGROYW1lQW5kQXJyYXJ5KA0KPiANCj4gKyAgICAgICAgICAg ICAgICBWYXJTdHIsIGkpDQo+IA0KPiArICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIE9mZnNldCwgVHlwZSwgU2l6ZSwgQml0RmllbGQsIFJldHVybkNvZGUNCj4gDQo+ICsgICAg ICAgICAgICBwRmllbGQsIFJldHVybkNvZGUgPSBzZWxmLkdldFR5cGVGaWVsZChGTmFtZSwgcFR5 cGUpDQo+IA0KPiArICAgICAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIE9mZnNldCwg VHlwZSwgU2l6ZSwgQml0RmllbGQsIFJldHVybkNvZGUNCj4gDQo+ICsgICAgICAgICAgICBwVHlw ZSA9IHBGaWVsZC5GaWVsZFR5cGUNCj4gDQo+ICsgICAgICAgICAgICBUbXAsIFJldHVybkNvZGUg PSBzZWxmLkdldEZpZWxkT2Zmc2V0KHBGaWVsZCwgQXJyYXlJZHgsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwRmllbGQuSXNCaXRGaWVs ZCkNCj4gDQo+ICsgICAgICAgICAgICBpZiBSZXR1cm5Db2RlICE9IFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9TVUNDRVNTOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gT2Zmc2V0LCBU eXBlLCBTaXplLCBCaXRGaWVsZCwgUmV0dXJuQ29kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAg ICAgIGlmIEJpdEZpZWxkIGFuZCBwRmllbGQuSXNCaXRGaWVsZCA9PSBGYWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgT2Zmc2V0ID0gaW50KE9mZnNldCArIFRtcCAqIDgpDQo+IA0KPiArICAg ICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgT2Zmc2V0ID0gaW50KE9mZnNl dCArIFRtcCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBUeXBlID0gc2VsZi5fX0dldEZp ZWxkV2lkdGgocEZpZWxkKQ0KPiANCj4gKyAgICAgICAgICAgIFNpemUgPSBzZWxmLl9fR2V0Rmll bGRTaXplKHBGaWVsZCwgQXJyYXlJZHgsIEJpdEZpZWxkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgcmV0dXJuIE9mZnNldCwgVHlwZSwgU2l6ZSwgQml0RmllbGQsDQo+IFZmclJldHVybkNvZGUu VkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX1JlZ2lzdGVyTmV3 VHlwZShzZWxmLCBOZXcpOg0KPiANCj4gKyAgICAgICAgTmV3Lk5leHQgPSBzZWxmLl9fRGF0YVR5 cGVMaXN0DQo+IA0KPiArICAgICAgICBzZWxmLl9fRGF0YVR5cGVMaXN0ID0gTmV3DQo+IA0KPiAr ICAgICAgICByZXR1cm4NCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIERhdGFUeXBlQWRkRmllbGQo c2VsZiwgRmllbGROYW1lLCBUeXBlTmFtZSwgQXJyYXlOdW0sDQo+IEZpZWxkSW5Vbmlvbik6DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBwRmllbGRUeXBlLCBSZXR1cm5Db2RlID0gc2VsZi5HZXRE YXRhVHlwZShUeXBlTmFtZSkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFJldHVybkNvZGUg IT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIFJldHVybkNvZGUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIE1heERhdGFUeXBlU2l6 ZSA9IHNlbGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIGxlbihGaWVsZE5hbWUpID49IE1BWF9OQU1FX0xFTjoNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0lOVkFMSURfUEFSQU1FVEVS DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwVG1wID0gc2VsZi5fX05ld0RhdGFUeXBlLk1lbWJl cnMNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBUbXAgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBwVG1wLkZpZWxkTmFtZSA9PSBGaWVsZE5hbWU6DQo+IA0KPiArICAgICAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUkVERUZJTkVEDQo+IA0KPiArICAgICAg ICAgICAgcFRtcCA9IHBUbXAuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgQWxpZ24gPSBt aW4oc2VsZi5fX1BhY2tBbGlnbiwgcEZpZWxkVHlwZS5BbGlnbikNCj4gDQo+ICsgICAgICAgIHBO ZXdGaWVsZCA9IFNWZnJEYXRhRmllbGQoKQ0KPiANCj4gKyAgICAgICAgaWYgcE5ld0ZpZWxkID09 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9PVVRfRk9SX1JFU09VUkNFUw0KPiANCj4gKyAgICAgICAgcE5ld0ZpZWxkLkZpZWxkTmFtZSA9 IEZpZWxkTmFtZQ0KPiANCj4gKyAgICAgICAgcE5ld0ZpZWxkLkZpZWxkVHlwZSA9IHBGaWVsZFR5 cGUNCj4gDQo+ICsgICAgICAgIHBOZXdGaWVsZC5BcnJheU51bSA9IEFycmF5TnVtDQo+IA0KPiAr ICAgICAgICBwTmV3RmllbGQuSXNCaXRGaWVsZCA9IEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBpZiBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplICUgQWxpZ24gPT0gMDoNCj4gDQo+ ICsgICAgICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFs U2l6ZQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBwTmV3RmllbGQu T2Zmc2V0ID0gc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZSArDQo+IHNlbGYuX19BbGlnblN0 dWZmKA0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXpl LCBBbGlnbikNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuX19OZXdEYXRhVHlwZS5N ZW1iZXJzID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLk1l bWJlcnMgPSBwTmV3RmllbGQNCj4gDQo+ICsgICAgICAgICAgICBwTmV3RmllbGQuTmV4dCA9IE5v bmUNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcFRtcCA9IHNlbGYu X19OZXdEYXRhVHlwZS5NZW1iZXJzDQo+IA0KPiArICAgICAgICAgICAgd2hpbGUgcFRtcC5OZXh0 ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHBUbXAgPSBwVG1wLk5leHQNCj4gDQo+ ICsgICAgICAgICAgICBwVG1wLk5leHQgPSBwTmV3RmllbGQNCj4gDQo+ICsgICAgICAgICAgICBw TmV3RmllbGQuTmV4dCA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuX19OZXdE YXRhVHlwZS5BbGlnbiA9IG1pbigNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fUGFja0FsaWdu LCBtYXgocEZpZWxkVHlwZS5BbGlnbiwgc2VsZi5fX05ld0RhdGFUeXBlLkFsaWduKSkNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGlmIEZpZWxkSW5VbmlvbjoNCj4gDQo+ICsgICAgICAgICAgICBp ZiBNYXhEYXRhVHlwZVNpemUgPCBwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZSA9IHBOZXdGaWVs ZC5GaWVsZFR5cGUuVG90YWxTaXplDQo+IA0KPiArICAgICAgICAgICAgcE5ld0ZpZWxkLk9mZnNl dCA9IDANCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgTnVtID0gQXJy YXlOdW0gaWYgQXJyYXlOdW0gIT0gMCBlbHNlIDENCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9f TmV3RGF0YVR5cGUuVG90YWxTaXplID0gcE5ld0ZpZWxkLk9mZnNldCArICgNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUpICogTnVtDQo+IA0KPiAr DQo+IA0KPiArICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIERhdGFUeXBlQWRkQml0RmllbGQoc2VsZiwgRmllbGRO YW1lLCBUeXBlTmFtZSwgV2lkdGgsDQo+IEZpZWxkSW5Vbmlvbik6DQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBwRmllbGRUeXBlLCBSZXR1cm5Db2RlID0gc2VsZi5HZXREYXRhVHlwZShUeXBlTmFt ZSkNCj4gDQo+ICsgICAgICAgIGlmIFJldHVybkNvZGUgIT0gVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1NVQ0NFU1M6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFJldHVybkNvZGUNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIGlmIFdpZHRoID4gTUFYX0JJVF9XSURUSDoNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0JJVF9XSURUSF9FUlJPUg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgV2lkdGggPiAocEZpZWxkVHlwZS5Ub3RhbFNpemUp ICogODoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJO X0JJVF9XSURUSF9FUlJPUg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgKEZpZWxkTmFtZSAh PSBOb25lKSBhbmQgKGxlbihGaWVsZE5hbWUpID49IE1BWF9OQU1FX0xFTik6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9JTlZBTElEX1BBUkFNRVRF Ug0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgV2lkdGggPT0gMCBhbmQgRmllbGROYW1lICE9 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVS Tl9JTlZBTElEX1BBUkFNRVRFUg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcFRtcCA9IHNlbGYu X19OZXdEYXRhVHlwZS5NZW1iZXJzDQo+IA0KPiArICAgICAgICB3aGlsZSBwVG1wICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgaWYgRmllbGROYW1lICE9IE5vbmUgYW5kIHBUbXAuRmllbGRO YW1lID09IEZpZWxkTmFtZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCj4gDQo+ICsgICAgICAgICAgICBwVG1wID0gcFRt cC5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBBbGlnbiA9IG1pbihzZWxmLl9fUGFja0Fs aWduLCBwRmllbGRUeXBlLkFsaWduKQ0KPiANCj4gKyAgICAgICAgVXBkYXRlVG90YWxTaXplID0g RmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOZXdGaWVsZCA9IFNWZnJEYXRhRmllbGQo KQ0KPiANCj4gKyAgICAgICAgaWYgcE5ld0ZpZWxkID09IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgTWF4RGF0YVR5cGVTaXplID0gc2VsZi5fX05ld0RhdGFUeXBl LlRvdGFsU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5ld0ZpZWxkLkZpZWxkTmFtZSA9 IEZpZWxkTmFtZQ0KPiANCj4gKyAgICAgICAgcE5ld0ZpZWxkLkZpZWxkVHlwZSA9IHBGaWVsZFR5 cGUNCj4gDQo+ICsgICAgICAgIHBOZXdGaWVsZC5Jc0JpdEZpZWxkID0gVHJ1ZQ0KPiANCj4gKyAg ICAgICAgcE5ld0ZpZWxkLkJpdFdpZHRoID0gV2lkdGgNCj4gDQo+ICsgICAgICAgIHBOZXdGaWVs ZC5BcnJheU51bSA9IDANCj4gDQo+ICsgICAgICAgIHBOZXdGaWVsZC5CaXRPZmZzZXQgPSAwDQo+ IA0KPiArICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gMA0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgc2VsZi5fX05ld0RhdGFUeXBlLk1lbWJlcnMgPT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuTWVtYmVycyA9IHBOZXdGaWVsZA0KPiANCj4gKyAgICAg ICAgICAgIHBOZXdGaWVsZC5OZXh0ID0gTm9uZQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ ICsgICAgICAgICAgICBwVG1wID0gc2VsZi5fX05ld0RhdGFUeXBlLk1lbWJlcnMNCj4gDQo+ICsg ICAgICAgICAgICB3aGlsZSBwVG1wLk5leHQgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcFRtcCA9IHBUbXAuTmV4dA0KPiANCj4gKyAgICAgICAgICAgIHBUbXAuTmV4dCA9IHBOZXdG aWVsZA0KPiANCj4gKyAgICAgICAgICAgIHBOZXdGaWVsZC5OZXh0ID0gTm9uZQ0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgaWYgRmllbGRJblVuaW9uOg0KPiANCj4gKyAgICAgICAgICAgIHBOZXdG aWVsZC5PZmZzZXQgPSAwDQo+IA0KPiArICAgICAgICAgICAgaWYgTWF4RGF0YVR5cGVTaXplIDwg cE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuX19OZXdEYXRhVHlwZS5Ub3RhbFNpemUgPSBwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6 ZQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAjIENoZWNrIHdoZXRo ZXIgdGhlIGJpdCBmaWVsZHMgY2FuIGJlIGNvbnRhaW5lZCB3aXRoaW4gb25lIEZpZWxkVHlwZS4N Cj4gDQo+ICsgICAgICAgICAgICBjb25kMSA9IChwVG1wICE9IE5vbmUpIGFuZCAocFRtcC5Jc0Jp dEZpZWxkKSBhbmQgKA0KPiANCj4gKyAgICAgICAgICAgICAgICBwVG1wLkZpZWxkVHlwZS5UeXBl TmFtZSA9PSBwTmV3RmllbGQuRmllbGRUeXBlLlR5cGVOYW1lKQ0KPiANCj4gKyAgICAgICAgICAg IGNvbmQyID0gKHBUbXAgIT0gTm9uZSkgYW5kIChwVG1wLkJpdE9mZnNldCAtIHBUbXAuT2Zmc2V0 ICogOCArDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBU bXAuQml0V2lkdGggKyBwTmV3RmllbGQuQml0V2lkdGggPD0NCj4gDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcE5ld0ZpZWxkLkZpZWxkVHlwZS5Ub3RhbFNpemUg KiA4KQ0KPiANCj4gKyAgICAgICAgICAgIGlmIGNvbmQxIGFuZCBjb25kMjoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcE5ld0ZpZWxkLkJpdE9mZnNldCA9IHBUbXAuQml0T2Zmc2V0ICsgcFRtcC5C aXRXaWR0aA0KPiANCj4gKyAgICAgICAgICAgICAgICBwTmV3RmllbGQuT2Zmc2V0ID0gcFRtcC5P ZmZzZXQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgcE5ld0ZpZWxkLkJpdFdp ZHRoID09IDA6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBwTmV3RmllbGQuQml0V2lkdGgg PSBwTmV3RmllbGQuRmllbGRUeXBlLlRvdGFsU2l6ZSAqIDggLSAoDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgcE5ld0ZpZWxkLkJpdE9mZnNldCAtIHBUbXAuT2Zmc2V0ICogOCkNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBwTmV3RmllbGQu Qml0T2Zmc2V0ID0gc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZSAqIDgNCj4gDQo+ICsgICAg ICAgICAgICAgICAgVXBkYXRlVG90YWxTaXplID0gVHJ1ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgVXBkYXRlVG90YWxTaXplOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19OZXdE YXRhVHlwZS5Ub3RhbFNpemUgJSBBbGlnbiA9PSAwOg0KPiANCj4gKyAgICAgICAgICAgICAgICBw TmV3RmllbGQuT2Zmc2V0ID0gc2VsZi5fX05ld0RhdGFUeXBlLlRvdGFsU2l6ZQ0KPiANCj4gKyAg ICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHBOZXdGaWVsZC5PZmZzZXQg PSBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplICsNCj4gc2VsZi5fX0FsaWduU3R1ZmYoDQo+ IA0KPiArICAgICAgICAgICAgICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplLCBB bGlnbikNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuVG90YWxTaXplID0g cE5ld0ZpZWxkLk9mZnNldCArDQo+IHBOZXdGaWVsZC5GaWVsZFR5cGUuVG90YWxTaXplDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBzZWxmLl9fTmV3RGF0YVR5cGUuQWxpZ24gPSBtaW4oDQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fX1BhY2tBbGlnbiwgbWF4KHBGaWVsZFR5cGUuQWxpZ24sIHNl bGYuX19OZXdEYXRhVHlwZS5BbGlnbikpDQo+IA0KPiArICAgICAgICBzZWxmLl9fTmV3RGF0YVR5 cGUuSGFzQml0RmllbGQgPSBUcnVlDQo+IA0KPiArICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldERhdGFUeXBl KHNlbGYsIFR5cGVOYW1lKToNCj4gDQo+ICsgICAgICAgIGlmIFR5cGVOYW1lID09IE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9F UlJPUl9TS0lQRUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIERhdGFUeXBlID0gc2VsZi5fX0Rh dGFUeXBlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgRGF0YVR5cGUgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBEYXRhVHlwZS5UeXBlTmFtZSA9PSBUeXBlTmFtZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgcmV0dXJuIERhdGFUeXBlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KPiANCj4gKyAgICAgICAgICAgIERhdGFUeXBlID0gRGF0YVR5cGUuTmV4dA0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIE5vbmUsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklO RUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIERhdGFUeXBlSGFzQml0RmllbGQoc2VsZiwgVHlw ZU5hbWUpOg0KPiANCj4gKyAgICAgICAgaWYgVHlwZU5hbWUgPT0gTm9uZToNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBUeXBlID0gc2Vs Zi5fX0RhdGFUeXBlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcFR5cGUgIT0gTm9uZToNCj4g DQo+ICsgICAgICAgICAgICBpZiBwVHlwZS5UeXBlTmFtZSA9PSBUeXBlTmFtZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgYnJlYWsNCj4gDQo+ICsgICAgICAgICAgICBwVHlwZSA9IHBUeXBlLk5l eHQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHBUeXBlID09IE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgcmV0dXJuIEZhbHNlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwVG1wID0gcFR5 cGUuTWVtYmVycw0KPiANCj4gKyAgICAgICAgd2hpbGUgcFRtcCAhPSBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIHBUbXAuSXNCaXRGaWVsZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0 dXJuIFRydWUNCj4gDQo+ICsgICAgICAgICAgICBwVG1wID0gcFRtcC5OZXh0DQo+IA0KPiArICAg ICAgICByZXR1cm4gRmFsc2UNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIER1bXAoc2VsZiwgRmls ZU5hbWUpOg0KPiANCj4gKyAgICAgICAgdHJ5Og0KPiANCj4gKyAgICAgICAgICAgIHdpdGggb3Bl bihGaWxlTmFtZSwgJ3cnKSBhcyBmOg0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCJQ YWNrQWxpZ24gPSAiICsgc3RyKHNlbGYuX19QYWNrQWxpZ24pICsgJ1xuJykNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcE5vZGUgPSBzZWxmLl9fRGF0YVR5cGVMaXN0DQo+IA0KPiArICAgICAgICAg ICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBm LndyaXRlKCdzdHJ1Y3Qge30gOiBBbGlnbiA6IHt9ICBUb3RhbFNpemUgOg0KPiAnLmZvcm1hdChz dHIocE5vZGUuVHlwZU5hbWUpLCBzdHIocE5vZGUuQWxpZ24pKSkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgICAgIGYud3JpdGUoJyUjeFxuJyUocE5vZGUuVG90YWxTaXplKSkNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICMgZi53cml0ZSgiIHN0cnVjdCAiICsgc3RyKHBOb2RlLlR5cGVOYW1l KSArICIgOiAiICsgIiBBbGlnbiAiICsNCj4gc3RyKHBOb2RlLkFsaWduKSkgKyAiIFRvdGFsU2l6 ZSAiICsgc3RyKCclI3gnJXBOb2RlLlRvdGFsU2l6ZSkpDQo+IA0KPiArICAgICAgICAgICAgICAg ICAgICBmLndyaXRlKCdzdHJ1Y3Qge30gXG4nLmZvcm1hdChzdHIocE5vZGUuVHlwZU5hbWUpKSkN Cj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIEZOb2RlID0gcE5vZGUuTWVtYmVycw0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgd2hpbGUoRk5vZGUgIT0gTm9uZSk6DQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgaWYgRk5vZGUuQXJyYXlOdW0gPiAwOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCdGaWVsZE5hbWUgOiB7fSAsIE9mZnNldCA6IHt9 LCBBcnJheU51bSA6IHt9ICwNCj4gRmllbGRUeXBlTmFtZSA6IHt9ICwgSXNCaXRGaWVsZCA6IHt9 IFxuICcuZm9ybWF0KHN0cihGTm9kZS5GaWVsZE5hbWUpLA0KPiBzdHIoRk5vZGUuT2Zmc2V0KSwg c3RyKEZOb2RlLkFycmF5TnVtKSwgc3RyKEZOb2RlLkZpZWxkVHlwZS5UeXBlTmFtZSksDQo+IHN0 cihGTm9kZS5Jc0JpdEZpZWxkKSkpDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgnRmllbGROYW1l IDoge30gLCBPZmZzZXQgOiB7fSwgRmllbGRUeXBlTmFtZSA6IHt9ICwNCj4gSXNCaXRGaWVsZCA6 IHt9IFxuICcuZm9ybWF0KHN0cihGTm9kZS5GaWVsZE5hbWUpLCBzdHIoRk5vZGUuT2Zmc2V0KSwN Cj4gc3RyKEZOb2RlLkZpZWxkVHlwZS5UeXBlTmFtZSksIHN0cihGTm9kZS5Jc0JpdEZpZWxkKSkp DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgRk5vZGUgPSBGTm9kZS5OZXh0DQo+IA0K PiArICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCdcbicpDQo+IA0KPiArICAgICAgICAgICAg ICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsgICAgICAgICAgICBmLmNsb3NlKCkN Cj4gDQo+ICsgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6DQo+IA0KPiArICAgICAgICAgICAg cHJpbnQoImVycm9yIikNCj4gDQo+ICsgICAgICAgICAgICBwYXNzDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgU1ZmckRlZmF1bHRTdG9yZU5vZGUob2JqZWN0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAg ZGVmIF9faW5pdF9fKHNlbGYsDQo+IA0KPiArICAgICAgICAgICAgICAgICBPYmpBZGRyPU5vbmUs DQo+IA0KPiArICAgICAgICAgICAgICAgICBSZWZOYW1lPScnLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgRGVmYXVsdFN0b3JlTmFtZUlkPTAsDQo+IA0KPiArICAgICAgICAgICAgICAgICBEZWZh dWx0SWQ9MCk6DQo+IA0KPiArICAgICAgICBzZWxmLk9iakFkZHIgPSBPYmpBZGRyDQo+IA0KPiAr ICAgICAgICBzZWxmLlJlZk5hbWUgPSBSZWZOYW1lDQo+IA0KPiArICAgICAgICBzZWxmLkRlZmF1 bHRTdG9yZU5hbWVJZCA9IERlZmF1bHRTdG9yZU5hbWVJZA0KPiANCj4gKyAgICAgICAgc2VsZi5E ZWZhdWx0SWQgPSBEZWZhdWx0SWQNCj4gDQo+ICsgICAgICAgIHNlbGYuTmV4dCA9IE5vbmUNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBDVmZyRGVmYXVsdFN0b3JlKG9iamVjdCk6DQo+ IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNl bGYuX19EZWZhdWx0U3RvcmVMaXN0ID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgUmVn aXN0ZXJEZWZhdWx0U3RvcmUoc2VsZiwgT2JqQWRkcjogRUZJX0lGUl9ERUZBVUxUU1RPUkUsDQo+ IFJlZk5hbWUsIERlZmF1bHRTdG9yZU5hbWVJZCwgRGVmYXVsdElkKToNCj4gDQo+ICsgICAgICAg IGlmIFJlZk5hbWUgPT0gJycgb3IgUmVmTmFtZSA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5fX0RlZmF1bHRTdG9yZUxpc3QNCj4gDQo+ICsgICAg ICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuUmVm TmFtZSA9PSBSZWZOYW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5v ZGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyRGVmYXVsdFN0b3Jl Tm9kZShPYmpBZGRyLCBSZWZOYW1lLA0KPiBEZWZhdWx0U3RvcmVOYW1lSWQsIERlZmF1bHRJZCkN Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHBOb2RlID09IE5vbmU6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUuTmV4dCA9IHNlbGYuX19EZWZhdWx0U3RvcmVM aXN0DQo+IA0KPiArICAgICAgICBzZWxmLl9fRGVmYXVsdFN0b3JlTGlzdCA9IHBOb2RlDQo+IA0K PiArDQo+IA0KPiArICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NF U1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIERlZmF1bHRJZFJlZ2lzdGVyZWQoc2VsZiwgRGVm YXVsdElkKToNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5fX0RlZmF1bHRTdG9yZUxpc3QN Cj4gDQo+ICsgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg aWYgcE5vZGUuRGVmYXVsdElkID09IERlZmF1bHRJZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIFRydWUNCj4gDQo+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBGYWxzZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg UmVSZWdpc3RlckRlZmF1bHRTdG9yZUJ5SWQoc2VsZiwgRGVmYXVsdElkLCBSZWZOYW1lLA0KPiBE ZWZhdWx0U3RvcmVOYW1lSWQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBzZWxm Ll9fRGVmYXVsdFN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5EZWZhdWx0SWQgPT0gRGVmYXVsdElkOg0KPiAN Cj4gKyAgICAgICAgICAgICAgICBicmVhaw0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5v ZGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgcE5vZGUgPT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVG SU5FRA0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5E ZWZhdWx0U3RvcmVOYW1lSWQgPT0gRUZJX1NUUklOR19JRF9JTlZBTElEOg0KPiANCj4gKyAgICAg ICAgICAgICAgICBwTm9kZS5EZWZhdWx0U3RvcmVOYW1lSWQgPT0gRGVmYXVsdFN0b3JlTmFtZUlk DQo+IA0KPiArICAgICAgICAgICAgICAgIHBOb2RlLlJlZk5hbWUgPSBSZWZOYW1lDQo+IA0KPiAr ICAgICAgICAgICAgICAgIGlmIHBOb2RlLk9iakFkZHIgIT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHBOb2RlLk9iakFkZHIuRGVmYXVsdE5hbWUgPSBEZWZhdWx0U3RvcmVOYW1l SWQNCj4gDQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1 cm4gTm9uZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIHBOb2RlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VT Uw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0RGVmYXVsdElkKHNlbGYsIFJlZk5hbWUpOg0K PiANCj4gKyAgICAgICAgcFRtcCA9IHNlbGYuX19EZWZhdWx0U3RvcmVMaXN0DQo+IA0KPiArICAg ICAgICB3aGlsZShwVG1wICE9IE5vbmUpOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBUbXAuUmVm TmFtZSA9PSBSZWZOYW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBEZWZhdWx0SWQgPSBwVG1w LkRlZmF1bHRJZA0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gRGVmYXVsdElkLCBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKyAgICAgICAgICAgIHBUbXAgPSBw VG1wLk5leHQNCj4gDQo+ICsgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fVU5ERUZJTkVEDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBCdWZmZXJWYXJTdG9yZUFs dENvbmZpZ0FkZChzZWxmLCBEZWZhdWx0SWQsIEJhc2VJbmZvLCBWYXJTdG9yZU5hbWUsDQo+IA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUd1aWQsIFR5cGUs IFZhbHVlKToNCj4gDQo+ICsgICAgICAgIGlmIFZhclN0b3JlTmFtZSA9PSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1IN Cj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5fX0RlZmF1bHRTdG9yZUxpc3QNCj4gDQo+ICsg ICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUu RGVmYXVsdElkID09IERlZmF1bHRJZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgYnJlYWsNCj4g DQo+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsgICAgICAgIGlmIHBO b2RlID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9VTkRFRklORUQNCj4gDQo+ICsgICAgICAgICMgcE5vZGUuRGVmYXVsdElkIHNwcmlu dGYgKE5ld0FsdENmZywgIiUwNHgiLCBwTm9kZS0+bURlZmF1bHRJZCkNCj4gDQo+ICsgICAgICAg IGdDVmZyQnVmZmVyQ29uZmlnLk9wZW4oKQ0KPiANCj4gKyAgICAgICAgaWYgZ0NWZnJCdWZmZXJD b25maWcuU2VsZWN0KFZhclN0b3JlTmFtZSwgVmFyU3RvcmVHdWlkKSA9PSAwOg0KPiANCj4gKyAg ICAgICAgICAgIFJldHVybnZhbHVlID0gZ0NWZnJCdWZmZXJDb25maWcuV3JpdGUoJ2EnLCBWYXJT dG9yZU5hbWUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBWYXJTdG9yZUd1aWQsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwTm9kZS5EZWZhdWx0SWQsIFR5cGUsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlSW5m by5JbmZvLlZhck9mZnNldCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJhc2VJbmZvLlZhclRvdGFsU2l6ZSwgVmFsdWUpDQo+IA0KPiAr ICAgICAgICAgICAgaWYgUmV0dXJudmFsdWUgIT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAg Z0NWZnJCdWZmZXJDb25maWcuQ2xvc2UoKQ0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4g VmZyUmV0dXJuQ29kZShSZXR1cm52YWx1ZSkNCj4gDQo+ICsgICAgICAgIGdDVmZyQnVmZmVyQ29u ZmlnLkNsb3NlKCkNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gKw0KPiANCj4gK2NsYXNzIEVGSV9W RlJfVkFSU1RPUkVfVFlQRShFbnVtKToNCj4gDQo+ICsgICAgRUZJX1ZGUl9WQVJTVE9SRV9JTlZB TElEID0gMA0KPiANCj4gKyAgICBFRklfVkZSX1ZBUlNUT1JFX0JVRkZFUiA9IDENCj4gDQo+ICsg ICAgRUZJX1ZGUl9WQVJTVE9SRV9FRkkgPSAyDQo+IA0KPiArICAgIEVGSV9WRlJfVkFSU1RPUkVf TkFNRSA9IDMNCj4gDQo+ICsgICAgRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVJfQklUUyA9IDQNCj4g DQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBFZmlWYXIoKToNCj4gDQo+ICsNCj4gDQo+ICsg ICAgZGVmIF9faW5pdF9fKHNlbGYsIFZhck5hbWU9MCwgVmFyU2l6ZT0wKToNCj4gDQo+ICsgICAg ICAgIHNlbGYuRWZpVmFyTmFtZSA9IFZhck5hbWUNCj4gDQo+ICsgICAgICAgIHNlbGYuRWZpVmFy U2l6ZSA9IFZhclNpemUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtERUZBVUxUX05BTUVfVEFC TEVfSVRFTVMgPSAxMDI0DQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgU1ZmclZhclN0 b3JhZ2VOb2RlKCk6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgVmFyU3RvcmVOYW1lPScnLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgVmFyU3RvcmVJZD0wLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgR3VpZD1Ob25lLA0K PiANCj4gKyAgICAgICAgICAgICAgICAgQXR0cmlidXRlcz0wLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgRmxhZz1UcnVlLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgRWZpVmFsdWU9Tm9uZSwN Cj4gDQo+ICsgICAgICAgICAgICAgICAgIERhdGFUeXBlPU5vbmUsDQo+IA0KPiArICAgICAgICAg ICAgICAgICBCaXRzVmFyc3RvcmU9RmFsc2UpOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2Vs Zi5HdWlkID0gR3VpZA0KPiANCj4gKyAgICAgICAgc2VsZi5WYXJTdG9yZU5hbWUgPSBWYXJTdG9y ZU5hbWUNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVJZCA9IFZhclN0b3JlSWQNCj4gDQo+ ICsgICAgICAgIHNlbGYuQXNzaWduZWRGbGFnID0gRmxhZw0KPiANCj4gKyAgICAgICAgc2VsZi5B dHRyaWJ1dGVzID0gQXR0cmlidXRlcw0KPiANCj4gKyAgICAgICAgc2VsZi5OZXh0ID0gTm9uZQ0K PiANCj4gKyAgICAgICAgc2VsZi5FZmlWYXIgPSBFZmlWYWx1ZQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5EYXRhVHlwZSA9IERhdGFUeXBlDQo+IA0KPiArICAgICAgICBzZWxmLk5hbWVTcGFjZSA9IFtd DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBFZmlWYWx1ZSAhPSBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgIHNlbGYuVmFyc3RvcmVUeXBlID0NCj4gRUZJX1ZGUl9WQVJTVE9SRV9UWVBFLkVG SV9WRlJfVkFSU1RPUkVfRUZJDQo+IA0KPiArICAgICAgICBlbGlmIERhdGFUeXBlICE9IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgaWYgQml0c1ZhcnN0b3JlOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLlZhcnN0b3JlVHlwZSA9DQo+IEVGSV9WRlJfVkFSU1RPUkVfVFlQRS5FRklfVkZS X1ZBUlNUT1JFX0JVRkZFUl9CSVRTDQo+IA0KPiArICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsg ICAgICAgICAgICAgICAgc2VsZi5WYXJzdG9yZVR5cGUgPQ0KPiBFRklfVkZSX1ZBUlNUT1JFX1RZ UEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVINCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgc2VsZi5WYXJzdG9yZVR5cGUgPQ0KPiBFRklfVkZSX1ZBUlNUT1JFX1RZUEUu RUZJX1ZGUl9WQVJTVE9SRV9OQU1FDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgU0NvbmZpZ0l0ZW0o KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYsDQo+IA0KPiArICAgICAg ICAgICAgICAgICBOYW1lPU5vbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICBHdWlkPU5vbmUs DQo+IA0KPiArICAgICAgICAgICAgICAgICBJZD1Ob25lLA0KPiANCj4gKyAgICAgICAgICAgICAg ICAgVHlwZT1Ob25lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgT2Zmc2V0PU5vbmUsDQo+IA0K PiArICAgICAgICAgICAgICAgICBXaWR0aD1Ob25lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg VmFsdWU9Tm9uZSk6DQo+IA0KPiArICAgICAgICBzZWxmLk5hbWUgPSBOYW1lICAjIHZhcnN0b3Jl IG5hbWUNCj4gDQo+ICsgICAgICAgIHNlbGYuR3VpZCA9IEd1aWQgICMgdmFyc3RvcmUgZ3VpZCwg dmFyc3RvcmUgbmFtZSArIGd1aWQgZGVzaWRlIG9uZQ0KPiB2YXJzdG9yZQ0KPiANCj4gKyAgICAg ICAgc2VsZi5JZCA9IElkICAjIGRlZmF1bHQgSUQNCj4gDQo+ICsgICAgICAgIGlmIFR5cGUgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICAjIGxpc3Qgb2YgT2Zmc2V0L1ZhbHVlIGluIHRoZSB2 YXJzdG9yZQ0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuSW5mb1N0ckxpc3QgPSBTQ29uZmlnSW5m byhUeXBlLCBPZmZzZXQsIFdpZHRoLCBWYWx1ZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5JbmZvU3RyTGlzdCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNl bGYuTmV4dCA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFzcyBTQ29uZmlnSW5m bygpOg0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19pbml0X18oc2VsZiwgVHlwZSwgT2Zmc2V0 LCBXaWR0aCwgVmFsdWU6IEVGSV9JRlJfVFlQRV9WQUxVRSk6DQo+IA0KPiArICAgICAgICBzZWxm LlR5cGUgPSBUeXBlDQo+IA0KPiArICAgICAgICBzZWxmLk9mZnNldCA9IE9mZnNldA0KPiANCj4g KyAgICAgICAgc2VsZi5XaWR0aCA9IFdpZHRoDQo+IA0KPiArICAgICAgICBzZWxmLk5leHQgPSBO b25lDQo+IA0KPiArICAgICAgICBzZWxmLlZhbHVlID0gVmFsdWUNCj4gDQo+ICsNCj4gDQo+ICtj bGFzcyBDVmZyQnVmZmVyQ29uZmlnKG9iamVjdCk6DQo+IA0KPiArICAgIF9fbWV0YWNsYXNzX18g PSBBQkNNZXRhDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19JdGVtTGlzdEhlYWQgPSBOb25lICAjIFNDb25maWdJdGVtDQo+IA0K PiArICAgICAgICBzZWxmLl9fSXRlbUxpc3RUYWlsID0gTm9uZQ0KPiANCj4gKyAgICAgICAgc2Vs Zi5fX0l0ZW1MaXN0UG9zID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0VmFySXRl bUxpc3Qoc2VsZik6DQo+IA0KPiArICAgICAgICByZXR1cm4gc2VsZi5fX0l0ZW1MaXN0SGVhZA0K PiANCj4gKw0KPiANCj4gKyAgICBAYWJzdHJhY3RtZXRob2QNCj4gDQo+ICsgICAgZGVmIE9wZW4o c2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBzZWxmLl9fSXRlbUxp c3RIZWFkDQo+IA0KPiArDQo+IA0KPiArICAgIEBhYnN0cmFjdG1ldGhvZA0KPiANCj4gKyAgICBk ZWYgQ2xvc2Uoc2VsZik6DQo+IA0KPiArICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBOb25l DQo+IA0KPiArDQo+IA0KPiArICAgIEBhYnN0cmFjdG1ldGhvZA0KPiANCj4gKyAgICBkZWYgU2Vs ZWN0KHNlbGYsIE5hbWUsIEd1aWQsIElkPU5vbmUpOg0KPiANCj4gKyAgICAgICAgaWYgTmFtZSA9 PSBOb25lIG9yIEd1aWQgPT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fSXRlbUxp c3RQb3MgPSBzZWxmLl9fSXRlbUxpc3RIZWFkDQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIDAN Cj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcCA9IHNlbGYuX19JdGVt TGlzdEhlYWQNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZSBwICE9IE5vbmU6DQo+IA0KPiArICAg ICAgICAgICAgICAgIGlmIHAuTmFtZSAhPSBOYW1lIG9yIHAuR3VpZC5fX2NtcF9fKEd1aWQpID09 IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcCA9IHAuTmV4dA0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgY29udGludWUNCj4gDQo+ICsgICAgICAgICAgICAgICAgaWYgSWQg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIHAuSWQgPT0gTm9uZSBvciBw LklkICE9IElkOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBwLk5leHQNCj4g DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KPiANCj4gKyAgICAgICAgICAg ICAgICBlbGlmIHAuSWQgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHAgPSBw Lk5leHQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlDQo+IA0KPiArICAgICAg ICAgICAgICAgIHNlbGYuX19JdGVtTGlzdFBvcyA9IHANCj4gDQo+ICsgICAgICAgICAgICAgICAg cmV0dXJuIDANCj4gDQo+ICsgICAgICAgIHJldHVybiAxDQo+IA0KPiArDQo+IA0KPiArICAgIEBh YnN0cmFjdG1ldGhvZA0KPiANCj4gKyAgICBkZWYgUmVnaXN0ZXIoc2VsZiwgTmFtZSwgR3VpZCwg SWQ9Tm9uZSk6DQo+IA0KPiArICAgICAgICBpZiBzZWxmLlNlbGVjdChOYW1lLCBHdWlkKSA9PSAw Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiAxDQo+IA0KPiArICAgICAgICBwTmV3ID0gU0Nv bmZpZ0l0ZW0oTmFtZSwgR3VpZCwgSWQpDQo+IA0KPiArICAgICAgICBpZiBwTmV3ID09IE5vbmU6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIDINCj4gDQo+ICsgICAgICAgIGlmIHNlbGYuX19J dGVtTGlzdEhlYWQgPT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RI ZWFkID0gcE5ldw0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19JdGVtTGlzdFRhaWwgPSBwTmV3 DQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19JdGVtTGlz dFRhaWwuTmV4dCA9IHBOZXcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RUYWls ID0gcE5ldw0KPiANCj4gKyAgICAgICAgc2VsZi5fX0l0ZW1MaXN0UG9zID0gcE5ldw0KPiANCj4g KyAgICAgICAgcmV0dXJuIDANCj4gDQo+ICsNCj4gDQo+ICsgICAgQGFic3RyYWN0bWV0aG9kDQo+ IA0KPiArICAgIGRlZiBXcml0ZShzZWxmLCBNb2RlLCBOYW1lLCBHdWlkLCBJZCwgVHlwZSwgT2Zm c2V0LCBXaWR0aCwNCj4gDQo+ICsgICAgICAgICAgICAgIFZhbHVlOiBFRklfSUZSX1RZUEVfVkFM VUUpOg0KPiANCj4gKyAgICAgICAgUmV0ID0gc2VsZi5TZWxlY3QoTmFtZSwgR3VpZCkNCj4gDQo+ ICsgICAgICAgIGlmIFJldCAhPSAwOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBSZXQNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIE1vZGUgPT0gJ2EnOiAgIyBhZGQNCj4gDQo+ICsgICAg ICAgICAgICBpZiBzZWxmLlNlbGVjdChOYW1lLCBHdWlkLCBJZCkgIT0gMDoNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcEl0ZW0gPSBTQ29uZmlnSXRlbShOYW1lLCBHdWlkLCBJZCwgVHlwZSwgT2Zm c2V0LCBXaWR0aCwgVmFsdWUpDQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHBJdGVtID09IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gMg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgICAgICAgICBpZiBzZWxmLl9fSXRlbUxpc3RIZWFkID09IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RIZWFkID0gcEl0ZW0NCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgIHNlbGYuX19JdGVtTGlzdFRhaWwgPSBwSXRlbQ0KPiANCj4gKyAg ICAgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fX0l0 ZW1MaXN0VGFpbC5OZXh0ID0gcEl0ZW0NCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYu X19JdGVtTGlzdFRhaWwgPSBwSXRlbQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBz ZWxmLl9fSXRlbUxpc3RQb3MgPSBwSXRlbQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGVs c2U6DQo+IA0KPiArICAgICAgICAgICAgICAgICMgdHJhbnZlcnNlIHRoZSBsaXN0IHRvIGZpbmQg b3V0IGlmIHRoZXJlJ3MgYWxyZWFkeSB0aGUgdmFsdWUgZm9yIHRoZQ0KPiBzYW1lIG9mZnNldA0K PiANCj4gKyAgICAgICAgICAgICAgICBwSW5mbyA9IHNlbGYuX19JdGVtTGlzdFBvcy5JbmZvU3Ry TGlzdA0KPiANCj4gKyAgICAgICAgICAgICAgICB3aGlsZSBwSW5mbyAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgaWYgcEluZm8uT2Zmc2V0ID09IE9mZnNldDoNCj4gDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgcEluZm8gPSBwSW5mby5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgICAgIHBJ bmZvID0gU0NvbmZpZ0luZm8oVHlwZSwgT2Zmc2V0LCBXaWR0aCwgVmFsdWUpDQo+IA0KPiArICAg ICAgICAgICAgICAgIGlmIHBJbmZvID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICByZXR1cm4gMg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgICAgICBwSW5mby5OZXh0ID0g c2VsZi5fX0l0ZW1MaXN0UG9zLkluZm9TdHJMaXN0DQo+IA0KPiArICAgICAgICAgICAgICAgIHNl bGYuX19JdGVtTGlzdFBvcy5JbmZvU3RyTGlzdCA9IHBJbmZvDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBlbGlmIE1vZGUgPT0gJ2QnOiAgIyBkZWxldGUNCj4gDQo+ICsgICAgICAgICAgICBpZiBz ZWxmLl9fSXRlbUxpc3RIZWFkID09IHNlbGYuX19JdGVtTGlzdFBvczoNCj4gDQo+ICsgICAgICAg ICAgICAgICAgc2VsZi5fX0l0ZW1MaXN0SGVhZCA9IHNlbGYuX19JdGVtTGlzdFBvcy5OZXh0DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICAgICAgcEl0ZW0gPSBzZWxmLl9fSXRlbUxpc3RIZWFkDQo+ IA0KPiArICAgICAgICAgICAgd2hpbGUgcEl0ZW0uTmV4dCAhPSBzZWxmLl9fSXRlbUxpc3RQb3M6 DQo+IA0KPiArICAgICAgICAgICAgICAgIHBJdGVtID0gcEl0ZW0uTmV4dA0KPiANCj4gKyAgICAg ICAgICAgIHBJdGVtLk5leHQgPSBzZWxmLl9fSXRlbUxpc3RQb3MuTmV4dA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19JdGVtTGlzdFRhaWwgPT0gc2VsZi5fX0l0ZW1MaXN0 UG9zOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RUYWlsID0gcEl0ZW0N Cj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fSXRlbUxpc3RQb3MgPSBwSXRlbS5O ZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBlbGlmIE1vZGUgPT0gJ2knOiAgIyBzZXQgaW5m bw0KPiANCj4gKyAgICAgICAgICAgIGlmIElkICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg ICAgIHNlbGYuX19JdGVtTGlzdFBvcy5JZCA9IElkDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiAN Cj4gKyAgICAgICAgICAgIHJldHVybiAxDQo+IA0KPiArICAgICAgICByZXR1cm4gMA0KPiANCj4g Kw0KPiANCj4gK2dDVmZyQnVmZmVyQ29uZmlnID0gQ1ZmckJ1ZmZlckNvbmZpZygpDQo+IA0KPiAr DQo+IA0KPiArY2xhc3MgRUZJX1ZBUlNUT1JFX0lORk8oU3RydWN0dXJlKToNCj4gDQo+ICsgICAg X3BhY2tfID0gMQ0KPiANCj4gKyAgICBfZmllbGRzXyA9IFsNCj4gDQo+ICsgICAgICAgICgnVmFy U3RvcmVJZCcsIGNfdWludDE2KSwNCj4gDQo+ICsgICAgICAgICgnSW5mbycsIFZhclN0b3JlSW5m b05vZGUpLA0KPiANCj4gKyAgICAgICAgKCdWYXJUeXBlJywgY191aW50OCksDQo+IA0KPiArICAg ICAgICAoJ1ZhclRvdGFsU2l6ZScsIGNfdWludDMyKSwNCj4gDQo+ICsgICAgICAgICgnSXNCaXRW YXInLCBjX2Jvb2wpLA0KPiANCj4gKyAgICBdDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgVmFyU3RvcmVJZD1FRklfVkFSU1RP UkVfSURfSU5WQUxJRCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgIFZhck5hbWU9RUZJX1NUUklO R19JRF9JTlZBTElELA0KPiANCj4gKyAgICAgICAgICAgICAgICAgVmFyT2Zmc2V0PUVGSV9WQVJP RkZTRVRfSU5WQUxJRCwNCj4gDQo+ICsgICAgICAgICAgICAgICAgIFZhclR5cGU9RUZJX0lGUl9U WVBFX09USEVSLA0KPiANCj4gKyAgICAgICAgICAgICAgICAgVmFyVG90YWxTaXplPTAsDQo+IA0K PiArICAgICAgICAgICAgICAgICBJc0JpdFZhcj1GYWxzZSk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBzZWxmLlZhclN0b3JlSWQgPSBWYXJTdG9yZUlkDQo+IA0KPiArICAgICAgICBzZWxmLklu Zm8uVmFyTmFtZSA9IFZhck5hbWUNCj4gDQo+ICsgICAgICAgIHNlbGYuSW5mby5WYXJPZmZzZXQg PSBWYXJPZmZzZXQNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyVG90YWxTaXplID0gVmFyVG90YWxT aXplDQo+IA0KPiArICAgICAgICBzZWxmLklzQml0VmFyID0gSXNCaXRWYXINCj4gDQo+ICsgICAg ICAgIHNlbGYuVmFyVHlwZSA9IFZhclR5cGUNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBCdWZmZXJWYXJTdG9yZUZpZWxkSW5mb05vZGUoKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IF9faW5pdF9fKHNlbGYsIEJhc2VJbmZvOiBFRklfVkFSU1RPUkVfSU5GTyk6DQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBzZWxmLlZhclN0b3JlSW5mbyA9IEVGSV9WQVJTVE9SRV9JTkZPKCkNCj4g DQo+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVJbmZvLlZhclR5cGUgPSBCYXNlSW5mby5WYXJUeXBl DQo+IA0KPiArICAgICAgICBzZWxmLlZhclN0b3JlSW5mby5WYXJUb3RhbFNpemUgPSBCYXNlSW5m by5WYXJUb3RhbFNpemUNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFyU3RvcmVJbmZvLkluZm8uVmFy T2Zmc2V0ID0gQmFzZUluZm8uSW5mby5WYXJPZmZzZXQNCj4gDQo+ICsgICAgICAgIHNlbGYuVmFy U3RvcmVJbmZvLlZhclN0b3JlSWQgPSBCYXNlSW5mby5WYXJTdG9yZUlkDQo+IA0KPiArICAgICAg ICBzZWxmLk5leHQgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ1ZmckRh dGFTdG9yYWdlKG9iamVjdCk6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRfXyhzZWxm KToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QgPSBOb25lICAjIFNW ZnJWYXJTdG9yYWdlTm9kZQ0KPiANCj4gKyAgICAgICAgc2VsZi5fX0VmaVZhclN0b3JlTGlzdCA9 IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuX19OYW1lVmFyU3RvcmVMaXN0ID0gTm9uZQ0KPiAN Cj4gKyAgICAgICAgc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCj4gDQo+ICsgICAg ICAgIHNlbGYuX19OZXdWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYu X19CdWZmZXJGaWVsZEluZm9MaXN0SGVhZCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHNlbGYuX19t QnVmZmVyRmllbGRJbmZvTGlzdFRhaWwgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLl9fRnJl ZVZhclN0b3JlSWRCaXRNYXAgPSBbXQ0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwg RUZJX0ZSRUVfVkFSU1RPUkVfSURfQklUTUFQX1NJWkUpOg0KPiANCj4gKyAgICAgICAgICAgIHNl bGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcC5hcHBlbmQoMCkNCj4gDQo+ICsgICAgICAgICNRdWVz dGlvbiBJRDAgaXMgcmVzZXJ2ZWQNCj4gDQo+ICsgICAgICAgIHNlbGYuX19GcmVlVmFyU3RvcmVJ ZEJpdE1hcFswXSA9IDB4ODAwMDAwMDANCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldEJ1ZmZl clZhclN0b3JlTGlzdChzZWxmKToNCj4gDQo+ICsgICAgICAgIHJldHVybiBzZWxmLl9fQnVmZmVy VmFyU3RvcmVMaXN0DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX0NoZWNrR3VpZEZpZWxkKHNl bGYsIHBOb2RlLCBTdG9yZUd1aWQsIEhhc0ZvdW5kT25lLA0KPiBSZXR1cm5Db2RlKToNCj4gDQo+ ICsgICAgICAgIGlmIFN0b3JlR3VpZCAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICPjgIBJ ZiBoYXMgZ3VpZCBpbmZvLCBjb21wYXJlIHRoZSBndWlkIGZpbGVkLg0KPiANCj4gKyAgICAgICAg ICAgIGlmIHBOb2RlLkd1aWQuX19jbXBfXyhTdG9yZUd1aWQpOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlID0gcE5vZGUNCj4gDQo+ICsgICAgICAgICAg ICAgICAgUmV0dXJuQ29kZSA9IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0K PiArICAgICAgICAgICAgICAgIHJldHVybiBUcnVlLCBSZXR1cm5Db2RlLCBIYXNGb3VuZE9uZQ0K PiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICAj44CAbm90IGhhcyBHdWlk IGZpZWxkLCBjaGVjayB3aGV0aGVyIHRoaXMgbmFtZSBpcyB0aGUgb25seSBvbmUuDQo+IA0KPiAr ICAgICAgICAgICAgaWYgSGFzRm91bmRPbmU6DQo+IA0KPiArICAgICAgICAgICAgICAgICMgIFRo ZSBuYW1lIGhhcyBjb25mbGljdCwgcmV0dXJuIG5hbWUgcmVkZWZpbmVkLg0KPiANCj4gKyAgICAg ICAgICAgICAgICBSZXR1cm5Db2RlID0NCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNU T1JFX05BTUVfUkVERUZJTkVEX0VSUk9SDQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBU cnVlLCBSZXR1cm5Db2RlLCBIYXNGb3VuZE9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IHNlbGYuX19DdXJyVmFyU3RvcmFnZU5vZGUgPSBwTm9kZQ0KPiANCj4gKyAgICAgICAgICAgIEhh c0ZvdW5kT25lID0gVHJ1ZQ0KPiANCj4gKyAgICAgICAgcmV0dXJuIEZhbHNlLCBSZXR1cm5Db2Rl LCBIYXNGb3VuZE9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgX19HZXRWYXJTdG9yZUJ5RGF0 YVR5cGUoc2VsZiwgRGF0YVR5cGVOYW1lLCBWYXJHdWlkKToNCj4gDQo+ICsgICAgICAgIE1hdGNo Tm9kZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5fX0J1ZmZlclZhclN0b3Jl TGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBwTm9kZS5EYXRhVHlwZS5UeXBlTmFtZSAhPSBEYXRhVHlwZU5hbWU6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKyAgICAgICAgICAgICAg ICBjb250aW51ZQ0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhckd1aWQgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgaWYgcE5vZGUuR3VpZC5fX2NtcF9fKFZhckd1aWQpOg0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBOb2RlLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fU1VDQ0VTUw0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAg ICAgIGlmIE1hdGNoTm9kZSA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTWF0 Y2hOb2RlID0gcE5vZGUNCj4gDQo+ICsgICAgICAgICAgICAgICAgZWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgICMgTW9yZSB0aGFuIG9uZSB2YXJzdG9yZXMgcmVmZXJyZWQgdGhlIHNh bWUgZGF0YSBzdHJ1Y3R1cmVzDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9u ZSwNCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFX0RBVEFUWVBFX1JFREVGSU5F RF9FUlJPUg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgaWYgTWF0Y2hOb2RlID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIE1hdGNoTm9kZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1VOREVGSU5FRA0KPiAN Cj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIE1hdGNoTm9kZSwgVmZyUmV0dXJuQ29kZS5WRlJf UkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgIiIiDQo+IA0KPiArICAgICAgIEJh c2Ugb24gdGhlIGlucHV0IHN0b3JlIG5hbWUgYW5kIGd1aWQgdG8gZmluZCB0aGUgdmFyc3RvcmUg aWQuDQo+IA0KPiArICAgICAgIElmIGJvdGggbmFtZSBhbmQgZ3VpZCBhcmUgaW5wdXRlZCwgYmFz ZSBvbiB0aGUgbmFtZSBhbmQgZ3VpZCB0bw0KPiANCj4gKyAgICAgICBmb3VuZCB0aGUgdmFyc3Rv cmUuIElmIG9ubHkgbmFtZSBpbnB1dGVkLCBiYXNlIG9uIHRoZSBuYW1lIHRvDQo+IA0KPiArICAg ICAgIGZvdW5kIHRoZSB2YXJzdG9yZSBhbmQgZ28gb24gdG8gY2hlY2sgd2hldGhlciBtb3JlIHRo YW4gb25lIHZhcnN0b3JlDQo+IA0KPiArICAgICAgIGhhcyB0aGUgc2FtZSBuYW1lLiBJZiBvbmx5 IGhhcyBmb3VuZCBvbmUgdmFyc3RvcmUsIHJldHVybiB0aGlzDQo+IA0KPiArICAgICAgIHZhcnN0 b3JlOyBpZiBtb3JlIHRoYW4gb25lIHZhcnN0b3JlIGhhcyBzYW1lIG5hbWUsIHJldHVybiB2YXJz dG9yZQ0KPiANCj4gKyAgICAgICBuYW1lIHJlZGVmaW5lZCBlcnJvci4gSWYgbm8gdmFyc3RvcmUg Zm91bmQgYnkgdmFyc3RvcmUgbmFtZSwgY2FsbA0KPiANCj4gKyAgICAgICBmdW5jdGlvbiBHZXRW YXJTdG9yZUJ5RGF0YVR5cGUgYW5kIHVzZSBpbnB1dGVkIHZhcnN0b3JlIG5hbWUgYXMNCj4gDQo+ ICsgICAgICAgZGF0YSB0eXBlIG5hbWUgdG8gc2VhcmNoLg0KPiANCj4gKyAgICAgICAiIiINCj4g DQo+ICsNCj4gDQo+ICsgICAgZGVmIEdldFZhclN0b3JlSWQoc2VsZiwgU3RvcmVOYW1lLCBTdG9y ZUd1aWQ9Tm9uZSk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBSZXR1cm5Db2RlID0gTm9uZQ0K PiANCj4gKyAgICAgICAgSGFzRm91bmRPbmUgPSBGYWxzZQ0KPiANCj4gKyAgICAgICAgc2VsZi5f X0N1cnJWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2Rl ID0gc2VsZi5fX0J1ZmZlclZhclN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUg IT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZU5hbWUgPT0gU3Rv cmVOYW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBSZXN1bHQsIFJldHVybkNvZGUsIEhhc0Zv dW5kT25lID0gc2VsZi5fX0NoZWNrR3VpZEZpZWxkKA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgcE5vZGUsIFN0b3JlR3VpZCwgSGFzRm91bmRPbmUsIFJldHVybkNvZGUpDQo+IA0KPiArICAg ICAgICAgICAgICAgIGlmIFJlc3VsdDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhclN0 b3JlSWQgPSBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3JlSWQNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZUlkLCBSZXR1cm5Db2RlDQo+IA0KPiArICAg ICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9k ZSA9IHNlbGYuX19FZmlWYXJTdG9yZUxpc3QNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBOb2RlICE9 IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVOYW1lID09IFN0b3Jl TmFtZToNCj4gDQo+ICsgICAgICAgICAgICAgICAgUmVzdWx0LCBSZXR1cm5Db2RlLCBIYXNGb3Vu ZE9uZSA9IHNlbGYuX19DaGVja0d1aWRGaWVsZCgNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAg IHBOb2RlLCBTdG9yZUd1aWQsIEhhc0ZvdW5kT25lLCBSZXR1cm5Db2RlKQ0KPiANCj4gKyAgICAg ICAgICAgICAgICBpZiBSZXN1bHQ6DQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBWYXJTdG9y ZUlkID0gc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZS5WYXJTdG9yZUlkDQo+IA0KPiArICAgICAg ICAgICAgICAgICAgICByZXR1cm4gVmFyU3RvcmVJZCwgUmV0dXJuQ29kZQ0KPiANCj4gKyAgICAg ICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUg PSBzZWxmLl9fTmFtZVZhclN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZU5hbWUgPT0gU3RvcmVO YW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBSZXN1bHQsIFJldHVybkNvZGUsIEhhc0ZvdW5k T25lID0gc2VsZi5fX0NoZWNrR3VpZEZpZWxkKA0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAg cE5vZGUsIFN0b3JlR3VpZCwgSGFzRm91bmRPbmUsIFJldHVybkNvZGUpDQo+IA0KPiArICAgICAg ICAgICAgICAgIGlmIFJlc3VsdDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIFZhclN0b3Jl SWQgPSBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLlZhclN0b3JlSWQNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZUlkLCBSZXR1cm5Db2RlDQo+IA0KPiArICAgICAg ICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBIYXNG b3VuZE9uZToNCj4gDQo+ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0gc2VsZi5fX0N1cnJWYXJT dG9yYWdlTm9kZS5WYXJTdG9yZUlkDQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZhclN0b3Jl SWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBWYXJTdG9yZUlkID0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQNCj4gDQo+ICsgICAgICAg IHBOb2RlLCBSZXR1cm5Db2RlID0gc2VsZi5fX0dldFZhclN0b3JlQnlEYXRhVHlwZShTdG9yZU5h bWUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU3RvcmVHdWlkKSAgIw0KPiANCj4gKyAgICAgICAgaWYgcE5vZGUgIT0gTm9u ZToNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlID0gcE5vZGUN Cj4gDQo+ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0gcE5vZGUuVmFyU3RvcmVJZA0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZhclN0b3JlSWQsIFJldHVybkNvZGUNCj4gDQo+ICsN Cj4gDQo+ICsgICAgZGVmIF9fR2V0RnJlZVZhclN0b3JlSWQoc2VsZiwgVmFyVHlwZSk6DQo+IA0K PiArDQo+IA0KPiArICAgICAgICBJbmRleCA9IDANCj4gDQo+ICsgICAgICAgIGZvciBpIGluIHJh bmdlKDAsIEVGSV9GUkVFX1ZBUlNUT1JFX0lEX0JJVE1BUF9TSVpFKToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBzZWxmLl9fRnJlZVZhclN0b3JlSWRCaXRNYXBbaV0gIT0gMHhGRkZGRkZGRjoNCj4g DQo+ICsgICAgICAgICAgICAgICAgSW5kZXggPSBpDQo+IA0KPiArICAgICAgICAgICAgICAgIGJy ZWFrDQo+IA0KPiArICAgICAgICBpZiBJbmRleCA9PSBFRklfRlJFRV9WQVJTVE9SRV9JRF9CSVRN QVBfU0laRToNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gRUZJX1ZBUlNUT1JFX0lEX0lOVkFM SUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIE9mZnNldCA9IDANCj4gDQo+ICsgICAgICAgIE1h c2sgPSAweDgwMDAwMDAwDQo+IA0KPiArICAgICAgICB3aGlsZSBNYXNrICE9IDA6DQo+IA0KPiAr ICAgICAgICAgICAgaWYgKHNlbGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcFtJbmRleF0gJiBNYXNr KSA9PSAwOg0KPiANCj4gKyAgICAgICAgICAgICAgICBzZWxmLl9fRnJlZVZhclN0b3JlSWRCaXRN YXBbSW5kZXhdIHw9IE1hc2sNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIChJbmRleCA8 PCBFRklfQklUU19TSElGVF9QRVJfVUlOVDMyKSArIE9mZnNldA0KPiANCj4gKyAgICAgICAgICAg IE1hc2sgPj49IDENCj4gDQo+ICsgICAgICAgICAgICBPZmZzZXQgKz0gMQ0KPiANCj4gKyAgICAg ICAgcmV0dXJuIEVGSV9WQVJTVE9SRV9JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBfX0NoZWNrVmFyU3RvcmVJZEZyZWUoc2VsZiwgVmFyU3RvcmVJZCk6DQo+IA0KPiArDQo+IA0K PiArICAgICAgICBJbmRleCA9IGludChWYXJTdG9yZUlkIC8gRUZJX0JJVFNfUEVSX1VJTlQzMikN Cj4gDQo+ICsgICAgICAgIE9mZnNldCA9IFZhclN0b3JlSWQgJSBFRklfQklUU19QRVJfVUlOVDMy DQo+IA0KPiArICAgICAgICByZXR1cm4gKHNlbGYuX19GcmVlVmFyU3RvcmVJZEJpdE1hcFtJbmRl eF0gJg0KPiANCj4gKyAgICAgICAgICAgICAgICAoMHg4MDAwMDAwMCA+PiBPZmZzZXQpKSA9PSAw DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX01hcmtWYXJTdG9yZUlkVXNlZChzZWxmLCBWYXJT dG9yZUlkKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIEluZGV4ID0gaW50KFZhclN0b3JlSWQg LyBFRklfQklUU19QRVJfVUlOVDMyKQ0KPiANCj4gKyAgICAgICAgT2Zmc2V0ID0gVmFyU3RvcmVJ ZCAlIEVGSV9CSVRTX1BFUl9VSU5UMzINCj4gDQo+ICsgICAgICAgIHNlbGYuX19GcmVlVmFyU3Rv cmVJZEJpdE1hcFtJbmRleF0gfD0gKDB4ODAwMDAwMDAgPj4gT2Zmc2V0KQ0KPiANCj4gKw0KPiAN Cj4gKyAgICBkZWYgRGVjbGFyZUJ1ZmZlclZhclN0b3JlKHNlbGYsDQo+IA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgU3RvcmVOYW1lLA0KPiANCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEd1aWQsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RGF0YVR5cGVEQiwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlTmFt ZSwNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJTdG9yZUlkLA0KPiAN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzQml0VmFyU3RvcmUsDQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cj0wLA0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEZsYWc9VHJ1ZSk6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBp ZiBTdG9yZU5hbWUgPT0gTm9uZSBvciBHdWlkID09IE5vbmUgb3IgRGF0YVR5cGVEQiA9PSBOb25l Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFU QUxfRVJST1INCj4gDQo+ICsgICAgICAgIF8sIFJldHVybkNvZGUgPSBzZWxmLkdldFZhclN0b3Jl SWQoU3RvcmVOYW1lLCBHdWlkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29k ZSA9PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgRGF0YVR5cGUsIFJldHVybkNvZGUgPSBEYXRhVHlwZURCLkdldERhdGFUeXBl KFR5cGVOYW1lKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSAhPSBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4g UmV0dXJuQ29kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklf VkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0gc2Vs Zi5fX0dldEZyZWVWYXJTdG9yZUlkKA0KPiANCj4gKyAgICAgICAgICAgICAgICBFRklfVkZSX1ZB UlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9SRV9CVUZGRVIpDQo+IA0KPiArICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgIGlmIHNlbGYuX19DaGVja1ZhclN0b3JlSWRGcmVlKFZhclN0 b3JlSWQpID09IEZhbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1ZBUlNUT1JFSURfUkVERUZJTkVEDQo+IA0KPiArICAgICAgICAgICAg c2VsZi5fX01hcmtWYXJTdG9yZUlkVXNlZChWYXJTdG9yZUlkKQ0KPiANCj4gKyAgICAgICAgcE5l dyA9IFNWZnJWYXJTdG9yYWdlTm9kZShTdG9yZU5hbWUsIFZhclN0b3JlSWQsIEd1aWQsIEF0dHIs IEZsYWcsDQo+IE5vbmUsDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERhdGFUeXBlLCBJc0JpdFZhclN0b3JlKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgcE5l dyA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOZXcuTmV4 dCA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QNCj4gDQo+ICsgICAgICAgIHNlbGYuX19CdWZm ZXJWYXJTdG9yZUxpc3QgPSBwTmV3DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBnQ1ZmckJ1 ZmZlckNvbmZpZy5SZWdpc3RlcihTdG9yZU5hbWUsIEd1aWQpICE9IDA6DQo+IA0KPiArICAgICAg ICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNT DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBEZWNsYXJlTmFtZVZhclN0b3JlQmVnaW4oc2VsZiwg U3RvcmVOYW1lLCBWYXJTdG9yZUlkKToNCj4gDQo+ICsgICAgICAgIGlmIFN0b3JlTmFtZSA9PSBO b25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f RkFUQUxfRVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIF8sIFJldHVybkNvZGUgPSBzZWxm LkdldFZhclN0b3JlSWQoU3RvcmVOYW1lKQ0KPiANCj4gKyAgICAgICAgaWYgUmV0dXJuQ29kZSA9 PSBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUzoNCj4gDQo+ICsgICAgICAgICAgICBy ZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgaWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gDQo+ ICsgICAgICAgICAgICBWYXJTdG9yZUlkID0gc2VsZi5fX0dldEZyZWVWYXJTdG9yZUlkKA0KPiAN Cj4gKyAgICAgICAgICAgICAgICBFRklfVkZSX1ZBUlNUT1JFX1RZUEUuRUZJX1ZGUl9WQVJTVE9S RV9OQU1FKQ0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxm Ll9fQ2hlY2tWYXJTdG9yZUlkRnJlZShWYXJTdG9yZUlkKSA9PSBGYWxzZToNCj4gDQo+ICsgICAg ICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9WQVJTVE9SRUlEX1JF REVGSU5FRA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19NYXJrVmFyU3RvcmVJZFVzZWQoVmFy U3RvcmVJZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gU1ZmclZhclN0b3JhZ2VO b2RlKFN0b3JlTmFtZSwgVmFyU3RvcmVJZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIHBO b2RlID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZS X1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgc2VsZi5f X05ld1ZhclN0b3JhZ2VOb2RlID0gcE5vZGUNCj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRGVjbGFy ZU5hbWVWYXJTdG9yZUVuZChzZWxmLCBHdWlkKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19OZXdW YXJTdG9yYWdlTm9kZS5HdWlkID0gR3VpZA0KPiANCj4gKyAgICAgICAgc2VsZi5fX05ld1ZhclN0 b3JhZ2VOb2RlLk5leHQgPSBzZWxmLl9fTmFtZVZhclN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAg c2VsZi5fX05hbWVWYXJTdG9yZUxpc3QgPSBzZWxmLl9fTmV3VmFyU3RvcmFnZU5vZGUNCj4gDQo+ ICsgICAgICAgIHNlbGYuX19OZXdWYXJTdG9yYWdlTm9kZSA9IE5vbmUNCj4gDQo+ICsNCj4gDQo+ ICsgICAgZGVmIE5hbWVUYWJsZUFkZEl0ZW0oc2VsZiwgSXRlbSk6DQo+IA0KPiArICAgICAgICBz ZWxmLl9fTmV3VmFyU3RvcmFnZU5vZGUuTmFtZVNwYWNlLmFwcGVuZChJdGVtKQ0KPiANCj4gKyAg ICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+ IA0KPiArICAgIGRlZiBHZXROYW1lVmFyU3RvcmVJbmZvKHNlbGYsIEJhc2VJbmZvLCBJbmRleCk6 DQo+IA0KPiArICAgICAgICBpZiBCYXNlSW5mbyA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIGlmIHNlbGYuX19DdXJyVmFyU3RvcmFnZU5vZGUgPT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0dFVF9OVlZBUlNU T1JFX0VSUk9SDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBCYXNlSW5mby5JbmZvLlZhck5hbWUg PQ0KPiBzZWxmLl9fQ3VyclZhclN0b3JhZ2VOb2RlLk5hbWVTcGFjZVtJbmRleF0NCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0K PiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0VmFyU3RvcmVUeXBlKHNlbGYsIFZhclN0b3JlSWQp Og0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgVmFyU3RvcmVUeXBlID0NCj4gRUZJX1ZGUl9WQVJT VE9SRV9UWVBFLkVGSV9WRlJfVkFSU1RPUkVfSU5WQUxJRA0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgaWYgVmFyU3RvcmVJZCA9PSBFRklfVkFSU1RPUkVfSURfSU5WQUxJRDoNCj4gDQo+ICsgICAg ICAgICAgICByZXR1cm4gVmFyU3RvcmVUeXBlDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9k ZSA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxpc3QNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBOb2Rl ICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJT dG9yZUlkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBWYXJTdG9yZVR5cGUgPSBwTm9kZS5WYXJz dG9yZVR5cGUNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZhclN0b3JlVHlwZQ0KPiAN Cj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgcE5vZGUgPSBzZWxmLl9fRWZpVmFyU3RvcmVMaXN0DQo+IA0KPiArICAgICAgICB3aGlsZSBw Tm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0g VmFyU3RvcmVJZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgVmFyU3RvcmVUeXBlID0gcE5vZGUu VmFyc3RvcmVUeXBlDQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBWYXJTdG9yZVR5cGUN Cj4gDQo+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHBOb2RlID0gc2VsZi5fX05hbWVWYXJTdG9yZUxpc3QNCj4gDQo+ICsgICAgICAgIHdo aWxlIHBOb2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgaWYgcE5vZGUuVmFyU3RvcmVJ ZCA9PSBWYXJTdG9yZUlkOg0KPiANCj4gKyAgICAgICAgICAgICAgICBWYXJTdG9yZVR5cGUgPSBw Tm9kZS5WYXJzdG9yZVR5cGUNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIFZhclN0b3Jl VHlwZQ0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcmV0dXJuIFZhclN0b3JlVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg R2V0VmFyU3RvcmVOYW1lKHNlbGYsIFZhclN0b3JlSWQpOg0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgcE5vZGUgPSBzZWxmLl9fQnVmZmVyVmFyU3RvcmVMaXN0DQo+IA0KPiArICAgICAgICB3aGls ZSBwTm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQg PT0gVmFyU3RvcmVJZDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHBOb2RlLlZhclN0 b3JlTmFtZSwNCj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsgICAg ICAgICAgICBwTm9kZSA9IHBOb2RlLk5leHQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2Rl ID0gc2VsZi5fX0VmaVZhclN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgIT0g Tm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09IFZhclN0b3Jl SWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBwTm9kZS5WYXJTdG9yZU5hbWUsDQo+ IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArICAgICAgICAgICAgcE5v ZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9kZSA9IHNlbGYuX19O YW1lVmFyU3RvcmVMaXN0DQo+IA0KPiArICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIGlmIHBOb2RlLlZhclN0b3JlSWQgPT0gVmFyU3RvcmVJZDoNCj4gDQo+ ICsgICAgICAgICAgICAgICAgcmV0dXJuIHBOb2RlLlZhclN0b3JlTmFtZSwNCj4gVmZyUmV0dXJu Q29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsgICAgICAgICAgICBwTm9kZSA9IHBOb2Rl Lk5leHQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBOb25lLCBWZnJSZXR1cm5Db2Rl LlZGUl9SRVRVUk5fVU5ERUZJTkVEDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBH ZXRCdWZmZXJWYXJTdG9yZURhdGFUeXBlTmFtZShzZWxmLCBWYXJTdG9yZUlkKToNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIERhdGFUeXBlTmFtZSA9IE5vbmUNCj4gDQo+ICsgICAgICAgIGlmIFZh clN0b3JlSWQgPT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAg cmV0dXJuIERhdGFUeXBlTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0ZBVEFMX0VSUk9S DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9kZSA9IHNlbGYuX19CdWZmZXJWYXJTdG9yZUxp c3QNCj4gDQo+ICsgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAg ICAgaWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9yZUlkOg0KPiANCj4gKyAgICAgICAgICAg ICAgICBEYXRhVHlwZU5hbWUgPSBwTm9kZS5EYXRhVHlwZS5UeXBlTmFtZQ0KPiANCj4gKyAgICAg ICAgICAgICAgICByZXR1cm4gRGF0YVR5cGVOYW1lLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f U1VDQ0VTUw0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0K PiANCj4gKyAgICAgICAgcmV0dXJuIERhdGFUeXBlTmFtZSwgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX1VOREVGSU5FRA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgR2V0RWZpVmFyU3RvcmVJbmZv KHNlbGYsIEJhc2VJbmZvOiBFRklfVkFSU1RPUkVfSU5GTyk6DQo+IA0KPiArDQo+IA0KPiArICAg ICAgICBpZiBCYXNlSW5mbyA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJS ZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IGlmIHNlbGYuX19DdXJyVmFyU3RvcmFnZU5vZGUgPT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX0dFVF9FRklWQVJTVE9SRV9FUlJPUg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgQmFzZUluZm8uSW5mby5WYXJOYW1lID0NCj4gc2VsZi5f X0N1cnJWYXJTdG9yYWdlTm9kZS5FZmlWYXIuRWZpVmFyTmFtZQ0KPiANCj4gKyAgICAgICAgQmFz ZUluZm8uVmFyVG90YWxTaXplID0gc2VsZi5fX0N1cnJWYXJTdG9yYWdlTm9kZS5FZmlWYXIuRWZp VmFyU2l6ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgQmFzZUluZm8uVmFyVG90YWxTaXpl ID09IDE6DQo+IA0KPiArICAgICAgICAgICAgQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQ RV9OVU1fU0laRV84DQo+IA0KPiArICAgICAgICBlbGlmIEJhc2VJbmZvLlZhclRvdGFsU2l6ZSA9 PSAyOg0KPiANCj4gKyAgICAgICAgICAgIEJhc2VJbmZvLlZhclR5cGUgPSBFRklfSUZSX1RZUEVf TlVNX1NJWkVfMTYNCj4gDQo+ICsgICAgICAgIGVsaWYgQmFzZUluZm8uVmFyVG90YWxTaXplID09 IDQ6DQo+IA0KPiArICAgICAgICAgICAgQmFzZUluZm8uVmFyVHlwZSA9IEVGSV9JRlJfVFlQRV9O VU1fU0laRV8zMg0KPiANCj4gKyAgICAgICAgZWxpZiBCYXNlSW5mby5WYXJUb3RhbFNpemUgPT0g ODoNCj4gDQo+ICsgICAgICAgICAgICBCYXNlSW5mby5WYXJUeXBlID0gRUZJX0lGUl9UWVBFX05V TV9TSVpFXzY0DQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxfRVJST1INCj4gDQo+ICsNCj4gDQo+ICsg ICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0K PiANCj4gKyAgICBkZWYgR2V0VmFyU3RvcmVHdWlkKHNlbGYsIFZhclN0b3JlSWQpOg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgVmFyR3VpZCA9IE5vbmUNCj4gDQo+ICsgICAgICAgIGlmIFZhclN0 b3JlSWQgPT0gRUZJX1ZBUlNUT1JFX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZhckd1aWQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5fX0J1ZmZl clZhclN0b3JlTGlzdA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJTdG9yZUlkID09IFZhclN0b3JlSWQ6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIFZhckd1aWQgPSBwTm9kZS5HdWlkDQo+IA0KPiArICAgICAgICAgICAg ICAgIHJldHVybiBWYXJHdWlkDQo+IA0KPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9kZSA9IHNlbGYuX19FZmlWYXJTdG9yZUxpc3QN Cj4gDQo+ICsgICAgICAgIHdoaWxlIHBOb2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAg aWYgcE5vZGUuVmFyU3RvcmVJZCA9PSBWYXJTdG9yZUlkOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBWYXJHdWlkID0gcE5vZGUuR3VpZA0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gVmFy R3VpZA0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgcE5vZGUgPSBzZWxmLl9fTmFtZVZhclN0b3JlTGlzdA0KPiANCj4gKyAgICAg ICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5WYXJT dG9yZUlkID09IFZhclN0b3JlSWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIFZhckd1aWQgPSBw Tm9kZS5HdWlkDQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBWYXJHdWlkDQo+IA0KPiAr ICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBy ZXR1cm4gVmFyR3VpZA0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgQWRkQnVmZmVyVmFyU3RvcmVG aWVsZEluZm8oc2VsZiwgQmFzZUluZm86IEVGSV9WQVJTVE9SRV9JTkZPKToNCj4gDQo+ICsNCj4g DQo+ICsgICAgICAgIHBOZXcgPSBCdWZmZXJWYXJTdG9yZUZpZWxkSW5mb05vZGUoQmFzZUluZm8p DQo+IA0KPiArICAgICAgICBpZiBwTmV3ID09IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9GQVRBTF9FUlJPUg0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgaWYgc2VsZi5fX0J1ZmZlckZpZWxkSW5mb0xpc3RIZWFkID09IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgc2VsZi5fX0J1ZmZlckZpZWxkSW5mb0xpc3RIZWFkID0gcE5ldw0KPiAN Cj4gKyAgICAgICAgICAgIHNlbGYuX19tQnVmZmVyRmllbGRJbmZvTGlzdFRhaWwgPSBwTmV3DQo+ IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19tQnVmZmVyRmll bGRJbmZvTGlzdFRhaWwuTmV4dCA9IHBOZXcNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fbUJ1 ZmZlckZpZWxkSW5mb0xpc3RUYWlsID0gcE5ldw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0 dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArDQo+ IA0KPiArY2xhc3MgQ1ZmclN0cmluZ0RCKG9iamVjdCk6DQo+IA0KPiArDQo+IA0KPiArICAgIGRl ZiBfX2luaXRfXyhzZWxmKToNCj4gDQo+ICsgICAgICAgIHNlbGYuX19TdHJpbmdGaWxlTmFtZSA9 ICcnDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRWYXJTdG9yZU5hbWVGcm9tU3RyaW5nSWQo c2VsZiwgU3RyaW5nSWQpOg0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5fX1N0cmluZ0ZpbGVOYW1l ID09ICcnOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBOb25lDQo+IA0KPiArICAgICAgICB0 cnk6DQo+IA0KPiArICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5fX1N0cmluZ0ZpbGVOYW1lKQ0K PiANCj4gKyAgICAgICAgICAgIFN0cmluZ1B0ciA9IGYucmVhZCgpDQo+IA0KPiArICAgICAgICAg ICAgZi5jbG9zZSgpDQo+IA0KPiArICAgICAgICBleGNlcHQgSU9FcnJvcjoNCj4gDQo+ICsgICAg ICAgICAgICBwcmludCgnRXJyb3InKQ0KPiANCj4gKw0KPiANCj4gK2dDVmZyU3RyaW5nREIgPSBD VmZyU3RyaW5nREIoKQ0KPiANCj4gKw0KPiANCj4gK0VGSV9SVUxFX0lEX1NUQVJUID0gMHgwMQ0K PiANCj4gK0VGSV9SVUxFX0lEX0lOVkFMSUQgPSAweDAwDQo+IA0KPiArDQo+IA0KPiArDQo+IA0K PiArY2xhc3MgU1ZmclJ1bGVOb2RlKCk6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2luaXRf XyhzZWxmLCBSdWxlTmFtZT1Ob25lLCBSdWxlSWQ9MCk6DQo+IA0KPiArICAgICAgICBzZWxmLlJ1 bGVJZCA9IFJ1bGVJZA0KPiANCj4gKyAgICAgICAgc2VsZi5SdWxlTmFtZSA9IFJ1bGVOYW1lDQo+ IA0KPiArICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiAr Y2xhc3MgQ1ZmclJ1bGVzREIob2JqZWN0KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5p dF9fKHNlbGYpOg0KPiANCj4gKyAgICAgICAgc2VsZi5fX1J1bGVMaXN0ID0gTm9uZQ0KPiANCj4g KyAgICAgICAgc2VsZi5fX0ZyZWVSdWxlSWQgPSBFRklfVkFSU1RPUkVfSURfU1RBUlQNCj4gDQo+ ICsNCj4gDQo+ICsgICAgZGVmIFJlZ2lzdGVyUnVsZShzZWxmLCBSdWxlTmFtZSk6DQo+IA0KPiAr ICAgICAgICBpZiBSdWxlTmFtZSA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybg0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5ldyA9IFNWZnJSdWxlTm9kZShSdWxlTmFtZSwgc2Vs Zi5fX0ZyZWVSdWxlSWQpDQo+IA0KPiArICAgICAgICBpZiBwTmV3ID09IE5vbmU6IHJldHVybg0K PiANCj4gKyAgICAgICAgc2VsZi5fX0ZyZWVSdWxlSWQgKz0gMQ0KPiANCj4gKyAgICAgICAgcE5l dy5OZXh0ID0gc2VsZi5fX1J1bGVMaXN0DQo+IA0KPiArICAgICAgICBzZWxmLl9fUnVsZUxpc3Qg PSBwTmV3DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBHZXRSdWxlSWQoc2VsZiwgUnVsZU5hbWUp Og0KPiANCj4gKyAgICAgICAgaWYgUnVsZU5hbWUgPT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICByZXR1cm4NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5fX1J1bGVMaXN0 DQo+IA0KPiArICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAg IGlmIHBOb2RlLlJ1bGVOYW1lID09IFJ1bGVOYW1lOg0KPiANCj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gcE5vZGUuUnVsZUlkDQo+IA0KPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gRUZJX1JVTEVfSURfSU5WQUxJRA0KPiAN Cj4gKw0KPiANCj4gKw0KPiANCj4gK0VGSV9RVUVTVElPTl9JRF9NQVggPSAweEZGRkYNCj4gDQo+ ICtFRklfRlJFRV9RVUVTVElPTl9JRF9CSVRNQVBfU0laRSA9IGludCgNCj4gDQo+ICsgICAgKEVG SV9RVUVTVElPTl9JRF9NQVggKyAxKSAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+IA0KPiArRUZJ X1FVRVNUSU9OX0lEX0lOVkFMSUQgPSAweDANCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ICtjbGFz cyBFRklfUVVFU0lPTl9UWVBFKEVudW0pOg0KPiANCj4gKyAgICBRVUVTVElPTl9OT1JNQUwgPSAw DQo+IA0KPiArICAgIFFVRVNUSU9OX0RBVEUgPSAxDQo+IA0KPiArICAgIFFVRVNUSU9OX1RJTUUg PSAyDQo+IA0KPiArICAgIFFVRVNUSU9OX1JFRiA9IDMNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtjbGFzcyBTVmZyUXVlc3Rpb25Ob2RlKCk6DQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBOYW1lPU5vbmUsIFZhcklkU3RyPU5vbmUsIEJpdE1hc2s9MCk6ICAjDQo+IA0K PiArICAgICAgICBzZWxmLk5hbWUgPSBOYW1lDQo+IA0KPiArICAgICAgICBzZWxmLlZhcklkU3Ry ID0gVmFySWRTdHINCj4gDQo+ICsgICAgICAgIHNlbGYuUXVlc3Rpb25JZCA9IEVGSV9RVUVTVElP Tl9JRF9JTlZBTElEDQo+IA0KPiArICAgICAgICBzZWxmLkJpdE1hc2sgPSBCaXRNYXNrDQo+IA0K PiArICAgICAgICBzZWxmLk5leHQgPSBOb25lDQo+IA0KPiArICAgICAgICBzZWxmLlFUeXBlID0g RUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9OT1JNQUwNCj4gDQo+ICsNCj4gDQo+ICsNCj4gDQo+ ICtEQVRFX1lFQVJfQklUTUFTSyA9IDB4MDAwMEZGRkYNCj4gDQo+ICtEQVRFX01PTlRIX0JJVE1B U0sgPSAweDAwRkYwMDAwDQo+IA0KPiArREFURV9EQVlfQklUTUFTSyA9IDB4RkYwMDAwMDANCj4g DQo+ICtUSU1FX0hPVVJfQklUTUFTSyA9IDB4MDAwMDAwRkYNCj4gDQo+ICtUSU1FX01JTlVURV9C SVRNQVNLID0gMHgwMDAwRkYwMA0KPiANCj4gK1RJTUVfU0VDT05EX0JJVE1BU0sgPSAweDAwRkYw MDAwDQo+IA0KPiArDQo+IA0KPiArDQo+IA0KPiArY2xhc3MgQ1ZmclF1ZXN0aW9uREIob2JqZWN0 KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9faW5pdF9fKHNlbGYpOg0KPiANCj4gKyAgICAg ICAgc2VsZi5fX0ZyZWVRSWRCaXRNYXAgPSBbXQ0KPiANCj4gKyAgICAgICAgZm9yIGkgaW4gcmFu Z2UoMCwgRUZJX0ZSRUVfUVVFU1RJT05fSURfQklUTUFQX1NJWkUpOg0KPiANCj4gKyAgICAgICAg ICAgIHNlbGYuX19GcmVlUUlkQml0TWFwLmFwcGVuZCgwKQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgIyBRdWVzdGlvbiBJRCAwIGlzIHJlc2VydmVkLg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0Zy ZWVRSWRCaXRNYXBbMF0gPSAweDgwMDAwMDAwDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBzZWxm Ll9fUXVlc3Rpb25MaXN0ID0gTm9uZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgRmluZFF1ZXN0 aW9uQnlOYW1lKHNlbGYsIE5hbWUpOg0KPiANCj4gKyAgICAgICAgaWYgTmFtZSA9PSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRkFUQUxf RVJST1INCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gc2VsZi5fX1F1ZXN0aW9uTGlz dA0KPiANCj4gKyAgICAgICAgd2hpbGUgcE5vZGUgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAg ICBpZiBwTm9kZS5OYW1lID09IE5hbWU6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKyAgICAgICAgICAgIHBOb2Rl ID0gcE5vZGUuTmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNv ZGUuVkZSX1JFVFVSTl9VTkRFRklORUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIEZpbmRRdWVz dGlvbkJ5SWQoc2VsZiwgUXVlc3Rpb25JZCk6DQo+IA0KPiArICAgICAgICBpZiBRdWVzdGlvbklk ID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fSU5WQUxJRF9QQVJBTUVURVINCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHBOb2RlID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KPiANCj4gKyAgICAgICAgd2hp bGUgcE5vZGUgIT0gTm9uZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBwTm9kZS5RdWVzdGlvbklk ID09IFF1ZXN0aW9uSWQ6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlID0gcE5vZGUu TmV4dA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9VTkRFRklORUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9fR2V0RnJlZVF1ZXN0aW9u SWQoc2VsZik6DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBJbmRleCA9IDANCj4gDQo+ICsgICAg ICAgIGZvciBpIGluIHJhbmdlKDAsIEVGSV9GUkVFX1FVRVNUSU9OX0lEX0JJVE1BUF9TSVpFKToN Cj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLl9fRnJlZVFJZEJpdE1hcFtpXSAhPSAweEZGRkZG RkZGOg0KPiANCj4gKyAgICAgICAgICAgICAgICBJbmRleCA9IGkNCj4gDQo+ICsgICAgICAgICAg ICAgICAgYnJlYWsNCj4gDQo+ICsgICAgICAgIGlmIEluZGV4ID09IEVGSV9GUkVFX1FVRVNUSU9O X0lEX0JJVE1BUF9TSVpFOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05f SURfSU5WQUxJRA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgT2Zmc2V0ID0gMA0KPiANCj4gKyAg ICAgICAgTWFzayA9IDB4ODAwMDAwMDANCj4gDQo+ICsgICAgICAgIHdoaWxlIE1hc2sgIT0gMDoN Cj4gDQo+ICsgICAgICAgICAgICBpZiAoc2VsZi5fX0ZyZWVRSWRCaXRNYXBbSW5kZXhdICYgTWFz aykgPT0gMDoNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX0ZyZWVRSWRCaXRNYXBbSW5k ZXhdIHw9IE1hc2sNCj4gDQo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIChJbmRleCA8PCBFRklf QklUU19TSElGVF9QRVJfVUlOVDMyKSArIE9mZnNldA0KPiANCj4gKyAgICAgICAgICAgIE1hc2sg Pj49IDENCj4gDQo+ICsgICAgICAgICAgICBPZmZzZXQgKz0gMQ0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElEDQo+IA0KPiArDQo+IA0KPiArICAg IGRlZiBfX0NoZWNrUXVlc3Rpb25JZEZyZWUoc2VsZiwgUUlkKToNCj4gDQo+ICsgICAgICAgIElu ZGV4ID0gaW50KFFJZCAvIEVGSV9CSVRTX1BFUl9VSU5UMzIpDQo+IA0KPiArICAgICAgICBPZmZz ZXQgPSBRSWQgJSBFRklfQklUU19QRVJfVUlOVDMyDQo+IA0KPiArICAgICAgICByZXR1cm4gKHNl bGYuX19GcmVlUUlkQml0TWFwW0luZGV4XSAmICgweDgwMDAwMDAwID4+IE9mZnNldCkpID09IDAN Cj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9fTWFya1F1ZXN0aW9uSWRVc2VkKHNlbGYsIFFJZCk6 DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBJbmRleCA9IGludChRSWQgLyBFRklfQklUU19QRVJf VUlOVDMyKQ0KPiANCj4gKyAgICAgICAgT2Zmc2V0ID0gUUlkICUgRUZJX0JJVFNfUEVSX1VJTlQz Mg0KPiANCj4gKyAgICAgICAgc2VsZi5fX0ZyZWVRSWRCaXRNYXBbSW5kZXhdIHw9ICgweDgwMDAw MDAwID4+IE9mZnNldCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIF9fTWFya1F1ZXN0aW9uSWRV bnVzZWQoc2VsZiwgUUlkKToNCj4gDQo+ICsgICAgICAgIEluZGV4ID0gaW50KFFJZCAvIEVGSV9C SVRTX1BFUl9VSU5UMzIpDQo+IA0KPiArICAgICAgICBPZmZzZXQgPSBRSWQgJSBFRklfQklUU19Q RVJfVUlOVDMyDQo+IA0KPiArICAgICAgICBzZWxmLl9fRnJlZVFJZEJpdE1hcFtJbmRleF0gJj0g figweDgwMDAwMDAwID4+IE9mZnNldCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFJlZ2lzdGVy UXVlc3Rpb24oc2VsZiwgTmFtZSwgVmFySWRTdHIsIFF1ZXN0aW9uSWQpOg0KPiANCj4gKw0KPiAN Cj4gKyAgICAgICAgaWYgKE5hbWUgIT0gTm9uZSkgYW5kIChzZWxmLkZpbmRRdWVzdGlvbkJ5TmFt ZShOYW1lKSA9PQ0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUyk6DQo+IA0KPiAr ICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9S RURFRklORUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9k ZShOYW1lLCBWYXJJZFN0cikNCj4gDQo+ICsgICAgICAgIGlmIHBOb2RlID09IE5vbmU6DQo+IA0K PiArICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsDQo+IFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9PVVRfRk9SX1JFU09VUkNFUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgUXVlc3Rp b25JZCA9PSBFRklfUVVFU1RJT05fSURfSU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICBRdWVz dGlvbklkID0gc2VsZi5fX0dldEZyZWVRdWVzdGlvbklkKCkNCj4gDQo+ICsgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgaWYgc2VsZi5fX0NoZWNrUXVlc3Rpb25JZEZyZWUoUXVlc3Rp b25JZCkgPT0gRmFsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklk LA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fUVVFU1RJT05JRF9SRURFRklORUQNCj4gDQo+ ICsgICAgICAgICAgICBzZWxmLl9fTWFya1F1ZXN0aW9uSWRVc2VkKFF1ZXN0aW9uSWQpDQo+IA0K PiArDQo+IA0KPiArICAgICAgICBwTm9kZS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4g KyAgICAgICAgcE5vZGUuTmV4dCA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCj4gDQo+ICsgICAgICAg IHNlbGYuX19RdWVzdGlvbkxpc3QgPSBwTm9kZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgIyBn Q0Zvcm1Qa2cuRG9QZW5kaW5nQXNzaWduDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4g UXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4g DQo+ICsgICAgZGVmIFVwZGF0ZVF1ZXN0aW9uSWQoc2VsZiwgUUlkLCBOZXdRSWQpOg0KPiANCj4g Kw0KPiANCj4gKyAgICAgICAgaWYgUUlkID09IE5ld1FJZDoNCj4gDQo+ICsgICAgICAgICAgICAj IGRvbid0IHVwZGF0ZQ0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBWZnJSZXR1cm5Db2RlLlZG Ul9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgc2VsZi5fX0NoZWNr UXVlc3Rpb25JZEZyZWUoTmV3UUlkKSA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAgICAgICByZXR1 cm4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKw0KPiANCj4gKyAg ICAgICAgcE5vZGUgPSBzZWxmLl9fUXVlc3Rpb25MaXN0DQo+IA0KPiArICAgICAgICBUZW1wTGlz dCA9IFtdDQo+IA0KPiArICAgICAgICB3aGlsZSBwTm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIHBOb2RlLlF1ZXN0aW9uSWQgPT0gUUlkOg0KPiANCj4gKyAgICAgICAgICAgICAg ICBUZW1wTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICAgICAgcE5vZGUgPSBwTm9k ZS5OZXh0DQo+IA0KPiArDQo+IA0KPiArICAgICAgICBpZiBsZW4oVGVtcExpc3QpID09IDA6DQo+ IA0KPiArICAgICAgICAgICAgcmV0dXJuIFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9VTkRFRklO RUQNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHNlbGYuX19NYXJrUXVlc3Rpb25JZFVudXNlZChR SWQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBmb3IgcE5vZGUgaW4gVGVtcExpc3Q6DQo+IA0K PiArICAgICAgICAgICAgcE5vZGUuUXVlc3Rpb25JZCA9IE5ld1FJZA0KPiANCj4gKw0KPiANCj4g KyAgICAgICAgc2VsZi5fX01hcmtRdWVzdGlvbklkVXNlZChOZXdRSWQpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICAjIGdDRm9ybVBrZy5Eb1BlbmRpbmdBc3NpZ24NCj4gDQo+ICsgICAgICAgIHJl dHVybiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAg ICBkZWYgR2V0UXVlc3Rpb25JZChzZWxmLCBOYW1lLCBWYXJJZFN0cj1Ob25lLCBRVHlwZT1Ob25l KToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFF1ZXN0aW9uSWQgPSBFRklfUVVFU1RJT05fSURf SU5WQUxJRA0KPiANCj4gKyAgICAgICAgQml0TWFzayA9IDB4MDAwMDAwMDANCj4gDQo+ICsgICAg ICAgIGlmIFFUeXBlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgUVR5cGUgPSBFRklfUVVF U0lPTl9UWVBFLlFVRVNUSU9OX05PUk1BTA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgTmFt ZSA9PSBOb25lIGFuZCBWYXJJZFN0ciA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVy biBRdWVzdGlvbklkLCBCaXRNYXNrLCBRVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5v ZGUgPSBzZWxmLl9fUXVlc3Rpb25MaXN0DQo+IA0KPiArICAgICAgICB3aGlsZSBwTm9kZSAhPSBO b25lOg0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIE5hbWUgIT0gTm9uZToNCj4gDQo+ ICsgICAgICAgICAgICAgICAgaWYgcE5vZGUuTmFtZSAhPSBOYW1lOg0KPiANCj4gKyAgICAgICAg ICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiArICAgICAgICAgICAgICAgICAg ICBjb250aW51ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAgIGlmIFZhcklkU3RyICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHBOb2RlLlZhcklkU3RyICE9IFZhcklkU3Ry Og0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+IA0KPiAr ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgICAg IFF1ZXN0aW9uSWQgPSBwTm9kZS5RdWVzdGlvbklkDQo+IA0KPiArICAgICAgICAgICAgQml0TWFz ayA9IHBOb2RlLkJpdE1hc2sNCj4gDQo+ICsgICAgICAgICAgICBpZiBRVHlwZSAhPSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgICAgICBRVHlwZSA9IHBOb2RlLlFUeXBlDQo+IA0KPiArICAgICAg ICAgICAgYnJlYWsNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBC aXRNYXNrLCBRVHlwZQ0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYgUmVnaXN0ZXJOZXdEYXRlUXVl c3Rpb24oc2VsZiwgTmFtZSwgQmFzZVZhcklkLCBRdWVzdGlvbklkKToNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIGlmIEJhc2VWYXJJZCA9PSAnJyBhbmQgTmFtZSA9PSBOb25lOg0KPiANCj4gKyAg ICAgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQ6DQo+IA0K PiArICAgICAgICAgICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxmLl9fR2V0RnJlZVF1ZXN0aW9uSWQo KQ0KPiANCj4gKyAgICAgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgICAgIGlmIHNl bGYuX19DaGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpID09IEZhbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVybkNvZGUuVkZSX1JF VFVSTl9SRURFRklORUQNCj4gDQo+ICsgICAgICAgICAgICAgICAgc2VsZi5fX01hcmtRdWVzdGlv bklkVXNlZChRdWVzdGlvbklkKQ0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklk LCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgVmFySWRTdHJMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgIGlmIEJhc2VWYXJJZCAhPSAnJzoN Cj4gDQo+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICcuWWVh cicpDQo+IA0KPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAn Lk1vbnRoJykNCj4gDQo+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJ ZCArICcuRGF5JykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAg ICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChOYW1lICsgJy5ZZWFyJykNCj4gDQo+ICsgICAgICAg ICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUgKyAnLk1vbnRoJykNCj4gDQo+ICsgICAgICAg ICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUgKyAnLkRheScpDQo+IA0KPiArDQo+IA0KPiAr ICAgICAgICBwTm9kZUxpc3QgPSBbXQ0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rp b25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFswXSwNCj4gREFURV9ZRUFSX0JJVE1BU0spDQo+IA0K PiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlTGlz dC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBRdWVzdGlvbklkLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9S RVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9k ZShOYW1lLCBWYXJJZFN0ckxpc3RbMV0sDQo+IERBVEVfTU9OVEhfQklUTUFTSykNCj4gDQo+ICsg ICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFw cGVuZChwTm9kZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcmV0 dXJuIFF1ZXN0aW9uSWQsDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09V UkNFUw0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVlc3Rpb25Ob2RlKE5h bWUsIFZhcklkU3RyTGlzdFsyXSwNCj4gREFURV9EQVlfQklUTUFTSykNCj4gDQo+ICsgICAgICAg IGlmIHBOb2RlICE9IE5vbmU6DQo+IA0KPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChw Tm9kZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIFF1 ZXN0aW9uSWQsDQo+IFZmclJldHVybkNvZGUuVkZSX1JFVFVSTl9PVVRfRk9SX1JFU09VUkNFUw0K PiANCj4gKw0KPiANCj4gKyAgICAgICAgaWYgUXVlc3Rpb25JZCA9PSBFRklfUVVFU1RJT05fSURf SU5WQUxJRDoNCj4gDQo+ICsgICAgICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5fX0dldEZyZWVR dWVzdGlvbklkKCkNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgaWYg c2VsZi5fX0NoZWNrUXVlc3Rpb25JZEZyZWUoUXVlc3Rpb25JZCkgPT0gRmFsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRV Uk5fUkVERUZJTkVEDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX01hcmtRdWVzdGlvbklkVXNl ZChRdWVzdGlvbklkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlF1ZXN0 aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMV0uUXVlc3Rpb25J ZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFsyXS5RdWVzdGlvbklkID0g UXVlc3Rpb25JZA0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlFUeXBlID0gRUZJX1FVRVNJ T05fVFlQRS5RVUVTVElPTl9EQVRFDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMV0uUVR5cGUg PSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEUNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlz dFsyXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KPiANCj4gKyAgICAg ICAgcE5vZGVMaXN0WzBdLk5leHQgPSBwTm9kZUxpc3RbMV0NCj4gDQo+ICsgICAgICAgIHBOb2Rl TGlzdFsxXS5OZXh0ID0gcE5vZGVMaXN0WzJdDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMl0u TmV4dCA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCj4gDQo+ICsgICAgICAgIHNlbGYuX19RdWVzdGlv bkxpc3QgPSBwTm9kZUxpc3RbMF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgRG9QZW5kaW5n QXNzaWduDQo+IA0KPiArICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFJlZ2lzdGVyTmV3VGlt ZVF1ZXN0aW9uKHNlbGYsIE5hbWUsIEJhc2VWYXJJZCwgUXVlc3Rpb25JZCk6DQo+IA0KPiArICAg ICAgICBpZiBCYXNlVmFySWQgPT0gJycgYW5kIE5hbWUgPT0gTm9uZToNCj4gDQo+ICsgICAgICAg ICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiANCj4gKyAg ICAgICAgICAgICAgICBRdWVzdGlvbklkID0gc2VsZi5fX0dldEZyZWVRdWVzdGlvbklkKCkNCj4g DQo+ICsgICAgICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9f Q2hlY2tRdWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAg ICAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5f UkVERUZJTkVEDQo+IA0KPiArICAgICAgICAgICAgICAgIHNlbGYuX19NYXJrUXVlc3Rpb25JZFVz ZWQoUXVlc3Rpb25JZCkNCj4gDQo+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZy UmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIFZh cklkU3RyTGlzdCA9IFtdDQo+IA0KPiArICAgICAgICBpZiBCYXNlVmFySWQgIT0gJyc6DQo+IA0K PiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAnLkhvdXInKQ0K PiANCj4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgJy5NaW51 dGUnKQ0KPiANCj4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsg Jy5TZWNvbmQnKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAg ICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUgKyAnLkhvdXInKQ0KPiANCj4gKyAgICAgICAg ICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoTmFtZSArICcuTWludXRlJykNCj4gDQo+ICsgICAgICAg ICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKE5hbWUgKyAnLlNlY29uZCcpDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBwTm9kZUxpc3QgPSBbXQ0KPiANCj4gKyAgICAgICAgcE5vZGUgPSBTVmZyUXVl c3Rpb25Ob2RlKE5hbWUsIFZhcklkU3RyTGlzdFswXSwNCj4gVElNRV9IT1VSX0JJVE1BU0spDQo+ IA0KPiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2Rl TGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZP Ul9SRVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9u Tm9kZShOYW1lLCBWYXJJZFN0ckxpc3RbMV0sDQo+IFRJTUVfTUlOVVRFX0JJVE1BU0spDQo+IA0K PiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlTGlz dC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBRdWVzdGlvbklkLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9S RVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9k ZShOYW1lLCBWYXJJZFN0ckxpc3RbMl0sDQo+IFRJTUVfU0VDT05EX0JJVE1BU0spDQo+IA0KPiAr ICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5h cHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBRdWVzdGlvbklkLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNP VVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNU SU9OX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHNlbGYuX19H ZXRGcmVlUXVlc3Rpb25JZCgpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAg ICAgIGlmIHNlbGYuX19DaGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpID09IEZhbHNlOg0K PiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5W RlJfUkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19NYXJrUXVlc3Rp b25JZFVzZWQoUXVlc3Rpb25JZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFsw XS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzFdLlF1 ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMl0uUXVlc3Rp b25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFswXS5RVHlwZSA9IEVG SV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRQ0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzFd LlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1FDQo+IA0KPiArICAgICAgICBw Tm9kZUxpc3RbMl0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUNCj4gDQo+ ICsgICAgICAgIHBOb2RlTGlzdFswXS5OZXh0ID0gcE5vZGVMaXN0WzFdDQo+IA0KPiArICAgICAg ICBwTm9kZUxpc3RbMV0uTmV4dCA9IHBOb2RlTGlzdFsyXQ0KPiANCj4gKyAgICAgICAgcE5vZGVM aXN0WzJdLk5leHQgPSBzZWxmLl9fUXVlc3Rpb25MaXN0DQo+IA0KPiArICAgICAgICBzZWxmLl9f UXVlc3Rpb25MaXN0ID0gcE5vZGVMaXN0WzBdDQo+IA0KPiArDQo+IA0KPiArICAgICAgICAjIERv UGVuZGluZ0Fzc2lnbg0KPiANCj4gKyAgICAgICAgcmV0dXJuIFF1ZXN0aW9uSWQsIFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9TVUNDRVNTDQo+IA0KPiArDQo+IA0KPiArICAgIGRlZiBSZWdpc3Rl clJlZlF1ZXN0aW9uKHNlbGYsIE5hbWUsIEJhc2VWYXJJZCwgUXVlc3Rpb25JZCk6DQo+IA0KPiAr DQo+IA0KPiArICAgICAgICBpZiBCYXNlVmFySWQgPT0gJycgYW5kIE5hbWUgPT0gTm9uZToNCj4g DQo+ICsgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29kZS5WRlJfUkVU VVJOX0ZBVEFMX0VSUk9SDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBWYXJJZFN0ckxpc3QgPSBb XQ0KPiANCj4gKyAgICAgICAgaWYgQmFzZVZhcklkICE9ICcnOg0KPiANCj4gKyAgICAgICAgICAg IFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgJy5RdWVzdGlvbklkJykNCj4gDQo+ICsg ICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICcuRm9ybUlkJykNCj4g DQo+ICsgICAgICAgICAgICBWYXJJZFN0ckxpc3QuYXBwZW5kKEJhc2VWYXJJZCArICcuRm9ybVNl dEd1aWQnKQ0KPiANCj4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklk ICsgJy5EZXZpY2VQYXRoJykNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGVsc2U6DQo+IA0KPiAr ICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVuZChCYXNlVmFySWQgKyAnLlF1ZXN0aW9uSWQn KQ0KPiANCj4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklkICsgJy5G b3JtSWQnKQ0KPiANCj4gKyAgICAgICAgICAgIFZhcklkU3RyTGlzdC5hcHBlbmQoQmFzZVZhcklk ICsgJy5Gb3JtU2V0R3VpZCcpDQo+IA0KPiArICAgICAgICAgICAgVmFySWRTdHJMaXN0LmFwcGVu ZChCYXNlVmFySWQgKyAnLkRldmljZVBhdGgnKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5v ZGVMaXN0ID0gW10NCj4gDQo+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1l LCBWYXJJZFN0ckxpc3RbMF0pDQo+IA0KPiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiBWZnJSZXR1cm5D b2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAg IHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3RbMV0pDQo+IA0KPiAr ICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5h cHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJl dHVybiBRdWVzdGlvbklkLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNP VVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShO YW1lLCBWYXJJZFN0ckxpc3RbMl0pDQo+IA0KPiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0K PiANCj4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAg ICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlvbklkLA0KPiBWZnJSZXR1 cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAg ICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOYW1lLCBWYXJJZFN0ckxpc3RbM10pDQo+IA0K PiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHBOb2RlTGlz dC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAg IHJldHVybiBRdWVzdGlvbklkLA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9S RVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FV RVNUSU9OX0lEX0lOVkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHNlbGYu X19HZXRGcmVlUXVlc3Rpb25JZCgpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAg ICAgICAgIGlmIHNlbGYuX19DaGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpID09IEZhbHNl Og0KPiANCj4gKyAgICAgICAgICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1JFREVGSU5FRA0KPiANCj4gKyAgICAgICAgICAgIHNlbGYuX19NYXJrUXVl c3Rpb25JZFVzZWQoUXVlc3Rpb25JZCkNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlz dFswXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzFd LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMl0uUXVl c3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFszXS5RdWVzdGlv bklkID0gUXVlc3Rpb25JZA0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlFU eXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9SRUYNCj4gDQo+ICsgICAgICAgIHBOb2Rl TGlzdFsxXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fUkVGDQo+IA0KPiArICAg ICAgICBwTm9kZUxpc3RbMl0uUVR5cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1JFRg0K PiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzNdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVT VElPTl9SRUYNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFswXS5OZXh0ID0gcE5v ZGVMaXN0WzFdDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMV0uTmV4dCA9IHBOb2RlTGlzdFsy XQ0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzJdLk5leHQgPSBwTm9kZUxpc3RbM10NCj4gDQo+ ICsgICAgICAgIHBOb2RlTGlzdFszXS5OZXh0ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KPiANCj4g KyAgICAgICAgc2VsZi5fX1F1ZXN0aW9uTGlzdCA9IHBOb2RlTGlzdFswXQ0KPiANCj4gKyAgICAg ICAgeCA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgRG9Q ZW5kaW5nQXNzaWduDQo+IA0KPiArDQo+IA0KPiArICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwg VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVm IFJlZ2lzdGVyT2xkRGF0ZVF1ZXN0aW9uKHNlbGYsIFllYXJWYXJJZCwgTW9udGhWYXJJZCwgRGF5 VmFySWQsDQo+IFF1ZXN0aW9uSWQpOg0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0ID0gW10NCj4g DQo+ICsgICAgICAgIGlmIFllYXJWYXJJZCA9PSAnJyBvciBNb250aFZhcklkID09ICcnIG9yIERh eVZhcklkID09ICcnIG9yIFllYXJWYXJJZCA9PQ0KPiBOb25lIG9yIE1vbnRoVmFySWQgPT0gTm9u ZSBvciBEYXlWYXJJZCA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlv bklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfU0tJUEVEDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgWWVhclZhcklkLCBEQVRF X1lFQVJfQklUTUFTSykNCj4gDQo+ICsgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELA0KPiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOb25lLCBNb250aFZhcklkLA0KPiBE QVRFX01PTlRIX0JJVE1BU0spDQo+IA0KPiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiAN Cj4gKyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBl bHNlOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05fSURfSU5WQUxJRCwN Cj4gVmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+IA0KPiArDQo+ IA0KPiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgRGF5VmFySWQsIERB VEVfREFZX0JJVE1BU0spDQo+IA0KPiArICAgICAgICBpZiBwTm9kZSAhPSBOb25lOg0KPiANCj4g KyAgICAgICAgICAgIHBOb2RlTGlzdC5hcHBlbmQocE5vZGUpDQo+IA0KPiArICAgICAgICBlbHNl Og0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBFRklfUVVFU1RJT05fSURfSU5WQUxJRCwNCj4g VmZyUmV0dXJuQ29kZS5WRlJfUkVUVVJOX09VVF9GT1JfUkVTT1VSQ0VTDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBpZiBRdWVzdGlvbklkID09IEVGSV9RVUVTVElPTl9JRF9JTlZBTElEOg0KPiAN Cj4gKyAgICAgICAgICAgIFF1ZXN0aW9uSWQgPSBzZWxmLl9fR2V0RnJlZVF1ZXN0aW9uSWQoKQ0K PiANCj4gKyAgICAgICAgZWxzZToNCj4gDQo+ICsgICAgICAgICAgICBpZiBzZWxmLl9fQ2hlY2tR dWVzdGlvbklkRnJlZShRdWVzdGlvbklkKSA9PSBGYWxzZToNCj4gDQo+ICsgICAgICAgICAgICAg ICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9S RVRVUk5fUkVERUZJTkVEDQo+IA0KPiArICAgICAgICAgICAgc2VsZi5fX01hcmtRdWVzdGlvbklk VXNlZChRdWVzdGlvbklkKQ0KPiANCj4gKw0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlF1 ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMV0uUXVlc3Rp b25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdFsyXS5RdWVzdGlvbklk ID0gUXVlc3Rpb25JZA0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzBdLlFUeXBlID0gRUZJX1FV RVNJT05fVFlQRS5RVUVTVElPTl9EQVRFDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMV0uUVR5 cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX0RBVEUNCj4gDQo+ICsgICAgICAgIHBOb2Rl TGlzdFsyXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fREFURQ0KPiANCj4gKyAg ICAgICAgcE5vZGVMaXN0WzBdLk5leHQgPSBwTm9kZUxpc3RbMV0NCj4gDQo+ICsgICAgICAgIHBO b2RlTGlzdFsxXS5OZXh0ID0gcE5vZGVMaXN0WzJdDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3Rb Ml0uTmV4dCA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCj4gDQo+ICsgICAgICAgIHNlbGYuX19RdWVz dGlvbkxpc3QgPSBwTm9kZUxpc3RbMF0NCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICMgRG9QZW5k aW5nQXNzaWduDQo+IA0KPiArICAgICAgICByZXR1cm4gUXVlc3Rpb25JZCwgVmZyUmV0dXJuQ29k ZS5WRlJfUkVUVVJOX1NVQ0NFU1MNCj4gDQo+ICsNCj4gDQo+ICsgICAgZGVmIFJlZ2lzdGVyT2xk VGltZVF1ZXN0aW9uKHNlbGYsIEhvdXJWYXJJZCwgTWludXRlVmFySWQsIFNlY29uZFZhcklkLA0K PiBRdWVzdGlvbklkKToNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlzdCA9IFtdDQo+IA0KPiArICAg ICAgICBpZiBIb3VyVmFySWQgPT0gJycgb3IgTWludXRlVmFySWQgPT0gJycgb3IgU2Vjb25kVmFy SWQgPT0gJycgb3IgSG91clZhcklkDQo+ID09IE5vbmUgb3IgTWludXRlVmFySWQgPT0gTm9uZSBv ciBTZWNvbmRWYXJJZCA9PSBOb25lOg0KPiANCj4gKyAgICAgICAgICAgIHJldHVybiBRdWVzdGlv bklkLCBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fRVJST1JfU0tJUEVEDQo+IA0KPiArDQo+IA0K PiArICAgICAgICBwTm9kZSA9IFNWZnJRdWVzdGlvbk5vZGUoTm9uZSwgSG91clZhcklkLCBUSU1F X0hPVVJfQklUTUFTSykNCj4gDQo+ICsgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQo+IA0KPiAr ICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gDQo+ICsgICAgICAgIGVsc2U6 DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElELA0KPiBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gDQo+ICsNCj4gDQo+ ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOb25lLCBNaW51dGVWYXJJZCwNCj4g VElNRV9NSU5VVEVfQklUTUFTSykNCj4gDQo+ICsgICAgICAgIGlmIHBOb2RlICE9IE5vbmU6DQo+ IA0KPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gDQo+ICsgICAgICAg IGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9JTlZBTElE LA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4gDQo+ICsN Cj4gDQo+ICsgICAgICAgIHBOb2RlID0gU1ZmclF1ZXN0aW9uTm9kZShOb25lLCBTZWNvbmRWYXJJ ZCwNCj4gVElNRV9TRUNPTkRfQklUTUFTSykNCj4gDQo+ICsgICAgICAgIGlmIHBOb2RlICE9IE5v bmU6DQo+IA0KPiArICAgICAgICAgICAgcE5vZGVMaXN0LmFwcGVuZChwTm9kZSkNCj4gDQo+ICsg ICAgICAgIGVsc2U6DQo+IA0KPiArICAgICAgICAgICAgcmV0dXJuIEVGSV9RVUVTVElPTl9JRF9J TlZBTElELA0KPiBWZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fT1VUX0ZPUl9SRVNPVVJDRVMNCj4g DQo+ICsNCj4gDQo+ICsgICAgICAgIGlmIFF1ZXN0aW9uSWQgPT0gRUZJX1FVRVNUSU9OX0lEX0lO VkFMSUQ6DQo+IA0KPiArICAgICAgICAgICAgUXVlc3Rpb25JZCA9IHNlbGYuX19HZXRGcmVlUXVl c3Rpb25JZCgpDQo+IA0KPiArICAgICAgICBlbHNlOg0KPiANCj4gKyAgICAgICAgICAgIGlmIHNl bGYuX19DaGVja1F1ZXN0aW9uSWRGcmVlKFF1ZXN0aW9uSWQpID09IEZhbHNlOg0KPiANCj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gRUZJX1FVRVNUSU9OX0lEX0lOVkFMSUQsDQo+IFZmclJldHVy bkNvZGUuVkZSX1JFVFVSTl9SRURFRklORUQNCj4gDQo+ICsgICAgICAgICAgICBzZWxmLl9fTWFy a1F1ZXN0aW9uSWRVc2VkKFF1ZXN0aW9uSWQpDQo+IA0KPiArDQo+IA0KPiArICAgICAgICBwTm9k ZUxpc3RbMF0uUXVlc3Rpb25JZCA9IFF1ZXN0aW9uSWQNCj4gDQo+ICsgICAgICAgIHBOb2RlTGlz dFsxXS5RdWVzdGlvbklkID0gUXVlc3Rpb25JZA0KPiANCj4gKyAgICAgICAgcE5vZGVMaXN0WzJd LlF1ZXN0aW9uSWQgPSBRdWVzdGlvbklkDQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMF0uUVR5 cGUgPSBFRklfUVVFU0lPTl9UWVBFLlFVRVNUSU9OX1RJTUUNCj4gDQo+ICsgICAgICAgIHBOb2Rl TGlzdFsxXS5RVHlwZSA9IEVGSV9RVUVTSU9OX1RZUEUuUVVFU1RJT05fVElNRQ0KPiANCj4gKyAg ICAgICAgcE5vZGVMaXN0WzJdLlFUeXBlID0gRUZJX1FVRVNJT05fVFlQRS5RVUVTVElPTl9USU1F DQo+IA0KPiArICAgICAgICBwTm9kZUxpc3RbMF0uTmV4dCA9IHBOb2RlTGlzdFsxXQ0KPiANCj4g KyAgICAgICAgcE5vZGVMaXN0WzFdLk5leHQgPSBwTm9kZUxpc3RbMl0NCj4gDQo+ICsgICAgICAg IHBOb2RlTGlzdFsyXS5OZXh0ID0gc2VsZi5fX1F1ZXN0aW9uTGlzdA0KPiANCj4gKyAgICAgICAg c2VsZi5fX1F1ZXN0aW9uTGlzdCA9IHBOb2RlTGlzdFswXQ0KPiANCj4gKw0KPiANCj4gKyAgICAg ICAgIyBEb1BlbmRpbmdBc3NpZ24NCj4gDQo+ICsgICAgICAgIHJldHVybiBRdWVzdGlvbklkLCBW ZnJSZXR1cm5Db2RlLlZGUl9SRVRVUk5fU1VDQ0VTUw0KPiANCj4gKw0KPiANCj4gKyAgICBkZWYg UHJpbnRBbGxRdWVzdGlvbihzZWxmLCBGaWxlTmFtZSk6DQo+IA0KPiArDQo+IA0KPiArICAgICAg ICB3aXRoIG9wZW4oRmlsZU5hbWUsICd3JykgYXMgZjoNCj4gDQo+ICsgICAgICAgICAgICBwTm9k ZSA9IHNlbGYuX19RdWVzdGlvbkxpc3QNCj4gDQo+ICsgICAgICAgICAgICB3aGlsZShwTm9kZSAh PSBOb25lKToNCj4gDQo+ICsNCj4gDQo+ICsgICAgICAgICAgICAgICAgZi53cml0ZSgnUXVlc3Rp b24gVmFySWQgaXMge30gYW5kIFF1ZXN0aW9uSWQgaXMNCj4gJy5mb3JtYXQocE5vZGUuVmFySWRT dHIpKQ0KPiANCj4gKyAgICAgICAgICAgICAgICBmLndyaXRlKCclZFxuJyUocE5vZGUuUXVlc3Rp b25JZCkpDQo+IA0KPiArICAgICAgICAgICAgICAgICMgZi53cml0ZSgnJSN4XG4nJShwTm9kZS5R dWVzdGlvbklkKSkNCj4gDQo+ICsgICAgICAgICAgICAgICAgcE5vZGUgPSBwTm9kZS5OZXh0DQo+ IA0KPiArDQo+IA0KPiArICAgICAgICBmLmNsb3NlKCkNCj4gXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlDQo+IGRpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9WZnJDb21waWxl ci9tYWluLnB5DQo+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29tcGlsZXIvbWFpbi5w eQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi42MjRjZmUzYWE4 DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vVmZyQ29t cGlsZXIvbWFpbi5weQ0KPiBAQCAtMCwwICsxLDI3IEBADQo+ICtmcm9tIGRpc3R1dGlscy5maWxl bGlzdCBpbXBvcnQgRmlsZUxpc3QNCj4gDQo+ICtmcm9tIHBpY2tsZXRvb2xzIGltcG9ydCB1aW50 OA0KPiANCj4gK2ltcG9ydCBzeXMNCj4gDQo+ICtmcm9tIHRraW50ZXIudHRrIGltcG9ydCBUcmVl dmlldw0KPiANCj4gK2Zyb20gYW50bHI0IGltcG9ydCoNCj4gDQo+ICtmcm9tIFZmckNvbXBpbGVy LlZmclN5bnRheExleGVyIGltcG9ydCBWZnJTeW50YXhMZXhlcg0KPiANCj4gK2Zyb20gVmZyQ29t cGlsZXIuVmZyU3ludGF4UGFyc2VyIGltcG9ydCBWZnJTeW50YXhQYXJzZXINCj4gDQo+ICtmcm9t IFZmckNvbXBpbGVyLlZmclN5bnRheFZpc2l0b3IgaW1wb3J0IFZmclN5bnRheFZpc2l0b3INCj4g DQo+ICtmcm9tIFZmckNvbXBpbGVyLlZmckVycm9yIGltcG9ydCAqDQo+IA0KPiArDQo+IA0KPiAr ZGVmIFZmclBhcnNlKEluZmlsZSwgWWFtbE91dEZpbGUsIEpzb25PdXRGaWxlKToNCj4gDQo+ICsg ICAgZ0NWZnJFcnJvckhhbmRsZS5TZXRJbnB1dEZpbGUgKEluZmlsZSkNCj4gDQo+ICsgICAgSW5w dXRTdHJlYW0gPSBGaWxlU3RyZWFtKEluZmlsZSkNCj4gDQo+ICsgICAgTGV4ZXIgPSBWZnJTeW50 YXhMZXhlcihJbnB1dFN0cmVhbSkNCj4gDQo+ICsgICAgU3RyZWFtID0gQ29tbW9uVG9rZW5TdHJl YW0oTGV4ZXIpDQo+IA0KPiArICAgIFBhcnNlciA9IFZmclN5bnRheFBhcnNlcihTdHJlYW0pDQo+ IA0KPiArICAgIFRyZWUgPSBQYXJzZXIudmZyUHJvZ3JhbSgpDQo+IA0KPiArICAgIFZpc2l0b3Ig PSBWZnJTeW50YXhWaXNpdG9yKCkNCj4gDQo+ICsgICAgVmlzaXRvci52aXNpdChUcmVlKQ0KPiAN Cj4gKyAgICBWaXNpdG9yLkR1bXBZYW1sKFZpc2l0b3IuR2V0Um9vdCgpLCBZYW1sT3V0RmlsZSkN Cj4gDQo+ICsgICAgVmlzaXRvci5EdW1wSnNvbihKc29uT3V0RmlsZSkNCj4gDQo+ICsNCj4gDQo+ ICtpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOg0KPiANCj4gKyAgICBJbmZpbGUgPSAnVmZyQ29t cGlsZXIvdGVzdC5pJw0KPiANCj4gKyAgICBZYW1sT3V0RmlsZSA9ICdWZnJDb21waWxlci90ZXN0 LnlhbWwnDQo+IA0KPiArICAgIEpzb25PdXRGaWxlID0gJ1ZmckNvbXBpbGVyL3Rlc3QuanNvbicN Cj4gDQo+ICsgICAgVmZyUGFyc2UoSW5maWxlLCBZYW1sT3V0RmlsZSwgSnNvbk91dEZpbGUpDQo+ IA0KPiAtLQ0KPiAyLjI3LjAud2luZG93cy4xDQo+IA0KPiANCj4gDQo+IA0KPiANCg0K