From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6A3DCC54798 for ; Thu, 7 Mar 2024 13:30:21 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.689913.1075382 (Exim 4.92) (envelope-from ) id 1riDp4-0000L0-4Z; Thu, 07 Mar 2024 13:30:10 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 689913.1075382; Thu, 07 Mar 2024 13:30:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1riDp4-0000Ks-1m; Thu, 07 Mar 2024 13:30:10 +0000 Received: by outflank-mailman (input) for mailman id 689913; Thu, 07 Mar 2024 13:30:09 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1riDp3-0000Km-5t for xen-devel@lists.xenproject.org; Thu, 07 Mar 2024 13:30:09 +0000 Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [2a00:1450:4864:20::135]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id d0a9dd77-dc86-11ee-afda-a90da7624cb6; Thu, 07 Mar 2024 14:30:08 +0100 (CET) Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-51325c38d10so1918749e87.1 for ; Thu, 07 Mar 2024 05:30:08 -0800 (PST) Received: from [192.168.206.239] ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id 25-20020ac24859000000b005134b2b45easm1555473lfy.232.2024.03.07.05.30.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Mar 2024 05:30:06 -0800 (PST) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: d0a9dd77-dc86-11ee-afda-a90da7624cb6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709818207; x=1710423007; darn=lists.xenproject.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=jxQW79O+/oYAtOwX+pJYmMMRf1q+vtbVl8k9fmKfxYs=; b=dx2hkXMOAoTQSvDTZthLq+TG+34yCVHl/GmA+dAGDmW0iI5dzZ+YT9gcF2gKPyYsQY epsEnf6VQs/yhVdQ0SfZPBa1trFzAmMr9FzALrDo71JBp72cj9155roSdfdZpH6POv4/ w5OwQdH0rTYxSO/LTzjrt8af4SWSegr55jvAYXqvm+ZqZo+46ZFwGw73/eQzntK6ehXI gcsDwAw/+3qC6ZRsooAf2jAKGewbvxFHKnEO5e8KcXdaDWGB8zJrfScq1rsshDyEt/GM Nl5AI8B69uWYBeRlYRoQcPKXTajxDHAV/Rqvk26Z2Y9HZcU0IcsuRFuMdTZ70fLm/MSz YOdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709818207; x=1710423007; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=jxQW79O+/oYAtOwX+pJYmMMRf1q+vtbVl8k9fmKfxYs=; b=RMYQYEBBkckNaQ+1PyZLwEszu0PUtar1A8Bb42qL3mGCoIENcb6jMmJeeYEnTpjpXm OLofkItv7oYYscf7ldzDPsKfdcJDV6xcKKXpY8U5l0EDwTfQ9Ba3kKEXXIUkgTfokSZy mPakXSZ32E/AGTaWOATXaEblheDop3pqxy6XW7wtG0qcoVs6GxsvLJ8kBhSYjnBdu6k+ 2JDQg5LMoJIWuPHlQkQ+PnQXE4zvj6JnZO/T+8MZQnHyONyNA2SAVBw5m89cJ09exZnQ d4PQEt4H5Fov2paxD+Gdx0HbDHgTtIFvWrAH44htifMifqWJRNGI97vKpyzL6KB1eb0B kCQQ== X-Forwarded-Encrypted: i=1; AJvYcCV3lVaT6EXZgVpuIgOrJermd5wrVY/v0j3A752fjq3cyo0s7fCS6PepyXiBG2p2p7Au85c2qvqyVCEsg8zLe8hdPmYFR7E6eejX08SnpE0= X-Gm-Message-State: AOJu0Yyr2Ef1sDyTwDMkd6QfAwrUePor5dhIeJKDKxI1aDbQeT/5aOBC gbHcqgi7cuzFrknzN3owvr5Oevz4Xn3TgLyMQcIhDphpa/7Qcsc0 X-Google-Smtp-Source: AGHT+IEI6ZPfI3NLl36MvLuh2gq1lSXnT0ai635sd9XKWejCmnIXtl9jfzm+F2X07MPwr391RFeHww== X-Received: by 2002:ac2:489c:0:b0:513:2c5f:1078 with SMTP id x28-20020ac2489c000000b005132c5f1078mr92555lfc.8.1709818207088; Thu, 07 Mar 2024 05:30:07 -0800 (PST) Message-ID: <7ae660e5da986503a1353f07ecf298bd9814afe1.camel@gmail.com> Subject: Re: [PATCH v5 13/23] xen/riscv: introduce atomic.h From: Oleksii To: Jan Beulich Cc: Alistair Francis , Bob Eshleman , Connor Davis , Andrew Cooper , George Dunlap , Julien Grall , Stefano Stabellini , Wei Liu , xen-devel@lists.xenproject.org Date: Thu, 07 Mar 2024 14:30:06 +0100 In-Reply-To: <3d9b0fa3-d100-4e73-b5d5-782ef58e331a@suse.com> References: <85ad8c86901d045beed228947d4c3faf277af3ca.1708962629.git.oleksii.kurochko@gmail.com> <3d9b0fa3-d100-4e73-b5d5-782ef58e331a@suse.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) MIME-Version: 1.0 T24gV2VkLCAyMDI0LTAzLTA2IGF0IDE2OjMxICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP biAyNi4wMi4yMDI0IDE4OjM4LCBPbGVrc2lpIEt1cm9jaGtvIHdyb3RlOgo+ID4gLS0tIC9kZXYv bnVsbAo+ID4gKysrIGIveGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXRvbWljLmgKPiA+IEBA IC0wLDAgKzEsMjk2IEBACj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b25seSAqLwo+ID4gKy8qCj4gPiArICogVGFrZW4gYW5kIG1vZGlmaWVkIGZyb20gTGludXguCj4g PiArICoKPiA+ICsgKiBUaGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBkb25lOgo+ID4gKyAqIC0g KiBhdG9taWMjI3ByZWZpeCMjXyp4Y2hnXyooYXRvbWljIyNwcmVmaXgjI190ICp2LCBjX3Qgbikg d2VyZQo+ID4gdXBkYXRlZAo+ID4gKyAqwqDCoMKgwqAgdG8gdXNlX18qeGNoZ19nZW5lcmljKCkK PiA+ICsgKiAtIGRyb3AgY2FzdHMgaW4gd3JpdGVfYXRvbWljKCkgYXMgdGhleSBhcmUgdW5uZWNl c3NhcnkKPiA+ICsgKiAtIGRyb3AgaW50cm9kdWN0aW9uIG9mIFdSSVRFX09OQ0UoKSBhbmQgUkVB RF9PTkNFKCkuCj4gPiArICrCoMKgIFhlbiBwcm92aWRlcyBBQ0NFU1NfT05DRSgpCj4gPiArICog LSByZW1vdmUgemVyby1sZW5ndGggYXJyYXkgYWNjZXNzIGluIHJlYWRfYXRvbWljKCkKPiA+ICsg KiAtIGRyb3AgZGVmaW5lcyBzaW1pbGFyIHRvIHBhdHRlcm4KPiA+ICsgKsKgwqAgI2RlZmluZSBh dG9taWNfYWRkX3JldHVybl9yZWxheGVkwqDCoCBhdG9taWNfYWRkX3JldHVybl9yZWxheGVkCj4g PiArICogLSBtb3ZlIG5vdCBSSVNDLVYgc3BlY2lmaWMgZnVuY3Rpb25zIHRvIGFzbS1nZW5lcmlj L2F0b21pY3MtCj4gPiBvcHMuaAo+ID4gKyAqIAo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAwNyBS ZWQgSGF0LCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCj4gPiArICogQ29weXJpZ2h0IChDKSAy MDEyIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQo+ID4gKyAqIENvcHly aWdodCAoQykgMjAxNyBTaUZpdmUKPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjQgVmF0ZXMgU0FT Cj4gPiArICovCj4gPiArCj4gPiArI2lmbmRlZiBfQVNNX1JJU0NWX0FUT01JQ19ICj4gPiArI2Rl ZmluZSBfQVNNX1JJU0NWX0FUT01JQ19ICj4gPiArCj4gPiArI2luY2x1ZGUgPHhlbi9hdG9taWMu aD4KPiA+ICsKPiA+ICsjaW5jbHVkZSA8YXNtL2NtcHhjaGcuaD4KPiA+ICsjaW5jbHVkZSA8YXNt L2ZlbmNlLmg+Cj4gPiArI2luY2x1ZGUgPGFzbS9pby5oPgo+ID4gKyNpbmNsdWRlIDxhc20vc3lz dGVtLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgPGFzbS1nZW5lcmljL2F0b21pYy1vcHMuaD4KPiAK PiBXaGlsZSwgYmVjYXVzZSBvZiB0aGUgZm9yd2FyZCBkZWNscyBpbiB4ZW4vYXRvbWljLmgsIGhh dmluZyB0aGlzCj4gI2luY2x1ZGUKPiB3b3JrcywgSSB3b25kZXIgaWYgaXQgd291bGRuJ3QgYmV0 dGVyIGJlIHBsYWNlZCBmdXJ0aGVyIGRvd24uIFRoZQo+IGNvbXBpbGVyCj4gd2lsbCBsaWtlbHkg aGF2ZSBhbiBlYXNpZXIgdGltZSB3aGVuIGl0IHNlZXMgdGhlIGlubGluZSBkZWZpbml0aW9ucwo+ IGFoZWFkCj4gb2YgYW55IHVzZXMuCkRvIHlvdSBtZWFuIHRvIG1vdmUgaXQgYWZ0ZXIgI2RlZmlu ZSBfX2F0b21pY19yZWxlYXNlX2ZlbmNlKCkgPwoKPiAKPiA+ICt2b2lkIF9fYmFkX2F0b21pY19z aXplKHZvaWQpOwo+ID4gKwo+ID4gKy8qCj4gPiArICogTGVnYWN5IGZyb20gTGludXgga2VybmVs LiBGb3Igc29tZSByZWFzb24gdGhleSB3YW50ZWQgdG8gaGF2ZQo+ID4gb3JkZXJlZAo+ID4gKyAq IHJlYWQvd3JpdGUgYWNjZXNzLiBUaGVyZWJ5IHJlYWQqIGlzIHVzZWQgaW5zdGVhZCBvZgo+ID4g cmVhZDxYPl9jcHUoKQo+ID4gKyAqLwo+ID4gK3N0YXRpYyBhbHdheXNfaW5saW5lIHZvaWQgcmVh ZF9hdG9taWNfc2l6ZShjb25zdCB2b2xhdGlsZSB2b2lkICpwLAo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB2b2lkICpyZXMsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHVuc2lnbmVkIGludCBzaXplKQo+ID4gK3sKPiA+ICvCoMKgwqAgc3dpdGNoICggc2l6ZSApCj4g PiArwqDCoMKgIHsKPiA+ICvCoMKgwqAgY2FzZSAxOiAqKHVpbnQ4X3QgKilyZXMgPSByZWFkYihw KTsgYnJlYWs7Cj4gPiArwqDCoMKgIGNhc2UgMjogKih1aW50MTZfdCAqKXJlcyA9IHJlYWR3KHAp OyBicmVhazsKPiA+ICvCoMKgwqAgY2FzZSA0OiAqKHVpbnQzMl90ICopcmVzID0gcmVhZGwocCk7 IGJyZWFrOwo+ID4gK8KgwqDCoCBjYXNlIDg6ICoodWludDMyX3QgKilyZXPCoCA9IHJlYWRxKHAp OyBicmVhazsKPiAKPiBUaGlzIGlzIHRoZSBwb2ludCB3aGVyZSB0aGUgbGFjayBvZiBjb25zdHJh aW50cyBpbiBpby5oIChzZWUgbXkKPiByZXNwZWN0aXZlCj4gY29tbWVudCkgYmVjb21lcyBhY3R1 YWxseSBoYXJtZnVsOiBZb3UncmUgYWNjZXNzaW5nIG5vdCBNTUlPLCBidXQKPiBjb21waWxlci0K PiB2aXNpYmxlIHZhcmlhYmxlcyBoZXJlLiBJdCBuZWVkcyB0byBrbm93IHdoaWNoIG9uZXMgYXJl IHJlYWQgLi4uCj4gCj4gPiArwqDCoMKgIGRlZmF1bHQ6IF9fYmFkX2F0b21pY19zaXplKCk7IGJy ZWFrOwo+ID4gK8KgwqDCoCB9Cj4gPiArfQo+ID4gKwo+ID4gKyNkZWZpbmUgcmVhZF9hdG9taWMo cCkgKHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgXAo+ID4gK8KgwqDCoCB1bmlvbiB7IHR5cGVvZigqcCkgdmFsOyBjaGFyIGNbc2l6 ZW9mKCpwKV07IH0geF87wqDCoCBcCj4gPiArwqDCoMKgIHJlYWRfYXRvbWljX3NpemUocCwgeF8u Yywgc2l6ZW9mKCpwKSk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCB4 Xy52YWw7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArfSkKPiA+ICsKPiA+ ICsjZGVmaW5lIHdyaXRlX2F0b21pYyhwLCB4KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gKyh7wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgIHR5cGVvZigqcCkg eF9fID0gKHgpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgIHN3aXRjaCAoIHNpemVvZigqcCkgKcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4g PiArwqDCoMKgIHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwK PiA+ICvCoMKgwqAgY2FzZSAxOiB3cml0ZWIoeF9fLMKgIHApOyBicmVhazvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgY2FzZSAyOiB3cml0ZXco eF9fLCBwKTsgYnJlYWs7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFwKPiA+ICvCoMKgwqAgY2FzZSA0OiB3cml0ZWwoeF9fLCBwKTsgYnJlYWs7wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgY2FzZSA4OiB3cml0 ZXEoeF9fLCBwKTsgYnJlYWs7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFwKPiAKPiAuLi4gb3Igd3JpdHRlbi4KPiAKPiBOaXQ6IFRoZXJlJ3MgYSBzdHJheSBibGFu ayBpbiB0aGUgd3JpdGViKCkgaW52b2NhdGlvbi4KPiAKPiA+ICvCoMKgwqAgZGVmYXVsdDogX19i YWRfYXRvbWljX3NpemUoKTsgYnJlYWs7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwK PiA+ICvCoMKgwqAgfcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg XAo+ID4gK8KgwqDCoCB4X187wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBc Cj4gPiArfSkKPiA+ICsKPiA+ICsjZGVmaW5lIGFkZF9zaXplZChwLCB4KcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4g Kyh7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4g PiArwqDCoMKgIHR5cGVvZigqKHApKSB4X18gPSAoeCk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCBzd2l0Y2ggKCBz aXplb2YoKihwKSkgKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFwKPiAKPiBMaWtlIHlvdSBoYXZlIGl0IGhlcmUsIHtyZWFkLHdyaXRlfV9h dG9taWMoKSBhbHNvIG5lZWQgcCBwcm9wZXJseQo+IHBhcmVudGhlc2l6ZWQuIFRoZXJlIGxvb2sg dG8gYmUgbW9yZSBwYXJlbnRoZXNpemF0aW9uIGlzc3VlcyBmdXJ0aGVyCj4gZG93bi4KPiAKPiA+ ICvCoMKgwqAge8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ ID4gK8KgwqDCoCBjYXNlIDE6IHdyaXRlYihyZWFkX2F0b21pYyhwKSArIHhfXywgcCk7IGJyZWFr O8KgwqDCoMKgIFwKPiA+ICvCoMKgwqAgY2FzZSAyOiB3cml0ZXcocmVhZF9hdG9taWMocCkgKyB4 X18sIHApOyBicmVhazvCoMKgwqDCoCBcCj4gPiArwqDCoMKgIGNhc2UgNDogd3JpdGVsKHJlYWRf YXRvbWljKHApICsgeF9fLCBwKTsgYnJlYWs7wqDCoMKgwqAgXAo+ID4gK8KgwqDCoCBkZWZhdWx0 OiBfX2JhZF9hdG9taWNfc2l6ZSgpOyBicmVhazvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgXAo+ID4gK8KgwqDCoCB9wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBcCj4gPiArfSkKPiAKPiBBbnkgcmVhc29uIHRoaXMgZG9lc24ndCBoYXZlIGFuIDgtYnl0 ZSBjYXNlPyB4ODYnZXMgYXQgbGVhc3QgaGFzIG9uZS4KSnVzdCBtaXNzZWQgdG8gYWRkIGFuZCBu byBjb21waWxlciBlcnJvciBJIGhhZCwgYnV0IEknbGwgYWRkZWQgY2FzZSA4LgoKPiAKPiA+ICsj ZGVmaW5lIF9fYXRvbWljX2FjcXVpcmVfZmVuY2UoKSBcCj4gPiArwqDCoMKgIF9fYXNtX18gX192 b2xhdGlsZV9fICggUklTQ1ZfQUNRVUlSRV9CQVJSSUVSICIiIDo6OiAibWVtb3J5IiApCj4gPiAr Cj4gPiArI2RlZmluZSBfX2F0b21pY19yZWxlYXNlX2ZlbmNlKCkgXAo+ID4gK8KgwqDCoCBfX2Fz bV9fIF9fdm9sYXRpbGVfXyAoIFJJU0NWX1JFTEVBU0VfQkFSUklFUiAiIiA6OjogIm1lbW9yeSIg KQo+IAo+IEVsc2V3aGVyZSB5b3UgdXNlIGFzbSB2b2xhdGlsZSgpIC0gd2h5IF9fYXNtX18gX192 b2xhdGlsZV9fKCkgaGVyZT8KPiBPciB3aHkgbm90IHRoZXJlIChjbXB4Y2hnLmgsIGlvLmgpPwpJ dCBpcyBob3cgaXQgd2FzIGRlZmluZWQgaW4gTGludXgga2VybmVsLCBzbyBJIGRlY2lkZWQgdG8g dXNlIHRoZWlyCmNvZGUgc3R5bGUsIGJ1dCBjb25zaWRlcmluZyB0aGlzIG1hY3JvcyBsaWtlbHkg bm90IHRvIGJlIGNoYW5nZWQgSSBjYW4KdXBkYXRlIHRoaXMgbGluZXMgd2l0aCBhc20gdm9sYXRp bGUuCgo+IAo+ID4gKy8qCj4gPiArICogRmlyc3QsIHRoZSBhdG9taWMgb3BzIHRoYXQgaGF2ZSBu byBvcmRlcmluZyBjb25zdHJhaW50cyBhbmQKPiA+IHRoZXJlZm9yIGRvbid0Cj4gPiArICogaGF2 ZSB0aGUgQVEgb3IgUkwgYml0cyBzZXQuwqAgVGhlc2UgZG9uJ3QgcmV0dXJuIGFueXRoaW5nLCBz bwo+ID4gdGhlcmUncyBvbmx5Cj4gPiArICogb25lIHZlcnNpb24gdG8gd29ycnkgYWJvdXQuCj4g PiArICovCj4gPiArI2RlZmluZSBBVE9NSUNfT1Aob3AsIGFzbV9vcCwgSSwgYXNtX3R5cGUsIGNf dHlwZSwgcHJlZml4KcKgIFwKPiA+ICtzdGF0aWMgaW5saW5lwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgXAo+ID4gK3ZvaWQgYXRvbWljIyNwcmVmaXgjI18jI29wKGNfdHlwZSBp LCBhdG9taWMjI3ByZWZpeCMjX3QgKnYpIFwKPiA+ICt7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCBfX2FzbV9f IF9fdm9sYXRpbGVfXyAowqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqDCoMKgwqDCoCAiwqDCoCBhbW8i ICNhc21fb3AgIi4iICNhc21fdHlwZSAiIHplcm8sICUxLCAlMCLCoMKgwqDCoMKgIFwKPiA+ICvC oMKgwqDCoMKgwqDCoCA6ICIrQSIgKHYtPmNvdW50ZXIpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDC oMKgwqAgOiAiciIgKEkpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqDC oMKgwqDCoCA6ICJtZW1vcnkiICk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArfcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ ICsKPiA+ICsjZGVmaW5lIEFUT01JQ19PUFMob3AsIGFzbV9vcCwgSSnCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqDCoMKgwqDC oCBBVE9NSUNfT1AgKG9wLCBhc21fb3AsIEksIHcsIGludCzCoMKgICkKPiA+ICsKPiA+ICtBVE9N SUNfT1BTKGFkZCwgYWRkLMKgIGkpCj4gPiArQVRPTUlDX09QUyhzdWIsIGFkZCwgLWkpCj4gPiAr QVRPTUlDX09QUyhhbmQsIGFuZCzCoCBpKQo+ID4gK0FUT01JQ19PUFMoIG9yLMKgIG9yLMKgIGkp Cj4gPiArQVRPTUlDX09QUyh4b3IsIHhvcizCoCBpKQo+ID4gKwo+ID4gKyN1bmRlZiBBVE9NSUNf T1AKPiA+ICsjdW5kZWYgQVRPTUlDX09QUwo+ID4gKwo+ID4gKy8qCj4gPiArICogQXRvbWljIG9w cyB0aGF0IGhhdmUgb3JkZXJlZCwgcmVsYXhlZCwgYWNxdWlyZSwgYW5kIHJlbGVhc2UKPiA+IHZh cmlhbnRzLgo+ID4gKyAqIFRoZXJlJ3MgdHdvIGZsYXZvcnMgb2YgdGhlc2U6IHRoZSBhcml0aG1h dGljIG9wcyBoYXZlIGJvdGgKPiA+IGZldGNoIGFuZCByZXR1cm4KPiA+ICsgKiB2ZXJzaW9ucywg d2hpbGUgdGhlIGxvZ2ljYWwgb3BzIG9ubHkgaGF2ZSBmZXRjaCB2ZXJzaW9ucy4KPiA+ICsgKi8K PiA+ICsjZGVmaW5lIEFUT01JQ19GRVRDSF9PUChvcCwgYXNtX29wLCBJLCBhc21fdHlwZSwgY190 eXBlLAo+ID4gcHJlZml4KcKgwqDCoCBcCj4gPiArc3RhdGljCj4gPiBpbmxpbmXCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK2NfdHlwZSBh dG9taWMjI3ByZWZpeCMjX2ZldGNoXyMjb3AjI19yZWxheGVkKGNfdHlwZQo+ID4gaSzCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGF0b21pYyMjcHJlZml4IyNfdAo+ID4gKnYpwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiAre8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+ IMKgIFwKPiA+ICvCoMKgwqAgcmVnaXN0ZXIgY190eXBlCj4gPiByZXQ7wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCBfX2FzbV9fIF9fdm9sYXRpbGVfXwo+ID4gKMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoMKgwqDCoMKgICLCoMKgIGFtbyIg I2FzbV9vcCAiLiIgI2FzbV90eXBlICIgJTEsICUyLAo+ID4gJTAiwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqDCoMKgwqDCoCA6ICIrQSIgKHYtPmNvdW50ZXIpLCAi PXIiCj4gPiAocmV0KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqDCoMKgwqDCoCA6ICJyIgo+ID4gKEkpwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqAg OiAibWVtb3J5Igo+ID4gKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4g PiArwqDCoMKgIHJldHVybgo+ID4gcmV0O8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFwKPiA+ICt9wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gwqAgXAo+ID4gK3N0 YXRpYwo+ID4gaW5saW5lwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFwKPiA+ICtjX3R5cGUgYXRvbWljIyNwcmVmaXgjI19mZXRjaF8jI29wKGNfdHlw ZSBpLCBhdG9taWMjI3ByZWZpeCMjX3QKPiA+ICp2KSBcCj4gPiAre8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAK PiA+IMKgIFwKPiA+ICvCoMKgwqAgcmVnaXN0ZXIgY190eXBlCj4gPiByZXQ7wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCBfX2FzbV9fIF9fdm9sYXRpbGVfXwo+ID4g KMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoMKgwqDCoMKgICLCoMKgIGFt byIgI2FzbV9vcCAiLiIgI2FzbV90eXBlICIuYXFybMKgICUxLCAlMiwKPiA+ICUwIsKgwqDCoMKg wqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqAgOiAiK0EiICh2LT5jb3VudGVyKSwgIj1y Igo+ID4gKHJldCnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqAgOiAiciIKPiA+IChJKcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoMKgwqDCoMKgIDog Im1lbW9yeSIKPiA+ICk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4g K8KgwqDCoCByZXR1cm4KPiA+IHJldDvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBcCj4gPiArfQo+ID4gKwo+ID4gKyNkZWZpbmUgQVRPTUlDX09QX1JFVFVS TihvcCwgYXNtX29wLCBjX29wLCBJLCBhc21fdHlwZSwgY190eXBlLAo+ID4gcHJlZml4KSBcCj4g PiArc3RhdGljCj4gPiBpbmxpbmXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArY190eXBlIGF0b21pYyMjcHJlZml4IyNfIyNv cCMjX3JldHVybl9yZWxheGVkKGNfdHlwZQo+ID4gaSzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYXRvbWljIyNwcmVmaXgjI190Cj4gPiAqdinCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICt7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gwqDC oMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGF0b21pYyMjcHJlZml4IyNfZmV0 Y2hfIyNvcCMjX3JlbGF4ZWQoaSwgdikgY19vcAo+ID4gSTvCoMKgwqDCoMKgIFwKPiA+ICt9wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoAo+ID4gwqDCoMKgwqDCoCBcCj4gPiArc3RhdGljCj4gPiBpbmxpbmXCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBc Cj4gPiArY190eXBlIGF0b21pYyMjcHJlZml4IyNfIyNvcCMjX3JldHVybihjX3R5cGUgaSwgYXRv bWljIyNwcmVmaXgjI190Cj4gPiAqdinCoCBcCj4gPiAre8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+IMKg wqDCoMKgwqAgXAo+ID4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBhdG9taWMjI3ByZWZpeCMjX2Zl dGNoXyMjb3AoaSwgdikgY19vcAo+ID4gSTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg XAo+ID4gK30KPiA+ICsKPiA+ICsjZGVmaW5lIEFUT01JQ19PUFMob3AsIGFzbV9vcCwgY19vcCwK PiA+IEkpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqAgQVRPTUlDX0ZFVENIX09QKCBvcCwg YXNtX29wLMKgwqDCoMKgwqDCoCBJLCB3LCBpbnQswqDCoAo+ID4gKcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoMKgwqDCoMKgIEFUT01JQ19PUF9SRVRVUk4ob3AsIGFz bV9vcCwgY19vcCwgSSwgdywgaW50LMKgwqAgKQo+IAo+IFdoYXQgcHVycG9zZSBpcyB0aGUgbGFz dCBtYWNybyBhcmd1bWVudCB3aGVuIHlvdSBvbmx5IGV2ZXIgcGFzcwo+IG5vdGhpbmcKPiBmb3Ig aXQgKGhlcmUgYW5kIC4uLgo+IAo+ID4gK0FUT01JQ19PUFMoYWRkLCBhZGQsICsswqAgaSkKPiA+ ICtBVE9NSUNfT1BTKHN1YiwgYWRkLCArLCAtaSkKPiA+ICsKPiA+ICsjdW5kZWYgQVRPTUlDX09Q Uwo+ID4gKwo+ID4gKyNkZWZpbmUgQVRPTUlDX09QUyhvcCwgYXNtX29wLCBJKSBcCj4gPiArwqDC oMKgwqDCoMKgwqAgQVRPTUlDX0ZFVENIX09QKG9wLCBhc21fb3AsIEksIHcsIGludCzCoMKgICkK PiAKPiAuLi4gaGVyZSk/CmZvciBnZW5lcmljIEFUT01JQzY0IGl0IGlzIG5vdCB1c2VkOgoKI2lm ZGVmIENPTkZJR19HRU5FUklDX0FUT01JQzY0CiNkZWZpbmUgQVRPTUlDX09QUyhvcCwgYXNtX29w LCBjX29wLApJKQkJCQkJXAogICAgICAgIEFUT01JQ19GRVRDSF9PUCggb3AsIGFzbV9vcCwgICAg ICAgSSwgdywgaW50LCAgCikJCVwKICAgICAgICBBVE9NSUNfT1BfUkVUVVJOKG9wLCBhc21fb3As IGNfb3AsIEksIHcsIGludCwgICApCiNlbHNlCiNkZWZpbmUgQVRPTUlDX09QUyhvcCwgYXNtX29w LCBjX29wLApJKQkJCQkJXAogICAgICAgIEFUT01JQ19GRVRDSF9PUCggb3AsIGFzbV9vcCwgICAg ICAgSSwgdywgaW50LCAgCikJCVwKICAgICAgICBBVE9NSUNfT1BfUkVUVVJOKG9wLCBhc21fb3As IGNfb3AsIEksIHcsIGludCwgIAopCQlcCiAgICAgICAgQVRPTUlDX0ZFVENIX09QKCBvcCwgYXNt X29wLCAgICAgICBJLCBkLCBzNjQsCjY0KQkJXAogICAgICAgIEFUT01JQ19PUF9SRVRVUk4ob3As IGFzbV9vcCwgY19vcCwgSSwgZCwgczY0LCA2NCkKI2VuZGlmCgooIHRoZSBjb2RlIGlzIGZyb20g TGludXgga2VybmVsICkKT25seSBDT05GSUdfR0VORVJJQ19BVE9NSUM2ND15IHdhcyBwb3J0ZWQg dG8gWGVuLgoKPiAKPiA+ICtBVE9NSUNfT1BTKGFuZCwgYW5kLCBpKQo+ID4gK0FUT01JQ19PUFMo IG9yLMKgIG9yLCBpKQo+ID4gK0FUT01JQ19PUFMoeG9yLCB4b3IsIGkpCj4gPiArCj4gPiArI3Vu ZGVmIEFUT01JQ19PUFMKPiA+ICsKPiA+ICsjdW5kZWYgQVRPTUlDX0ZFVENIX09QCj4gPiArI3Vu ZGVmIEFUT01JQ19PUF9SRVRVUk4KPiA+ICsKPiA+ICsvKiBUaGlzIGlzIHJlcXVpcmVkIHRvIHBy b3ZpZGUgYSBmdWxsIGJhcnJpZXIgb24gc3VjY2Vzcy4gKi8KPiA+ICtzdGF0aWMgaW5saW5lIGlu dCBhdG9taWNfYWRkX3VubGVzcyhhdG9taWNfdCAqdiwgaW50IGEsIGludCB1KQo+ID4gK3sKPiA+ ICvCoMKgwqDCoMKgwqAgaW50IHByZXYsIHJjOwo+ID4gKwo+ID4gK8KgwqDCoCBfX2FzbV9fIF9f dm9sYXRpbGVfXyAoCj4gPiArwqDCoMKgwqDCoMKgwqAgIjA6IGxyLnfCoMKgwqDCoCAlW3BdLMKg ICVbY11cbiIKPiA+ICvCoMKgwqDCoMKgwqDCoCAiwqDCoCBiZXHCoMKgwqDCoMKgICVbcF0swqAg JVt1XSwgMWZcbiIKPiA+ICvCoMKgwqDCoMKgwqDCoCAiwqDCoCBhZGTCoMKgwqDCoMKgICVbcmNd LCAlW3BdLCAlW2FdXG4iCj4gPiArwqDCoMKgwqDCoMKgwqAgIsKgwqAgc2Mudy5ybMKgICVbcmNd LCAlW3JjXSwgJVtjXVxuIgo+ID4gK8KgwqDCoMKgwqDCoMKgICLCoMKgIGJuZXrCoMKgwqDCoCAl W3JjXSwgMGJcbiIKPiA+ICvCoMKgwqDCoMKgwqDCoCBSSVNDVl9GVUxMX0JBUlJJRVIKPiA+ICvC oMKgwqDCoMKgwqDCoCAiMTpcbiIKPiA+ICvCoMKgwqDCoMKgwqDCoCA6IFtwXSAiPSZyIiAocHJl diksIFtyY10gIj0mciIgKHJjKSwgW2NdICIrQSIgKHYtPmNvdW50ZXIpCj4gPiArwqDCoMKgwqDC oMKgwqAgOiBbYV0gInIiIChhKSwgW3VdICJyIiAodSkKPiA+ICvCoMKgwqDCoMKgwqDCoCA6ICJt ZW1vcnkiKTsKPiA+ICvCoMKgwqAgcmV0dXJuIHByZXY7Cj4gPiArfQo+ID4gKwo+ID4gKy8qCj4g PiArICogYXRvbWljX3tjbXAsfXhjaGcgaXMgcmVxdWlyZWQgdG8gaGF2ZSBleGFjdGx5IHRoZSBz YW1lIG9yZGVyaW5nCj4gPiBzZW1hbnRpY3MgYXMKPiA+ICsgKiB7Y21wLH14Y2hnIGFuZCB0aGUg b3BlcmF0aW9ucyB0aGF0IHJldHVybiwgc28gdGhleSBuZWVkIGEgZnVsbAo+ID4gYmFycmllci4K PiA+ICsgKi8KPiA+ICsjZGVmaW5lIEFUT01JQ19PUChjX3QsIHByZWZpeCwgc2l6ZSnCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK3N0 YXRpYyBpbmxpbmXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwK PiA+ICtjX3QgYXRvbWljIyNwcmVmaXgjI194Y2hnX3JlbGF4ZWQoYXRvbWljIyNwcmVmaXgjI190 ICp2LCBjX3QgbikgXAo+ID4gK3vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgcmV0dXJuIF9feGNo Z19nZW5lcmljKCYodi0+Y291bnRlciksIG4sIHNpemUsICIiLCAiIiwgIiIpO8KgIFwKPiAKPiBU aGUgaW5uZXIgcGFyZW50aGVzZXMgYXJlbid0IHJlYWxseSBuZWVkZWQgaGVyZSwgYXJlIHRoZXk/ Cj4gCj4gPiArfcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK3N0YXRpYyBpbmxpbmXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICtjX3QgYXRvbWljIyNwcmVmaXgjI194 Y2hnX2FjcXVpcmUoYXRvbWljIyNwcmVmaXgjI190ICp2LCBjX3QgbikgXAo+ID4gK3vCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFwKPiA+ICvCoMKgwqAgcmV0dXJuIF9feGNoZ19nZW5lcmljKCYodi0+Y291bnRlciksIG4s IHNpemUswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIiIsICIiLCBSSVNDVl9BQ1FVSVJF X0JBUlJJRVIpO8KgwqDCoMKgwqDCoCBcCj4gPiArfcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK3N0YXRpYyBp bmxpbmXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICtj X3QgYXRvbWljIyNwcmVmaXgjI194Y2hnX3JlbGVhc2UoYXRvbWljIyNwcmVmaXgjI190ICp2LCBj X3QgbikgXAo+ID4gK3vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgcmV0dXJuIF9feGNoZ19nZW5l cmljKCYodi0+Y291bnRlciksIG4sIHNpemUswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBc Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg IiIsIFJJU0NWX1JFTEVBU0VfQkFSUklFUiwgIiIpO8KgwqDCoMKgwqDCoCBcCj4gPiArfcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgXAo+ID4gK3N0YXRpYyBpbmxpbmXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFwKPiA+ICtjX3QgYXRvbWljIyNwcmVmaXgjI194Y2hnKGF0b21pYyMjcHJl Zml4IyNfdCAqdiwgY190IG4pwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiAre8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ ID4gK8KgwqDCoCByZXR1cm4gX194Y2hnX2dlbmVyaWMoJih2LT5jb3VudGVyKSwgbiwgc2l6ZSzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiLmFxcmwiLCAiIiwgIiIpO8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK33CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICtz dGF0aWMgaW5saW5lwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBc Cj4gPiArY190IGF0b21pYyMjcHJlZml4IyNfY21weGNoZ19yZWxheGVkKGF0b21pYyMjcHJlZml4 IyNfdCAqdizCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjX3QgbywgY190IG4pwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiAre8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCBy ZXR1cm4gX19jbXB4Y2hnX2dlbmVyaWMoJih2LT5jb3VudGVyKSwgbywgbiwgc2l6ZSzCoMKgwqDC oMKgwqDCoMKgIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAiIiwgIiIsICIiKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArfcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK3N0YXRpYyBpbmxpbmXC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICtjX3QgYXRv bWljIyNwcmVmaXgjI19jbXB4Y2hnX2FjcXVpcmUoYXRvbWljIyNwcmVmaXgjI190ICp2LMKgwqDC oMKgIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNfdCBv LCBjX3QgbinCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFwKPiA+ICt7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgIHJldHVybiBfX2NtcHhj aGdfZ2VuZXJpYygmKHYtPmNvdW50ZXIpLCBvLCBuLCBzaXplLMKgwqDCoMKgwqDCoMKgwqAgXAo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICIiLCAiIiwgUklTQ1ZfQUNRVUlSRV9CQVJSSUVSKTvCoMKgwqAgXAo+ID4gK33CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIFwKPiA+ICtzdGF0aWMgaW5saW5lwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBcCj4gPiArY190IGF0b21pYyMjcHJlZml4IyNfY21weGNoZ19yZWxlYXNlKGF0 b21pYyMjcHJlZml4IyNfdCAqdizCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBjX3QgbywgY190IG4pwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArewnCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ID4gwqAgXAo+ IAo+IEEgaGFyZCB0YWIgbG9va3MgdG8gaGF2ZSBiZWVuIGxlZnQgaGVyZS4KPiAKPiA+ICvCoMKg wqAgcmV0dXJuIF9fY21weGNoZ19nZW5lcmljKCYodi0+Y291bnRlciksIG8sIG4sIHNpemUswqDC oMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgIiIsIFJJU0NWX1JFTEVBU0VfQkFSUklFUiwgIiIpO8KgwqDC oCBcCj4gPiArfcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK3N0YXRpYyBpbmxpbmXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICtjX3QgYXRvbWljIyNwcmVmaXgjI19j bXB4Y2hnKGF0b21pYyMjcHJlZml4IyNfdCAqdiwgY190IG8sIGNfdCBuKQo+ID4gXAo+ID4gK3vC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgcmV0dXJuIF9fY21weGNoZ19nZW5lcmljKCYodi0+Y291 bnRlciksIG8sIG4sIHNpemUswqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi5ybCIsICIiLCAiIGZl bmNlIHJ3LCByd1xuIik7wqDCoMKgwqAgXAo+ID4gK30KPiA+ICsKPiA+ICsjZGVmaW5lIEFUT01J Q19PUFMoKSBcCj4gPiArwqDCoMKgIEFUT01JQ19PUChpbnQswqDCoCAsIDQpCj4gPiArCj4gPiAr QVRPTUlDX09QUygpCj4gPiArCj4gPiArI3VuZGVmIEFUT01JQ19PUFMKPiA+ICsjdW5kZWYgQVRP TUlDX09QCj4gPiArCj4gPiArc3RhdGljIGlubGluZSBpbnQgYXRvbWljX3N1Yl9pZl9wb3NpdGl2 ZShhdG9taWNfdCAqdiwgaW50IG9mZnNldCkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgIGludCBw cmV2LCByYzsKPiA+ICsKPiA+ICvCoMKgwqAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAo+ID4gK8Kg wqDCoMKgwqDCoMKgICIwOiBsci53wqDCoMKgwqAgJVtwXSzCoCAlW2NdXG4iCj4gPiArwqDCoMKg wqDCoMKgwqAgIsKgwqAgc3ViwqDCoMKgwqDCoCAlW3JjXSwgJVtwXSwgJVtvXVxuIgo+ID4gK8Kg wqDCoMKgwqDCoMKgICLCoMKgIGJsdHrCoMKgwqDCoCAlW3JjXSwgMWZcbiIKPiA+ICvCoMKgwqDC oMKgwqDCoCAiwqDCoCBzYy53LnJswqAgJVtyY10sICVbcmNdLCAlW2NdXG4iCj4gPiArwqDCoMKg wqDCoMKgwqAgIsKgwqAgYm5lesKgwqDCoMKgICVbcmNdLCAwYlxuIgo+ID4gK8KgwqDCoMKgwqDC oMKgICLCoMKgIGZlbmNlwqDCoMKgIHJ3LCByd1xuIgo+ID4gK8KgwqDCoMKgwqDCoMKgICIxOlxu Igo+ID4gK8KgwqDCoMKgwqDCoMKgIDogW3BdICI9JnIiIChwcmV2KSwgW3JjXSAiPSZyIiAocmMp LCBbY10gIitBIiAodi0+Y291bnRlcikKPiA+ICvCoMKgwqDCoMKgwqDCoCA6IFtvXSAiciIgKG9m ZnNldCkKPiA+ICvCoMKgwqDCoMKgwqDCoCA6ICJtZW1vcnkiICk7Cj4gPiArwqDCoMKgIHJldHVy biBwcmV2IC0gb2Zmc2V0Owo+ID4gK30KPiA+ICsKPiA+ICsjZGVmaW5lIGF0b21pY19kZWNfaWZf cG9zaXRpdmUodikJYXRvbWljX3N1Yl9pZl9wb3NpdGl2ZSh2LAo+ID4gMSkKPiAKPiBIbW0sIFBQ QyBmb3Igc29tZSByZWFzb24gYWxzbyBoYXMgdGhlIGxhdHRlciwgYnV0IGZvciBib3RoOiBBcmUg dGhleQo+IGluZGVlZAo+IGdvaW5nIHRvIGJlIG5lZWRlZCBpbiBSSVNDLVYgY29kZT8gVGhleSBj ZXJ0YWlubHkgbG9vayB1bm5lY2Vzc2FyeQo+IGZvciB0aGUKPiBwdXJwb3NlIG9mIHRoaXMgc2Vy aWVzIChhbGxvd2luZyBjb21tb24gY29kZSB0byBidWlsZCkuCkkgY2hlY2tlZCBteSBwcml2YXRl IGJyYW5jaGVkIGFuZCBJIGRvbid0IHVzZSBpdCBzdGlsbCwgc28gaXQgbWFrZXMKc2Vuc2UgdG8g ZHJvcCBpdC4KCj4gCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi94ZW4vaW5jbHVkZS9hc20t Z2VuZXJpYy9hdG9taWMtb3BzLmgKPiA+IEBAIC0wLDAgKzEsOTIgQEAKPiA+ICsjLyogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KPiA+ICsjaWZuZGVmIF9BU01fR0VORVJJQ19B VE9NSUNfT1BTX0hfCj4gPiArI2RlZmluZSBfQVNNX0dFTkVSSUNfQVRPTUlDX09QU19IXwo+ID4g Kwo+ID4gKyNpbmNsdWRlIDx4ZW4vYXRvbWljLmg+Cj4gPiArI2luY2x1ZGUgPHhlbi9saWIuaD4K PiAKPiBJZiBJJ20gbm90IG1pc3Rha2VuIHRoaXMgaGVhZGVyIHByb3ZpZGVzIGRlZmF1bHQgaW1w bGVtZW50YXRpb25zIGZvcgo+IGV2ZXJ5Cj4geGVuL2F0b21pYy5oLXByb3ZpZGVkIGZvcndhcmQg aW5saW5lIGRlY2xhcmF0aW9uIHRoYXQgY2FuIGJlCj4gc3ludGhlc2l6ZWQKPiBmcm9tIG90aGVy IGF0b21pYyBmdW5jdGlvbnMuIEkgdGhpbmsgYSBjb21tZW50IHRvIHRoaXMgZWZmZWN0IHdvdWxk Cj4gd2FudAo+IGFkZGluZyBzb21ld2hlcmUgaGVyZS4KSSB0aGluayB3ZSBjYW4gZHJvcCB0aGlz IGluY2x1c2lvbiBoZXJlIGFzIGluY2x1c2lvbiBvZiBhc20tCmdlbmVyaWMvYXRvbWljLW9wcy5o IHdpbGwgYmUgYWx3YXlzIGdvIHdpdGggaW5jbHVzaW9uIG9mIHhlbi9hdG9taWMuaC4KCn4gT2xl a3NpaQo=