From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web09.29331.1635150351015276922 for ; Mon, 25 Oct 2021 01:25:59 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=EjAJakpT; spf=temperror, err=temporary DNS error (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=09325c280a=abner.chang@hpe.com) Received: from pps.filterd (m0150244.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 19OMWlNZ005038; Mon, 25 Oct 2021 08:25:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=pps0720; bh=AulN0G6wh/l7XMi9sFEnQSq+QkaI6NREmWd13KI4Rto=; b=EjAJakpTT+YQQN7af37GPGmYwBAABDccoHmZRM02oe+c4LoCC9C7rxDhxJIuwAdiVlFf WQVV3ng0SF4KES953gyWJ51TQ/vtEHmZ5ChK3IUWWmZM2G6dVauAb2NUuqiytxbq6xOr VKdLLQBXin7oKrM7lRQ3ONJdZoHlQ35vhwnBsCHZ1Ufxv6qxP6KcX6BYBx1g03tGxy/W srCIid06SLD1pJj1sXe8wYTpV0jjqBfglgx2/PEfiSj2nHyjvHTUPq9jAZKRo6rILaVi 4+lkHqmRLHR7BhzaPt0I6eAPWzAu1FqorS3864pc/TsnQ7si7izjpx76pGWGkKzQtM0n UQ== Received: from g9t5009.houston.hpe.com (g9t5009.houston.hpe.com [15.241.48.73]) by mx0b-002e3701.pphosted.com with ESMTP id 3bwe9tkden-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 25 Oct 2021 08:25:45 +0000 Received: from G4W9119.americas.hpqcorp.net (g4w9119.houston.hp.com [16.210.20.214]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g9t5009.houston.hpe.com (Postfix) with ESMTPS id C7EDB66; Mon, 25 Oct 2021 08:25:44 +0000 (UTC) Received: from G1W8108.americas.hpqcorp.net (2002:10c1:483c::10c1:483c) by G4W9119.americas.hpqcorp.net (2002:10d2:14d6::10d2:14d6) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Mon, 25 Oct 2021 08:25:44 +0000 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (15.241.52.10) by G1W8108.americas.hpqcorp.net (16.193.72.60) with Microsoft SMTP Server (TLS) id 15.0.1497.23 via Frontend Transport; Mon, 25 Oct 2021 08:25:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I55/6iXpuNGepLO6PBR/9vJDS/DNZZwQxzESvuB53ID7BSGLjaHCyzpP8Vyslhgp1X5xweNWdHeUMKqc3jfa+OX/SsqFShVGhvfpREZkgoMX7Rm7Yl+29dx5uVlA321FX+le+RI2C6qN8/tlusW/SJwqHg3m3J7mKFotkQIVbswiT0lnph0OVVP8/QxOk0tex3HecmxNDne0VDuwSa1Y8gzysqnmbV3lKELnqb5kWDZTc3IpGY8FkIR665jcX6OVfj3og94RMeKEO/v9UAPNEOlzy1mimbVrkYnTGEhSAVrUpUJUZe0PRMHPaXsB9gciAWCmclcwS7EiWurM1UJJTw== 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=AulN0G6wh/l7XMi9sFEnQSq+QkaI6NREmWd13KI4Rto=; b=RI7AaVTOfbH1nMd3Yb/dyBi4icxwSOsfzfLH/1zlqcD0WjwV4XXOG/zDPVT2BBZ9YDvloCTPvZ9kH/UYb1WWgC5IVb3rZ/Z/LbtNa06a5OnltjoSoSTp1DqLRRlNiaALu15/zJDMt4tUQiGANfTcYkD8kaAc62PTkYoKACMAagMxIzNnbLjxCpwKWspNT3jGrDF4/4LGCxa16KEapDrA1D8G7QvUW2846VzDqf7N41IXNcgAogTPthWOJYDqgZmr+RxWyXXBdjx2O+MwQ1bUdNwmVkFbqGJ+hBg/JaroChktKbulebwN7MJmaWXwl1iYhtRJLISkIdflfsRBPkls7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7508::16) by CS1PR8401MB0342.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:750a::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18; Mon, 25 Oct 2021 08:25:42 +0000 Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::b88a:7fe7:6294:683f]) by CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::b88a:7fe7:6294:683f%9]) with mapi id 15.20.4628.020; Mon, 25 Oct 2021 08:25:42 +0000 From: "Abner Chang" To: "Wang, Nickle (HPS SW)" , "devel@edk2.groups.io" CC: Liming Gao Subject: Re: [PATCH 1/2] staging/RedfishClientPkg: Add EDKII ETag driver Thread-Topic: [PATCH 1/2] staging/RedfishClientPkg: Add EDKII ETag driver Thread-Index: AQHXyXPF3brGgVHgKEu8Ku9us1EIhKvjX3GBgAABNoI= Date: Mon, 25 Oct 2021 08:25:42 +0000 Message-ID: References: <20211025074141.322192-1-abner.chang@hpe.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: suggested_attachment_session_id: ba76f858-68ba-5d91-ab9c-0640848fe276 authentication-results: hpe.com; dkim=none (message not signed) header.d=none;hpe.com; dmarc=none action=none header.from=hpe.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a1582753-c705-495e-a4fd-08d9979108d0 x-ms-traffictypediagnostic: CS1PR8401MB0342: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:51; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BFTRvVNCnx5VfSL24G0CnHnUcduu4dyAOvg3Wg9WCth3L4w4YiCmSvng6hLHjeMhklrZJ4QGXaUHN5RGBH6XKxbM4ULh6WUDfEqLc2giIcl+tomuvSYWYSOe5w6VluQklE7EZ4epqhiprMlhfxbrEHL9vZoUvbR8udwajeXs6jjbIFPqmqHXXdejImuLlX5OtjhKZ3xJvi/THoGIEenx337S24rMXhWQsPouNMvK37qowkL2ePqX5sc1bSqukRByRmKIlIy5ueadUw/ggPZdZSVW4WMD3ZLdIo2uDrLRIoanPtmuQkKNLBZRtfKu75avt1Z+s8x6IKa5nH7CZ3llRALQcwdOJ9Hebs3ZRINTo3nias6a0R2zNbkOOg+smiSZBPCQAZ0eclQkJDa33Hjhtge5HqklNVTxKkueQi2y76KlAqlqhg4IcW5GokcouMyOfw6zD1u0k2akYwCoJSnUkMB+0+s02H/jSk+cBKY0VjwJHv3UX3vpaFnBujDLMXzS5b5dxB1Gn6PakwFWDuZxuHapoOZnpBX31TBBpn2QRa1lyHLXlkIWlmB6ZtAlGkDV+fhWRIO4YSUqacS+KpcshgFNzpXRl5uF32Qkg4cbCHOXLc/IieT7ekzgRV+BRcXKUFc79GS/iurCnuA4OT7VnY9diF/P9bbA0CZuNyDiVHuv51KWwy8bm/7yu5hnrFOgfcUrvEnFK5gl/jnuk7hBpQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(366004)(52536014)(2906002)(86362001)(33656002)(82960400001)(19627405001)(71200400001)(7696005)(38070700005)(8676002)(4326008)(66446008)(26005)(30864003)(508600001)(38100700002)(55016002)(5660300002)(9686003)(53546011)(6506007)(66556008)(186003)(66476007)(64756008)(122000001)(83380400001)(91956017)(66946007)(76116006)(55236004)(110136005)(316002)(8936002)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cDBQVVFORjdMSUMvZlZ4dUFCbkU0Kzc1dU9VYm85YzE4WFRua0VXZWJtVmtx?= =?utf-8?B?RzF3REJ2Z2RiVWxjbVZDNXY0RVVMN0dOdUlNdjRrQ0NUYmg3dEhzVVA4RS9Q?= =?utf-8?B?d1ZuYTlwQ21jQkpyd0FyeEdiTnJCT0lNVFpoSkpBZmhCVFVVNEhwT1RySmNa?= =?utf-8?B?cytkNUdIY0w3RmpUNjdsZmt2U29OeEgxRms4bG1Ed25BaWQwcEd6bXRQQXVo?= =?utf-8?B?aGQyZjYrRTlnSVNBVmYwbkw3cDFNNFZDcTNpbm16azRMYk5vVVFZTy96TmNL?= =?utf-8?B?MktvVEJrWDRzalhTVDFpc1ZLdHNLaGJYdlFTSHpRVjY5amdZc3pQWk1rSnJQ?= =?utf-8?B?TXB4VDQ0cGtLNkx6b0hNN2RURmJVczdhNDVhL1NXM0R5ck9ERXR4alNZdEZR?= =?utf-8?B?cUVodGxTeTJJNWgxTCt5cWVlaXFHQnhxTW9raFhldHZzQmlzMEtpQXZZcnJn?= =?utf-8?B?enZrRVNJRUpYTWJhYitIWktMaTZLOGJ1RVBwTkxHQXViSEpBcUZoVWRZTlB6?= =?utf-8?B?QjRFMVZUSzVKT0xRQzM5S295Z1ZySXZxWk1vQlFjUnZRbHJvK2RrUFM0Z24y?= =?utf-8?B?UGN3TENpcG5oajVwaEFhdXpEWWlNWThpV0FJa2xDUnZJemNwcE5pQkxveEtO?= =?utf-8?B?MmdEZkxHZ1RPcmwyY09hZitac013VlV3UE1JRmVyQmRjMm41UkxRTXI3SGV1?= =?utf-8?B?VWJHSm5heEZlRVRLZGdEdjNFeTlJZ2ovQVd6OFU3NzJaWmk1cHk5aVEvWEd3?= =?utf-8?B?MkN6VHNFaGg1RUY1U0N5Z2cxTnc4QkI2MWw5RWllT1pFaWlFeXg1RXJ5Rldx?= =?utf-8?B?ZEwxcFlpTnh1L1BmbklVamZ2WEorME4yN0hFSEZQVGZUeHExZnZjNkR2enM1?= =?utf-8?B?eVBDMkcrTEhsUjZhUGduandLTnFuZXk5VzgwM2NHOXJwODB4djRRZ2tDeXlH?= =?utf-8?B?NXdBZjFES0tKd3gwbVRRQ3VSRzRjK1pYRVF0MDFLUHJla3RZM1ZJTjVnSjBx?= =?utf-8?B?SnVSVGY4STdNRjhTS1UzbUNNWGtTd1FIMi9iNXA3U0tXQ3R1ZjYzWkJwU0Rx?= =?utf-8?B?L2FUd1gxK2g5TTFBa0E1RUNvOGFVMllwWlVEdUQzdEhWRlIwVmlKcUplZVFq?= =?utf-8?B?Y0RlY1RQbUpaSU5yaE1wNDJGS3JOcDlCMFNlSFBhdWYzUE10S2piMVFGRm4y?= =?utf-8?B?WHdoM29xNUlmaVBPeUx4bjBVeXo5cGVjbW5zL3NCcWFPSThNeVg1SGtsSXlL?= =?utf-8?B?UjFJR0JKODEwSzVFMmlWeXY3UUQxUnBBYUhHT08rZ1NIWHhBSzZGaXFFVWpM?= =?utf-8?B?KzMrNWdKSWtSeE9SeXJRNHdZbUFNdGMrVzN3b25hM2NjVU1Fb0prcVZ3MndZ?= =?utf-8?B?SFFLS0pWaVF3RXkxSm1vajZZdCsvN1EvTU1aTVVrYnJaRlZyTFdKQitBNWxz?= =?utf-8?B?Rm5sazFBRURMNnFSWEFuSTZNbkcyTW1ucTZFNnhjMHJXd2ozTXBKOHlDSUg1?= =?utf-8?B?QmplZi9LbFlsZE85Q2xndGpFV3hJbHo2aGUyaEFBdzNDMmhZaVRydVFWYzNV?= =?utf-8?B?enc4c3Y3dzhyM1RZTklteElWSGdyZVpYYi85U3hkVHd5eGdJcUhoMS9iSjBN?= =?utf-8?B?dURGVnY0UjM0amNybzhyaWI2OG96Z3JUa2hYQTVjYWhTbmY5RWhYS2JQalkv?= =?utf-8?B?cHhhU0d1dlc3NkxpK1hrMUlHVFViNjlkR2RJN3BoZ3N3ZHgzaE1CcmYzZnhZ?= =?utf-8?B?SnkycUdtNmlSU0s4alZhOTN6aDJZTkUrc0gzd0x3K3k5UkEvai94N0dXV3dx?= =?utf-8?B?elk1QThKdzFSY1NlaEVIVFlxcC9QQXgzMmFWemRxVHZvb2RlY0ZQdCs0Z3pJ?= =?utf-8?B?K0JDSEord25UektmQ0tGeU1yYzdqbFAzbllKOVkwRTIvTE94ODdvUWUrZmNr?= =?utf-8?B?ZlZQcHBocDJOVHBwTyt1NXRhYkdQZUpVaENVWHZHcXBaa1NOaHd5TnlrVzJL?= =?utf-8?B?UGVWbFliNjFoaHJDaE1NdERNVGFGQkpqaVhmVnNJQndSMnJueG84dUd3T1d1?= =?utf-8?B?Z1VkQWsyV1JJQ1oxZWRYOWF1L2ZtdVFBUW5odWN2cEd4aGt3YzNxRzdjbFJF?= =?utf-8?B?dk9yS3BHOCs5Ynd0OElZMzR1cDJXRzRaS2VjU1dOYjJhYnVQL0lhVjQwMEg0?= =?utf-8?Q?Ph1EQyikHer96Sqf1I2S4+Q=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: a1582753-c705-495e-a4fd-08d9979108d0 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Oct 2021 08:25:42.2659 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2+nqu0SLfpbnnuH2MLgzS/ib9DOOF0W346rui1uRSqpPxAKpYoYDoFcnX9R/61vMAmKe6UEoz5ajxzZDGTou+w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB0342 X-OriginatorOrg: hpe.com X-Proofpoint-GUID: L5bZlQtltQiqSd1h5h3A4aJIG0MMtOjl X-Proofpoint-ORIG-GUID: L5bZlQtltQiqSd1h5h3A4aJIG0MMtOjl X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475 definitions=2021-10-25_02,2021-10-25_01,2020-04-07_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 malwarescore=0 adultscore=0 mlxscore=0 clxscore=1015 spamscore=0 lowpriorityscore=0 impostorscore=0 priorityscore=1501 phishscore=0 suspectscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2109230001 definitions=main-2110250049 Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_CS1PR8401MB1144251AC1C3C6D95113A2B3FF839CS1PR8401MB1144_" --_000_CS1PR8401MB1144251AC1C3C6D95113A2B3FF839CS1PR8401MB1144_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IEFibmVyIENoYW5nIDxhYm5lci5jaGFuZ0BocGUuY29tPg0KDQoNCg0KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCkZyb206IFdhbmcsIE5pY2tsZSAoSFBTIFNX KSA8bmlja2xlLndhbmdAaHBlLmNvbT4NClNlbnQ6IE1vbmRheSwgT2N0b2JlciAyNSwgMjAyMSA0 OjIwIFBNDQpUbzogQ2hhbmcsIEFibmVyIChIUFMgU1cvRlcgVGVjaG5vbG9naXN0KSA8YWJuZXIu Y2hhbmdAaHBlLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5p bz4NCkNjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQpTdWJqZWN0OiBS ZTogW1BBVENIIDEvMl0gc3RhZ2luZy9SZWRmaXNoQ2xpZW50UGtnOiBBZGQgRURLSUkgRVRhZyBk cml2ZXINCg0KUmV2aWV3ZWQtYnk6IE5pY2tsZSBXYW5nIDxuaWNrbGUud2FuZ0BocGUuY29tPg0K DQpUaGFua3MsDQpOaWNrbGUNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQpGcm9t OiBDaGFuZywgQWJuZXIgKEhQUyBTVy9GVyBUZWNobm9sb2dpc3QpIDxhYm5lci5jaGFuZ0BocGUu Y29tPg0KU2VudDogTW9uZGF5LCBPY3RvYmVyIDI1LCAyMDIxIDE1OjQxDQpUbzogZGV2ZWxAZWRr Mi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPg0KQ2M6IFdhbmcsIE5pY2tsZSAoSFBT IFNXKSA8bmlja2xlLndhbmdAaHBlLmNvbT47IExpbWluZyBHYW8gPGdhb2xpbWluZ0BieW9zb2Z0 LmNvbS5jbj4NClN1YmplY3Q6IFtQQVRDSCAxLzJdIHN0YWdpbmcvUmVkZmlzaENsaWVudFBrZzog QWRkIEVES0lJIEVUYWcgZHJpdmVyDQoNCkltcGxlbWVudCBFREtJSSBFVGFnIHByb3RvY29sIHRv IG1hbmlwdWxhdGUgRVRhZyBvZg0KSFRUUCBjb250ZW50Lg0KDQpTaWduZWQtb2ZmLWJ5OiBOaWNr bGUgV2FuZyA8bmlja2xlLndhbmdAaHBlLmNvbT4NCkNjOiBBYm5lciBDaGFuZyA8YWJuZXIuY2hh bmdAaHBlLmNvbT4NCkNjOiBMaW1pbmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQot LS0NCiAuLi4vUmVkZmlzaEVUYWdEeGUvUmVkZmlzaEVUYWdEeGUuaW5mICAgICAgICAgfCAgNDUg Kw0KIC4uLi9Qcm90b2NvbC9FZGtJSVJlZGZpc2hFVGFnUHJvdG9jb2wuaCAgICAgICB8ICA3NiAr Kw0KIC4uLi9SZWRmaXNoRVRhZ0R4ZS9SZWRmaXNoRVRhZ0R4ZS5oICAgICAgICAgICB8ICA3MCAr Kw0KIC4uLi9SZWRmaXNoRVRhZ0R4ZS9SZWRmaXNoRVRhZ0R4ZS5jICAgICAgICAgICB8IDc3NCAr KysrKysrKysrKysrKysrKysNCiA0IGZpbGVzIGNoYW5nZWQsIDk2NSBpbnNlcnRpb25zKCspDQog Y3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hDbGllbnRQa2cvUmVkZmlzaEVUYWdEeGUvUmVkZmlz aEVUYWdEeGUuaW5mDQogY3JlYXRlIG1vZGUgMTAwNjQ0IFJlZGZpc2hDbGllbnRQa2cvSW5jbHVk ZS9Qcm90b2NvbC9FZGtJSVJlZGZpc2hFVGFnUHJvdG9jb2wuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0 NCBSZWRmaXNoQ2xpZW50UGtnL1JlZGZpc2hFVGFnRHhlL1JlZGZpc2hFVGFnRHhlLmgNCiBjcmVh dGUgbW9kZSAxMDA2NDQgUmVkZmlzaENsaWVudFBrZy9SZWRmaXNoRVRhZ0R4ZS9SZWRmaXNoRVRh Z0R4ZS5jDQoNCmRpZmYgLS1naXQgYS9SZWRmaXNoQ2xpZW50UGtnL1JlZGZpc2hFVGFnRHhlL1Jl ZGZpc2hFVGFnRHhlLmluZiBiL1JlZGZpc2hDbGllbnRQa2cvUmVkZmlzaEVUYWdEeGUvUmVkZmlz aEVUYWdEeGUuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjQz MTViMWVhYTVmDQotLS0gL2Rldi9udWxsDQorKysgYi9SZWRmaXNoQ2xpZW50UGtnL1JlZGZpc2hF VGFnRHhlL1JlZGZpc2hFVGFnRHhlLmluZg0KQEAgLTAsMCArMSw0NSBAQA0KK++7vyMjIEBmaWxl DQorIw0KKyMgIChDKSBDb3B5cmlnaHQgMjAyMSBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBE ZXZlbG9wbWVudCBMUDxCUj4NCisjDQorIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCisjDQorIyMNCisNCitbRGVmaW5lc10NCisgIElORl9WRVJTSU9OICAg ICAgICAgICAgICAgPSAweDAwMDEwMDBiDQorICBCQVNFX05BTUUgICAgICAgICAgICAgICAgID0g UmVkZmlzaEVUYWdEeGUNCisgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgPSBGN0JCMEJCMi05 Nzk2LTQ4NUYtOUYwMC1DMEVCNDdFOUY5MkINCisgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAg PSBEWEVfRFJJVkVSDQorICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgID0gMS4wDQorICBFTlRS WV9QT0lOVCAgICAgICAgICAgICAgID0gUmVkZmlzaEVUYWdEcml2ZXJFbnRyeVBvaW50DQorICBV TkxPQURfSU1BR0UgICAgICAgICAgICAgID0gUmVkZmlzaEVUYWdEcml2ZXJVbmxvYWQNCisNCitb UGFja2FnZXNdDQorICBNZGVQa2cvTWRlUGtnLmRlYw0KKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVs ZVBrZy5kZWMNCisgIFJlZGZpc2hQa2cvUmVkZmlzaFBrZy5kZWMNCisgIFJlZGZpc2hDbGllbnRQ a2cvUmVkZmlzaENsaWVudFBrZy5kZWMNCisNCitbU291cmNlc10NCisgIFJlZGZpc2hFVGFnRHhl LmgNCisgIFJlZGZpc2hFVGFnRHhlLmMNCisNCitbTGlicmFyeUNsYXNzZXNdDQorICBCYXNlTGli DQorICBCYXNlTWVtb3J5TGliDQorICBEZWJ1Z0xpYg0KKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0K KyAgVWVmaUxpYg0KKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQorICBVZWZpUnVudGltZVNl cnZpY2VzVGFibGVMaWINCisgIFVlZmlEcml2ZXJFbnRyeVBvaW50DQorDQorW1Byb3RvY29sc10N CisgIGdFZGtJSVJlZGZpc2hFVGFnUHJvdG9jb2xHdWlkICAgICAgICAgICAjIyBQUk9EVUNFRCAj Iw0KKw0KK1tHdWlkc10NCisgIGdFZmlFdmVudEV4aXRCb290U2VydmljZXNHdWlkICAgICAgICAg ICAjIyBDT05TVU1FUyAjIyBFdmVudA0KKw0KK1tEZXBleF0NCisgIFRSVUUNCmRpZmYgLS1naXQg YS9SZWRmaXNoQ2xpZW50UGtnL0luY2x1ZGUvUHJvdG9jb2wvRWRrSUlSZWRmaXNoRVRhZ1Byb3Rv Y29sLmggYi9SZWRmaXNoQ2xpZW50UGtnL0luY2x1ZGUvUHJvdG9jb2wvRWRrSUlSZWRmaXNoRVRh Z1Byb3RvY29sLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uM2Ni Y2VkNDRlYjcNCi0tLSAvZGV2L251bGwNCisrKyBiL1JlZGZpc2hDbGllbnRQa2cvSW5jbHVkZS9Q cm90b2NvbC9FZGtJSVJlZGZpc2hFVGFnUHJvdG9jb2wuaA0KQEAgLTAsMCArMSw3NiBAQA0KKy8q KiBAZmlsZQ0KKyAgVGhpcyBmaWxlIGRlZmluZXMgdGhlIEVES0lJX1JFREZJU0hfRkVBVFVSRV9Q Uk9UT0NPTCBpbnRlcmZhY2UuDQorDQorICAoQykgQ29weXJpZ2h0IDIwMjEgSGV3bGV0dCBQYWNr YXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQorDQorICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKw0KKyoqLw0KKw0KKyNpZm5kZWYgRURLSUlf UkVERklTSF9FVEFHX1BST1RPQ09MX0hfDQorI2RlZmluZSBFREtJSV9SRURGSVNIX0VUQUdfUFJP VE9DT0xfSF8NCisNCit0eXBlZGVmIHN0cnVjdCBfRURLSUlfUkVERklTSF9FVEFHX1BST1RPQ09M IEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTDsNCisNCisvKioNCisgIEdldCBFVGFnIHN0cmlu ZyBieSBnaXZlbiBVUkkNCisNCisgIEBwYXJhbVtpbl0gICBUaGlzICAgICAgICAgICAgICAgICAg ICBQb2ludGVyIHRvIEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTCBpbnN0YW5jZS4NCisgIEBw YXJhbVtpbl0gICBVcmkgICAgICAgICAgICAgICAgICAgICBUYXJnZXQgVVJJIHRvIHNlYXJjaC4N CisgIEBwYXJhbVtvdXRdICBFVGFnICAgICAgICAgICAgICAgICAgICBUaGUgRVRhZyBzdHJpbmcg dG8gY29ycmVzcG9uZGluZyBVUkkuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICAgICAgICAgVGhlIEVUYWcgaXMgZm91bmQgc3VjY2Vzc2Z1bGx5Lg0KKyAgQHJldHZhbCBFRklf SU5WQUxJRF9QQVJBTUVURVIgICAgICAgIEludmFsaWQgcGFyYW1ldGVyIGlzIGdpdmVuLg0KKw0K KyoqLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVGSUFQSSAqRURLSUlfUkVERklTSF9FVEFH X1BST1RPQ09MX0dFVCkgKA0KKyAgSU4gIEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTCAqVGhp cywNCisgIElOICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgKlVyaSwNCisgIE9VVCBDSEFS OCAgICAgICAgICAgICAgICAgICAgICAgKipFVGFnDQorICApOw0KKw0KKy8qKg0KKyAgS2VlcCBF VGFnIHN0cmluZyB3aGljaCBtYXBzIHRvIGdpdmVuIFVyaS4NCisNCisgIEBwYXJhbVtpbl0gICBU aGlzICAgICAgICAgICAgICAgIFBvaW50ZXIgdG8gRURLSUlfUkVERklTSF9FVEFHX1BST1RPQ09M IGluc3RhbmNlLg0KKyAgQHBhcmFtW2luXSAgIFVyaSAgICAgICAgICAgICAgICAgVGhlIHRhcmdl dCBVcmkgd2hpY2ggcmVsYXRlZCB0byBFVGFnLg0KKyAgQHBhcmFtW2luXSAgIEVUYWcgICAgICAg ICAgICAgICAgVGhlIEVUYWcgdG8gYWRkLiBJZiBFVGFnIGlzIE5VTEwsIHRoZSByZWNvcmQgb2Yg Y29ycmVzcG9vbmRpbmcgVVJJIHdpbGwgYmUgcmVtb3ZlZC4NCisNCisgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgICAgIFRoaXMgaGFuZGxlciBoYXMgYmVlbiBzdG9wZWQgc3VjY2Vzc2Z1 bGx5Lg0KKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgICAgU29tZSBlcnJvciBoYXBw ZW5lZC4NCisNCisqKi8NCit0eXBlZGVmDQorRUZJX1NUQVRVUw0KKyhFRklBUEkgKkVES0lJX1JF REZJU0hfRVRBR19QUk9UT0NPTF9TRVQpICgNCisgIElOICBFREtJSV9SRURGSVNIX0VUQUdfUFJP VE9DT0wgICAqVGhpcywNCisgIElOICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgICAqVXJp LA0KKyAgSU4gIENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAgICpFVGFnDQorICApOw0KKw0K Ky8qKg0KKyAgUmVmcmVzaCB0aGUgRVRhZyBkYXRhYmFzZSBhbmQgc2F2ZSBkYXRhYmFzZSB0byB2 YXJpYWJsZS4NCisNCisgIEBwYXJhbVtpbl0gICBUaGlzICAgICAgICAgICAgICAgIFBvaW50ZXIg dG8gRURLSUlfUkVERklTSF9FVEFHX1BST1RPQ09MIGluc3RhbmNlLg0KKw0KKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgICAgVGhpcyBoYW5kbGVyIGhhcyBiZWVuIHN0b3BlZCBzdWNj ZXNzZnVsbHkuDQorICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICAgICBTb21lIGVycm9y IGhhcHBlbmVkLg0KKw0KKyoqLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVGSUFQSSAqRURL SUlfUkVERklTSF9FVEFHX1BST1RPQ09MX0ZMVVNIKSAoDQorICBJTiAgRURLSUlfUkVERklTSF9F VEFHX1BST1RPQ09MICAgICpUaGlzDQorICApOw0KKw0KK3N0cnVjdCBfRURLSUlfUkVERklTSF9F VEFHX1BST1RPQ09MIHsNCisgIEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTF9HRVQgICBHZXQ7 DQorICBFREtJSV9SRURGSVNIX0VUQUdfUFJPVE9DT0xfU0VUICAgU2V0Ow0KKyAgRURLSUlfUkVE RklTSF9FVEFHX1BST1RPQ09MX0ZMVVNIIEZsdXNoOw0KK307DQorDQorZXh0ZXJuIEVGSV9HVUlE IGdFZGtJSVJlZGZpc2hFVGFnUHJvdG9jb2xHdWlkOw0KKw0KKyNlbmRpZg0KZGlmZiAtLWdpdCBh L1JlZGZpc2hDbGllbnRQa2cvUmVkZmlzaEVUYWdEeGUvUmVkZmlzaEVUYWdEeGUuaCBiL1JlZGZp c2hDbGllbnRQa2cvUmVkZmlzaEVUYWdEeGUvUmVkZmlzaEVUYWdEeGUuaA0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi5jNDQ2NTc0MzEzMw0KLS0tIC9kZXYvbnVsbA0K KysrIGIvUmVkZmlzaENsaWVudFBrZy9SZWRmaXNoRVRhZ0R4ZS9SZWRmaXNoRVRhZ0R4ZS5oDQpA QCAtMCwwICsxLDcwIEBADQor77u/LyoqIEBmaWxlDQorICBDb21tb24gaGVhZGVyIGZpbGUgZm9y IFJlZGZpc2hFVGFnRHhlIGRyaXZlci4NCisNCisgIChDKSBDb3B5cmlnaHQgMjAyMSBIZXdsZXR0 IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCisNCisgIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorDQorKiovDQorDQorI2lmbmRlZiBS RURGSVNIX0VUQUdfRFhFX0hfDQorI2RlZmluZSBSRURGSVNIX0VUQUdfRFhFX0hfDQorDQorI2lu Y2x1ZGUgPFVlZmkuaD4NCisNCisvLw0KKy8vIExpYnJhcmllcw0KKy8vDQorI2luY2x1ZGUgPExp YnJhcnkvQmFzZUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4NCisj aW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KKw0KKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9y eUFsbG9jYXRpb25MaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFi bGVMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9VZWZpRHJpdmVyRW50cnlQb2ludC5oPg0KKyNp bmNsdWRlIDxMaWJyYXJ5L1VlZmlMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGlt ZVNlcnZpY2VzVGFibGVMaWIuaD4NCisNCisjaW5jbHVkZSA8UHJvdG9jb2wvRWRrSUlSZWRmaXNo RVRhZ1Byb3RvY29sLmg+DQorDQorI2luY2x1ZGUgPEd1aWQvVmFyaWFibGVGb3JtYXQuaD4NCisN CisjZGVmaW5lIEVUQUdfVkFSSUFCTEVfTkFNRSAgICBMIlJlZGZpc2hFVGFnIg0KKyNkZWZpbmUg SVNfRU1QVFlfU1RSSU5HKGEpICgoYSkgPT0gTlVMTCB8fCAoYSlbMF0gPT0gJ1wwJykNCisjZGVm aW5lIEVUQUdfREVCVUdfRU5BQkxFRCAgICAweDAwDQorDQorLy8NCisvLyBEZWZpbml0aW9uIG9m IFJFREZJU0hfRVRBR19SRUNPUkQNCisvLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIExJU1RfRU5U UlkgIExpc3Q7DQorICBDSEFSOCAgICAgICAqVXJpOw0KKyAgQ0hBUjggICAgICAgKkVUYWc7DQor ICBVSU5UTiAgICAgICBTaXplOw0KK30gUkVERklTSF9FVEFHX1JFQ09SRDsNCisNCisjZGVmaW5l IFJFREZJU0hfRVRBR19SRUNPUkRfRlJPTV9MSVNUKGEpICBCQVNFX0NSIChhLCBSRURGSVNIX0VU QUdfUkVDT1JELCBMaXN0KQ0KKw0KKy8vDQorLy8gRGVmaW5pdGlvbiBvZiBSRURGSVNIX0VUQUdf TElTVA0KKy8vDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgTElTVF9FTlRSWSAgICBMaXN0aGVhZGVy Ow0KKyAgVUlOVE4gICAgICAgICBUb3RhbFNpemU7DQorICBVSU5UTiAgICAgICAgIENvdW50Ow0K K30gUkVERklTSF9FVEFHX0xJU1Q7DQorDQorLy8NCisvLyBEZWZpbml0aW9uIG9mIFJFREZJU0hf RVRBR19QUklWQVRFX0RBVEENCisvLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIEVGSV9IQU5ETEUg ICAgICAgICAgICAgICAgICBJbWFnZUhhbmRsZTsNCisgIFJFREZJU0hfRVRBR19MSVNUICAgICAg ICAgICBFVGFnTGlzdDsNCisgIEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTCBQcm90b2NvbDsN CisgIEVGSV9TVFJJTkcgICAgICAgICAgICAgICAgICBWYXJpYWJsZU5hbWU7DQorICBFRklfRVZF TlQgICAgICAgICAgICAgICAgICAgRXZlbnQ7DQorfSBSRURGSVNIX0VUQUdfUFJJVkFURV9EQVRB Ow0KKw0KKyNkZWZpbmUgUkVERklTSF9FVEFHX1BSSVZBVEVfRlJPTV9USElTKGEpICBCQVNFX0NS IChhLCBSRURGSVNIX0VUQUdfUFJJVkFURV9EQVRBLCBQcm90b2NvbCkNCisNCisjZW5kaWYNCmRp ZmYgLS1naXQgYS9SZWRmaXNoQ2xpZW50UGtnL1JlZGZpc2hFVGFnRHhlL1JlZGZpc2hFVGFnRHhl LmMgYi9SZWRmaXNoQ2xpZW50UGtnL1JlZGZpc2hFVGFnRHhlL1JlZGZpc2hFVGFnRHhlLmMNCm5l dyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uMzQ5MTc1MzQwZDQNCi0tLSAv ZGV2L251bGwNCisrKyBiL1JlZGZpc2hDbGllbnRQa2cvUmVkZmlzaEVUYWdEeGUvUmVkZmlzaEVU YWdEeGUuYw0KQEAgLTAsMCArMSw3NzQgQEANCivvu78vKiogQGZpbGUNCisNCisgIChDKSBDb3B5 cmlnaHQgMjAyMSBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4N CisNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorDQor KiovDQorDQorI2luY2x1ZGUgIlJlZGZpc2hFVGFnRHhlLmgiDQorDQorUkVERklTSF9FVEFHX1BS SVZBVEVfREFUQSAgKm1SZWRmaXNoRVRhZ1ByaXZhdGUgPSBOVUxMOw0KKw0KKy8qKg0KKyAgUmVs ZWFzZSBSRURGSVNIX0VUQUdfUkVDT1JEIHJlc291cmNlDQorDQorICBAcGFyYW1baW5dICAgIFJl Y29yZCAgICBQb2ludGVyIHRvIFJFREZJU0hfRVRBR19SRUNPUkQgaW5zdGFuY2UNCisNCisgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgUkVERklTSF9FVEFHX1JFQ09SRCBpcyByZWxl YXNlZCBzdWNjZXNzZnVsbHkuDQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgIFJl Y29yZCBpcyBOVUxMDQorDQorKiovDQorRUZJX1NUQVRVUw0KK1JlbGVhc2VFVGFnUmVjb3JkICgN CisgIElOIFJFREZJU0hfRVRBR19SRUNPUkQgKlJlY29yZA0KKyAgKQ0KK3sNCisgIGlmIChSZWNv cmQgPT0gTlVMTCkgew0KKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0K Kw0KKyAgaWYgKFJlY29yZC0+VXJpICE9IE5VTEwpIHsNCisgICAgRnJlZVBvb2wgKFJlY29yZC0+ VXJpKTsNCisgIH0NCisNCisgIGlmIChSZWNvcmQtPkVUYWcgIT0gTlVMTCkgew0KKyAgICBGcmVl UG9vbCAoUmVjb3JkLT5FVGFnKTsNCisgIH0NCisNCisgIEZyZWVQb29sIChSZWNvcmQpOw0KKw0K KyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KK30NCisNCisvKioNCisgIENyZWF0ZSBuZXcgRXRhZyBy ZXNvdXJjZS4NCisNCisgIEBwYXJhbVtpbl0gICAgVXJpICAgVGhlIFVSSSBzdHJpbmcgbWF0Y2hp bmcgdG8gdGhpcyBFVEFHLg0KKyAgQHBhcmFtW2luXSAgICBFVGFnICBFVEFHIHN0cmluZy4NCisN CisgIEByZXR2YWwgUkVERklTSF9FVEFHX1JFQ09SRCAqICAgUG9pbnRlciB0byBuZXdseSBjcmVh dGVkIEVUQUcuDQorICBAcmV0dmFsIE5VTEwgICAgICAgICAgICAgICAgICAgIE5vIG1lbW9yeSBh dmFpbGFibGUuDQorDQorKiovDQorUkVERklTSF9FVEFHX1JFQ09SRCAqDQorTmV3RVRhZ1JlY29y ZCAoDQorICBJTiAgQ0hBUjggICAqVXJpLA0KKyAgSU4gIENIQVI4ICAgKkVUYWcNCisgICkNCit7 DQorICBSRURGSVNIX0VUQUdfUkVDT1JEICpOZXdSZWNvcmQ7DQorICBVSU5UTiAgICAgICAgICAg ICAgIFNpemU7DQorDQorICBpZiAoSVNfRU1QVFlfU1RSSU5HIChVcmkpIHx8IElTX0VNUFRZX1NU UklORyAoRVRhZykpIHsNCisgICAgcmV0dXJuIE5VTEw7DQorICB9DQorDQorICBOZXdSZWNvcmQg PSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFJFREZJU0hfRVRBR19SRUNPUkQpKTsNCisgIGlm IChOZXdSZWNvcmQgPT0gTlVMTCkgew0KKyAgICByZXR1cm4gTlVMTDsNCisgIH0NCisNCisgIFNp emUgPSBBc2NpaVN0clNpemUgKFVyaSk7DQorICBOZXdSZWNvcmQtPlVyaSA9IEFsbG9jYXRlQ29w eVBvb2wgKFNpemUsIFVyaSk7DQorICBpZiAoTmV3UmVjb3JkLT5VcmkgPT0gTlVMTCkgew0KKyAg ICBnb3RvIE9OX0VSUk9SOw0KKyAgfQ0KKw0KKyAgTmV3UmVjb3JkLT5TaXplID0gU2l6ZTsNCisg IFNpemUgPSBBc2NpaVN0clNpemUgKEVUYWcpOw0KKyAgTmV3UmVjb3JkLT5FVGFnID0gQWxsb2Nh dGVDb3B5UG9vbCAoU2l6ZSwgRVRhZyk7DQorICBpZiAoTmV3UmVjb3JkLT5FVGFnID09IE5VTEwp IHsNCisgICAgZ290byBPTl9FUlJPUjsNCisgIH0NCisNCisgIE5ld1JlY29yZC0+U2l6ZSArPSBT aXplOw0KKyAgcmV0dXJuIE5ld1JlY29yZDsNCisNCitPTl9FUlJPUjoNCisNCisgIGlmIChOZXdS ZWNvcmQgIT0gTlVMTCkgew0KKyAgICBSZWxlYXNlRVRhZ1JlY29yZCAoTmV3UmVjb3JkKTsNCisg IH0NCisNCisgIHJldHVybiBOVUxMOw0KK30NCisNCisvKioNCisgIEFkZCBuZXcgRVRBRyBieSBn aXZlbiBVUkkgYW5kIEVUQUcgc3RyaW5nIHRvIHNwZWNpZnkgTGlzdC4NCisNCisgIEBwYXJhbVtp bl0gICAgTGlzdCAgVGFyZ2V0IEVUQUcgbGlzdCB0byBhZGQuDQorICBAcGFyYW1baW5dICAgIFVy aSAgIFRoZSBVUkkgc3RyaW5nIG1hdGNoaW5nIHRvIHRoaXMgRVRBRy4NCisgIEBwYXJhbVtpbl0g ICAgRVRhZyAgRVRBRyBzdHJpbmcuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgRVRBRyBy ZWNvdXJkIGlzIGFkZGVkLg0KKyAgQHJldHZhbCBPdGhlcnMgICAgICAgIEZhaWwgdG8gYWRkIEVU QUcuDQorDQorKiovDQorRUZJX1NUQVRVUw0KK0FkZEVUYWdSZWNvcmQgKA0KKyAgSU4gIFJFREZJ U0hfRVRBR19MSVNUICpMaXN0LA0KKyAgSU4gIENIQVI4ICAgICAgICAgICAgICpVcmksDQorICBJ TiAgQ0hBUjggICAgICAgICAgICAgKkVUYWcNCisgICkNCit7DQorICBSRURGSVNIX0VUQUdfUkVD T1JEICpOZXdSZWNvcmQ7DQorDQorICBpZiAoTGlzdCA9PSBOVUxMIHx8IElTX0VNUFRZX1NUUklO RyAoVXJpKSB8fCBJU19FTVBUWV9TVFJJTkcgKEVUYWcpKSB7DQorICAgIHJldHVybiBFRklfSU5W QUxJRF9QQVJBTUVURVI7DQorICB9DQorDQorICBOZXdSZWNvcmQgPSBOZXdFVGFnUmVjb3JkIChV cmksIEVUYWcpOw0KKyAgaWYgKE5ld0VUYWdSZWNvcmQgPT0gTlVMTCkgew0KKyAgICByZXR1cm4g RUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICB9DQorDQorICBJbnNlcnRUYWlsTGlzdCAoJkxpc3Qt Pkxpc3RoZWFkZXIsICZOZXdSZWNvcmQtPkxpc3QpOw0KKyAgKytMaXN0LT5Db3VudDsNCisgIExp c3QtPlRvdGFsU2l6ZSArPSBOZXdSZWNvcmQtPlNpemU7DQorDQorICByZXR1cm4gRUZJX1NVQ0NF U1M7DQorfQ0KKw0KKy8qKg0KKyAgRGVsZXRlIGFuIEVUQUcgYnkgZ2l2ZW4gRVRBRyBpbnN0YW5j ZS4NCisNCisgIEBwYXJhbVtpbl0gICAgTGlzdCAgICBUYXJnZXQgRVRBRyBsaXN0IHRvIGJlIHJl bW92ZWQuDQorICBAcGFyYW1baW5dICAgIFJlY29yZCAgUG9pbnRlciB0byB0aGUgaW5zdGFuY2Ug dG8gYmUgZGVsZXRlZC4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICBFVEFHIHJlY291cmQg aXMgcmVtb3ZlZC4NCisgIEByZXR2YWwgT3RoZXJzICAgICAgICBGYWlsIHRvIGFkZCBFVEFHLg0K Kw0KKyoqLw0KK0VGSV9TVEFUVVMNCitEZWxldGVFVGFnUmVjb3JkICgNCisgIElOICBSRURGSVNI X0VUQUdfTElTVCAgICpMaXN0LA0KKyAgSU4gIFJFREZJU0hfRVRBR19SRUNPUkQgKlJlY29yZA0K KyAgKQ0KK3sNCisgIGlmIChMaXN0ID09IE5VTEwgfHwgUmVjb3JkID09IE5VTEwpIHsNCisgICAg cmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCisgIH0NCisNCisgIFJlbW92ZUVudHJ5TGlz dCAoJlJlY29yZC0+TGlzdCk7DQorICAtLUxpc3QtPkNvdW50Ow0KKyAgTGlzdC0+VG90YWxTaXpl IC09IFJlY29yZC0+U2l6ZTsNCisNCisgIHJldHVybiBSZWxlYXNlRVRhZ1JlY29yZCAoUmVjb3Jk KTsNCit9DQorDQorLyoqDQorICBTZWFyY2ggb24gZ2l2ZW4gTGlzdEhlYWRlciBmb3IgZ2l2ZW4g VVJJIHN0cmluZy4NCisNCisgIEBwYXJhbVtpbl0gICAgTGlzdEhlYWRlciAgVGFyZ2V0IGxpc3Qg dG8gc2VhcmNoLg0KKyAgQHBhcmFtW2luXSAgICBVcmkgICAgICAgICBUYXJnZXQgVVJJIHRvIHNl YXJjaC4NCisNCisgIEByZXR2YWwgUkVERklTSF9FVEFHX1JFQ09SRCAgIFRhcmdldCBFVEFHIGlz IGZvdW5kLg0KKyAgQHJldHZhbCBOVUxMICAgICAgICAgICAgICAgICAgTm8gRVRBRyB3aXRoIGdp dmVuIFVSSSBpcyBmb3VuZC4NCisNCisqKi8NCitSRURGSVNIX0VUQUdfUkVDT1JEICoNCitGaW5k RVRhZ1JlY29yZCAoDQorICBJTiAgTElTVF9FTlRSWSAgKkxpc3RIZWFkZXIsDQorICBJTiAgQ0hB UjggICAgICAgKlVyaQ0KKyAgKQ0KK3sNCisgIExJU1RfRU5UUlkgICAgICAgICAgKkxpc3Q7DQor ICBSRURGSVNIX0VUQUdfUkVDT1JEICpSZWNvcmQ7DQorDQorICBpZiAoSXNMaXN0RW1wdHkgKExp c3RIZWFkZXIpKSB7DQorICAgIHJldHVybiBOVUxMOw0KKyAgfQ0KKw0KKyAgUmVjb3JkID0gTlVM TDsNCisgIExpc3QgPSBHZXRGaXJzdE5vZGUgKExpc3RIZWFkZXIpOw0KKyAgd2hpbGUgKCFJc051 bGwgKExpc3RIZWFkZXIsIExpc3QpKSB7DQorICAgIFJlY29yZCA9IFJFREZJU0hfRVRBR19SRUNP UkRfRlJPTV9MSVNUIChMaXN0KTsNCisNCisgICAgaWYgKEFzY2lpU3RyQ21wIChSZWNvcmQtPlVy aSwgVXJpKSA9PSAwKSB7DQorICAgICAgcmV0dXJuICBSZWNvcmQ7DQorICAgIH0NCisNCisgICAg TGlzdCA9IEdldE5leHROb2RlIChMaXN0SGVhZGVyLCBMaXN0KTsNCisgIH0NCisNCisgIHJldHVy biBOVUxMOw0KK30NCisNCisjaWYgRVRBR19ERUJVR19FTkFCTEVEDQorLyoqDQorICBEZWJ1ZyBv dXRwdXQgdGhlIEVUQUcgbGlzdC4NCisNCisgIEBwYXJhbVtpbl0gICAgRVRhZ0xpc3QgIFRhcmdl dCBsaXN0IHRvIGR1bXANCisgIEBwYXJhbVtpbl0gICAgTXNnICAgICAgIERlYnVnIG1lc3NhZ2Ug c3RyaW5nLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBEZWJ1ZyBkdW1w IGZpbmlzaGVkLg0KKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBFVGFnTGlzdCBp cyBOVUxMLg0KKw0KKyoqLw0KK0VGSV9TVEFUVVMNCitEdW1wRVRhZ0xpc3QgKA0KKyAgSU4gIFJF REZJU0hfRVRBR19MSVNUICAgKkVUYWdMaXN0LA0KKyAgSU4gIEVGSV9TVFJJTkcgICAgICAgICAg TXNnDQorICApDQorew0KKyAgTElTVF9FTlRSWSAgICAgICAgICAqTGlzdDsNCisgIFJFREZJU0hf RVRBR19SRUNPUkQgKlJlY29yZDsNCisNCisgIGlmIChFVGFnTGlzdCA9PSBOVUxMKSB7DQorICAg IHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQorICB9DQorDQorICBpZiAoIUlTX0VNUFRZ X1NUUklORyAoTXNnKSkgew0KKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJXNcbiIsIE1zZykp Ow0KKyAgfQ0KKw0KKyAgaWYgKElzTGlzdEVtcHR5ICgmRVRhZ0xpc3QtPkxpc3RoZWFkZXIpKSB7 DQorICAgIERFQlVHICgoREVCVUdfSU5GTywgIkVUYWcgbGlzdCBpcyBlbXB0eVxuIikpOw0KKyAg ICByZXR1cm4gRUZJX05PVF9GT1VORDsNCisgIH0NCisNCisgIERFQlVHICgoREVCVUdfSU5GTywg IkNvdW50OiAlZCBUb3RhbCBTaXplOiAlZFxuIiwgRVRhZ0xpc3QtPkNvdW50LCBFVGFnTGlzdC0+ VG90YWxTaXplKSk7DQorICBSZWNvcmQgPSBOVUxMOw0KKyAgTGlzdCA9IEdldEZpcnN0Tm9kZSAo JkVUYWdMaXN0LT5MaXN0aGVhZGVyKTsNCisgIHdoaWxlICghSXNOdWxsICgmRVRhZ0xpc3QtPkxp c3RoZWFkZXIsIExpc3QpKSB7DQorICAgIFJlY29yZCA9IFJFREZJU0hfRVRBR19SRUNPUkRfRlJP TV9MSVNUIChMaXN0KTsNCisNCisgICAgREVCVUcgKChERUJVR19JTkZPLCAiRVRhZzogJWEgVXJp OiAlYSBTaXplOiAlZFxuIiwgUmVjb3JkLT5FVGFnLCBSZWNvcmQtPlVyaSwgUmVjb3JkLT5TaXpl KSk7DQorDQorICAgIExpc3QgPSBHZXROZXh0Tm9kZSAoJkVUYWdMaXN0LT5MaXN0aGVhZGVyLCBM aXN0KTsNCisgIH0NCisNCisgIHJldHVybiBFRklfU1VDQ0VTUzsNCit9DQorDQorLyoqDQorICBE ZWJ1ZyBvdXRwdXQgcmF3IGRhdGEgYnVmZmVyLg0KKw0KKyAgQHBhcmFtW2luXSAgICBCdWZmZXIg ICAgICBEZWJ1ZyBvdXRwdXQgZGF0YSBidWZmZXIuDQorICBAcGFyYW1baW5dICAgIEJ1ZmZlclNp emUgIFRoZSBzaXplIG9mIEJ1ZmZlciBpbiBieXRlLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VT UyAgICAgICAgICAgICBEZWJ1ZyBkdW1wIGZpbmlzaGVkLg0KKyAgQHJldHZhbCBFRklfSU5WQUxJ RF9QQVJBTUVURVIgICBCdWZmZXIgaXMgTlVMTC4NCisNCisqKi8NCitFRklfU1RBVFVTDQorRHVt cFJhd0J1ZmZlciAoDQorICBJTiAgQ0hBUjggICAgKkJ1ZmZlciwNCisgIElOICBVSU5UTiAgICAg QnVmZmVyU2l6ZQ0KKyAgKQ0KK3sNCisgIFVJTlROICBJbmRleDsNCisNCisgIGlmIChCdWZmZXIg PT0gTlVMTCkgew0KKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0KKw0K KyAgSW5kZXggPSAwOw0KKw0KKyAgREVCVUcgKChERUJVR19FUlJPUiwgIkJ1ZmZlciBzaXplOiAl ZFxuIiwgQnVmZmVyU2l6ZSkpOw0KKyAgd2hpbGUgKEJ1ZmZlcltJbmRleF0gIT0gJ1wwJykgew0K KyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiKCVkKSAlYyAiLCAoSW5kZXggKyAxKSwgQnVmZmVy W0luZGV4XSkpOw0KKw0KKyAgICArK0luZGV4Ow0KKyAgfQ0KKyAgREVCVUcgKChERUJVR19FUlJP UiwgIlxuIikpOw0KKw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KK30NCisjZW5kaWYNCisNCisv KioNCisgIFJlbGVhc2UgYWxsIEVUYWcgZnJvbSBsaXN0Lg0KKw0KKyAgQHBhcmFtW2luXSAgICBF VGFnTGlzdCAgICBUaGUgbGlzdCB0byBiZSByZWxlYXNlZC4NCisNCisgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgICAgICAgQWxsIGV0YWcgaXMgcmVsZWFzZWQuDQorICBAcmV0dmFsIEVGSV9J TlZBTElEX1BBUkFNRVRFUiAgIEVUYWdMaXN0IGlzIE5VTEwuDQorDQorKiovDQorRUZJX1NUQVRV Uw0KK1JlbGVhc2VFVGFnTGlzdCAoDQorICBJTiAgUkVERklTSF9FVEFHX0xJU1QgICAqRVRhZ0xp c3QNCisgICkNCit7DQorICBMSVNUX0VOVFJZICAgICAgICAgICpMaXN0Ow0KKyAgTElTVF9FTlRS WSAgICAgICAgICAqTmV4dDsNCisgIFJFREZJU0hfRVRBR19SRUNPUkQgKlJlY29yZDsNCisNCisg IGlmIChFVGFnTGlzdCA9PSBOVUxMKSB7DQorICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQorICB9DQorDQorICBpZiAoSXNMaXN0RW1wdHkgKCZFVGFnTGlzdC0+TGlzdGhlYWRlcikp IHsNCisgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KKyAgfQ0KKw0KKyAgUmVjb3JkID0gTlVMTDsN CisgIE5leHQgPSBOVUxMOw0KKyAgTGlzdCA9IEdldEZpcnN0Tm9kZSAoJkVUYWdMaXN0LT5MaXN0 aGVhZGVyKTsNCisgIHdoaWxlICghSXNOdWxsICgmRVRhZ0xpc3QtPkxpc3RoZWFkZXIsIExpc3Qp KSB7DQorICAgIFJlY29yZCA9IFJFREZJU0hfRVRBR19SRUNPUkRfRlJPTV9MSVNUIChMaXN0KTsN CisgICAgTmV4dCA9IEdldE5leHROb2RlICgmRVRhZ0xpc3QtPkxpc3RoZWFkZXIsIExpc3QpOw0K Kw0KKyAgICBEZWxldGVFVGFnUmVjb3JkIChFVGFnTGlzdCwgUmVjb3JkKTsNCisNCisgICAgTGlz dCA9IE5leHQ7DQorICB9DQorDQorICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorfQ0KKw0KKy8qKg0K KyAgU2F2ZSBldGFnIGluIGxpc3QgdG8gVUVGSSB2YXJpYWJsZS4NCisNCisgIEBwYXJhbVtpbl0g ICAgRVRhZ0xpc3QgICAgICBUaGUgbGlzdCB0byBiZSBzYXZlZC4NCisgIEBwYXJhbVtpbl0gICAg VmFyaWFibGVOYW1lICBUaGUgVUVGSSB2YXJpYWJsZSBuYW1lLg0KKw0KKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgICBBbGwgZXRhZyBpcyBzYXZlZC4NCisgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSICAgVmFyaWFibGVOYW1lIG9yIEVUYWdMaXN0IGlzIE5VTEwuDQorDQor KiovDQorRUZJX1NUQVRVUw0KK1NhdmVFVGFnTGlzdCAoDQorICBJTiAgUkVERklTSF9FVEFHX0xJ U1QgICAqRVRhZ0xpc3QsDQorICBJTiAgRUZJX1NUUklORyAgICAgICAgICBWYXJpYWJsZU5hbWUN CisgICkNCit7DQorICBMSVNUX0VOVFJZICAgICAgICAgICpMaXN0Ow0KKyAgUkVERklTSF9FVEFH X1JFQ09SRCAqUmVjb3JkOw0KKyAgQ0hBUjggICAgICAgICAgICAgICAqVmFyRGF0YTsNCisgIFZP SUQgICAgICAgICAgICAgICAgKkRhdGE7DQorICBDSEFSOCAgICAgICAgICAgICAgICpTZWVrZXI7 DQorICBVSU5UTiAgICAgICAgICAgICAgIFZhclNpemU7DQorICBVSU5UTiAgICAgICAgICAgICAg IFN0clNpemU7DQorICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCisNCisgIGlmIChFVGFn TGlzdCA9PSBOVUxMIHx8IElTX0VNUFRZX1NUUklORyAoVmFyaWFibGVOYW1lKSkgew0KKyAgICBy ZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0KKw0KKyAgaWYgKElzTGlzdEVtcHR5 ICgmRVRhZ0xpc3QtPkxpc3RoZWFkZXIpKSB7DQorICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCisg IH0NCisNCisgIC8vDQorICAvLyBDYWN1bGF0ZSB0aGUgdG90YWwgc2l6ZSB3ZSBuZWVkIHRvIGtl ZXAgRVRhZyBsaXN0Lg0KKyAgLy8NCisgIFZhclNpemUgPSBFVGFnTGlzdC0+VG90YWxTaXplICsg MTsgLy8gdGVybWluYXRvciBjaGFyYWN0ZXINCisgIFZhckRhdGEgPSBBbGxvY2F0ZVplcm9Qb29s IChWYXJTaXplKTsNCisgIGlmIChWYXJEYXRhID09IE5VTEwpIHsNCisgICAgcmV0dXJuIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTOw0KKyAgfQ0KKw0KKyAgU2Vla2VyID0gVmFyRGF0YTsNCisgIFJlY29y ZCA9IE5VTEw7DQorICBMaXN0ID0gR2V0Rmlyc3ROb2RlICgmRVRhZ0xpc3QtPkxpc3RoZWFkZXIp Ow0KKyAgd2hpbGUgKCFJc051bGwgKCZFVGFnTGlzdC0+TGlzdGhlYWRlciwgTGlzdCkpIHsNCisg ICAgUmVjb3JkID0gUkVERklTSF9FVEFHX1JFQ09SRF9GUk9NX0xJU1QgKExpc3QpOw0KKw0KKyAg ICBTdHJTaXplID0gQXNjaWlTdHJTaXplIChSZWNvcmQtPlVyaSk7DQorICAgIENvcHlNZW0gKFNl ZWtlciwgUmVjb3JkLT5VcmksIFN0clNpemUpOw0KKw0KKyAgICBTZWVrZXIgKz0gKFN0clNpemUg LSAxKTsNCisgICAgKlNlZWtlciA9ICd8JzsNCisgICAgKytTZWVrZXI7DQorDQorICAgIFN0clNp emUgPSBBc2NpaVN0clNpemUgKFJlY29yZC0+RVRhZyk7DQorICAgIENvcHlNZW0gKFNlZWtlciwg UmVjb3JkLT5FVGFnLCBTdHJTaXplKTsNCisNCisgICAgU2Vla2VyICs9IChTdHJTaXplIC0gMSk7 DQorICAgICpTZWVrZXIgPSAnXG4nOw0KKw0KKyAgICArK1NlZWtlcjsNCisNCisgICAgTGlzdCA9 IEdldE5leHROb2RlICgmRVRhZ0xpc3QtPkxpc3RoZWFkZXIsIExpc3QpOzsNCisgIH0NCisNCisg ICpTZWVrZXIgPSAnXDAnOw0KKw0KKyNpZiBFVEFHX0RFQlVHX0VOQUJMRUQNCisgIER1bXBSYXdC dWZmZXIgKFZhckRhdGEsIFZhclNpemUpOw0KKyNlbmRpZg0KKw0KKyAgQVNTRVJUICgoKFVJTlRO KVNlZWtlciAtIChVSU5UTilWYXJEYXRhICsgMSkgPT0gVmFyU2l6ZSk7DQorDQorICAvLw0KKyAg Ly8gQ2hlY2sgaWYgdmFyaWFibGUgZXhpc3RzIGFscmVhZHkuIElmIHllcywgcmVtb3ZlIGl0IGZp cnN0Lg0KKyAgLy8NCisgIFN0YXR1cyA9IEdldFZhcmlhYmxlMiAoDQorICAgICAgICAgICAgIFZh cmlhYmxlTmFtZSwNCisgICAgICAgICAgICAgJmdFZmlDYWxsZXJJZEd1aWQsDQorICAgICAgICAg ICAgIChWT0lEICopJkRhdGEsDQorICAgICAgICAgICAgIE5VTEwNCisgICAgICAgICAgICAgKTsN CisgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIEZyZWVQb29sIChEYXRhKTsNCisg ICAgZ1JULT5TZXRWYXJpYWJsZSAoVmFyaWFibGVOYW1lLCAmZ0VmaUNhbGxlcklkR3VpZCwgVkFS SUFCTEVfQVRUUklCVVRFX05WX0JTLCAwLCBOVUxMKTsNCisgIH0NCisNCisNCisgIHJldHVybiBn UlQtPlNldFZhcmlhYmxlIChWYXJpYWJsZU5hbWUsICZnRWZpQ2FsbGVySWRHdWlkLCBWQVJJQUJM RV9BVFRSSUJVVEVfTlZfQlMsIFZhclNpemUsIChWT0lEICopVmFyRGF0YSk7DQorfQ0KKw0KKy8q Kg0KKyAgUmVhZCBldGFnIGZyb20gVUVGSSB2YXJpYWJsZSBpZiBpdCBleGlzdHMuDQorDQorICBA cGFyYW1baW5dICAgIEVUYWdMaXN0ICAgICAgVGhlIGxpc3QgdG8gYmUgbG9hZGVkLg0KKyAgQHBh cmFtW2luXSAgICBWYXJpYWJsZU5hbWUgIFRoZSBVRUZJIHZhcmlhYmxlIG5hbWUuDQorDQorICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIEFsbCBldGFnIGlzIHJlYWQgc3VjY2Vzc2Z1 bGx5Lg0KKyAgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBWYXJpYWJsZU5hbWUgb3Ig RVRhZ0xpc3QgaXMgTlVMTC4NCisgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgICAgTm8g ZXRhZyBpcyBmb3VuZCBvbiBVRUZJIHZhcmlhYmxlLg0KKw0KKyoqLw0KK0VGSV9TVEFUVVMNCitJ bml0aWFsRVRhZ0xpc3QgKA0KKyAgSU4gIFJFREZJU0hfRVRBR19MSVNUICAgKkVUYWdMaXN0LA0K KyAgSU4gIEVGSV9TVFJJTkcgICAgICAgICAgVmFyaWFibGVOYW1lDQorICApDQorew0KKyAgQ0hB UjggICAgICpWYXJEYXRhOw0KKyAgQ0hBUjggICAgICpVcmlQb2ludGVyOw0KKyAgQ0hBUjggICAg ICpFVGFnUG9pbnRlcjsNCisgIENIQVI4ICAgICAqU2Vla2VyOw0KKyAgVUlOVE4gICAgICBWYXJp YWJsZVNpemU7DQorICBFRklfU1RBVFVTIFN0YXR1czsNCisNCisgIGlmIChFVGFnTGlzdCA9PSBO VUxMIHx8IElTX0VNUFRZX1NUUklORyAoVmFyaWFibGVOYW1lKSkgew0KKyAgICByZXR1cm4gRUZJ X0lOVkFMSURfUEFSQU1FVEVSOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIENoZWNrIGlmIHZhcmlh YmxlIGV4aXN0cyBhbHJlYWR5Lg0KKyAgLy8NCisgIFN0YXR1cyA9IEdldFZhcmlhYmxlMiAoDQor ICAgICAgICAgICAgIFZhcmlhYmxlTmFtZSwNCisgICAgICAgICAgICAgJmdFZmlDYWxsZXJJZEd1 aWQsDQorICAgICAgICAgICAgIChWT0lEICopJlZhckRhdGEsDQorICAgICAgICAgICAgICZWYXJp YWJsZVNpemUNCisgICAgICAgICAgICAgKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN CisgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQorICB9DQorDQorICBTZWVrZXIgPSBWYXJEYXRh Ow0KKyAgVXJpUG9pbnRlciA9IFZhckRhdGE7DQorICBFVGFnUG9pbnRlciA9IFZhckRhdGE7DQor ICB3aGlsZSAoKlNlZWtlciAhPSAnXDAnKSB7DQorDQorICAgIC8vDQorICAgIC8vIEZpbmQgVVJJ DQorICAgIC8vDQorICAgIFNlZWtlciA9IEFzY2lpU3RyU3RyIChVcmlQb2ludGVyLCAifCIpOw0K KyAgICBpZiAoU2Vla2VyID09IE5VTEwpIHsNCisgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAi JWEsIGRhdGEgY29ycnVwdGVkXG4iLCBfX0ZVTkNUSU9OX18pKTsNCisgICAgICBTdGF0dXMgPSBF RklfREVWSUNFX0VSUk9SOw0KKyAgICAgIGdvdG8gT05fRVJST1I7DQorICAgIH0NCisNCisgICAg KlNlZWtlciA9ICdcMCc7DQorICAgIEVUYWdQb2ludGVyID0gKytTZWVrZXI7DQorDQorICAgIC8v DQorICAgIC8vIEZpbmQgRVRBRw0KKyAgICAvLw0KKyAgICBTZWVrZXIgPSBBc2NpaVN0clN0ciAo RVRhZ1BvaW50ZXIsICJcbiIpOw0KKyAgICBpZiAoU2Vla2VyID09IE5VTEwpIHsNCisgICAgICBE RUJVRyAoKERFQlVHX0VSUk9SLCAiJWEsIGRhdGEgY29ycnVwdGVkXG4iLCBfX0ZVTkNUSU9OX18p KTsNCisgICAgICBTdGF0dXMgPSBFRklfREVWSUNFX0VSUk9SOw0KKyAgICAgIGdvdG8gT05fRVJS T1I7DQorICAgIH0NCisNCisgICAgKlNlZWtlciA9ICdcMCc7DQorDQorICAgIEFkZEVUYWdSZWNv cmQgKEVUYWdMaXN0LCBVcmlQb2ludGVyLCBFVGFnUG9pbnRlcik7DQorDQorICAgIFVyaVBvaW50 ZXIgPSArK1NlZWtlcjsNCisgIH0NCisNCisjaWYgRVRBR19ERUJVR19FTkFCTEVEDQorICBEdW1w RVRhZ0xpc3QgKEVUYWdMaXN0LCBMIkluaXRpYWwgRVRhZyBMaXN0IGZyb20gVmFyaWFibGUiKTsN CisjZW5kaWYNCisNCisgIFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KKw0KK09OX0VSUk9SOg0KKw0K KyAgRnJlZVBvb2wgKFZhckRhdGEpOw0KKw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQorLyoq DQorICBHZXQgRVRhZyBzdHJpbmcgYnkgZ2l2ZW4gVVJJDQorDQorICBAcGFyYW1baW5dICAgVGhp cyAgICAgICAgICAgICAgICAgICAgUG9pbnRlciB0byBFREtJSV9SRURGSVNIX0VUQUdfUFJPVE9D T0wgaW5zdGFuY2UuDQorICBAcGFyYW1baW5dICAgVXJpICAgICAgICAgICAgICAgICAgICAgVGFy Z2V0IFVSSSB0byBzZWFyY2guDQorICBAcGFyYW1bb3V0XSAgRVRhZyAgICAgICAgICAgICAgICAg ICAgVGhlIEVUYWcgc3RyaW5nIHRvIGNvcnJlc3BvbmRpbmcgVVJJLg0KKw0KKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgICAgICAgIFRoZSBFVGFnIGlzIGZvdW5kIHN1Y2Nlc3NmdWxs eS4NCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgICAgICBJbnZhbGlkIHBhcmFt ZXRlciBpcyBnaXZlbi4NCisNCisqKi8NCitFRklfU1RBVFVTDQorUmVkZmlzaEVUYWdHZXQgKA0K KyAgSU4gIEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTCAqVGhpcywNCisgIElOICBDSEFSOCAg ICAgICAgICAgICAgICAgICAgICpVcmksDQorICBPVVQgQ0hBUjggICAgICAgICAgICAgICAgICAg ICAqKkVUYWcNCisgICkNCit7DQorICBSRURGSVNIX0VUQUdfUkVDT1JEICAgICAgICpUYXJnZXQ7 DQorICBSRURGSVNIX0VUQUdfUFJJVkFURV9EQVRBICpQcml2YXRlOw0KKw0KKyAgaWYgKFRoaXMg PT0gTlVMTCB8fCBJU19FTVBUWV9TVFJJTkcgKFVyaSkgfHwgRVRhZyA9PSBOVUxMKSB7DQorICAg IHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQorICB9DQorDQorICBQcml2YXRlID0gUkVE RklTSF9FVEFHX1BSSVZBVEVfRlJPTV9USElTIChUaGlzKTsNCisNCisgICpFVGFnID0gTlVMTDsN CisNCisgIFRhcmdldCA9IEZpbmRFVGFnUmVjb3JkICgmUHJpdmF0ZS0+RVRhZ0xpc3QuTGlzdGhl YWRlciwgVXJpKTsNCisgIGlmIChUYXJnZXQgPT0gTlVMTCkgew0KKyAgICByZXR1cm4gRUZJX05P VF9GT1VORDsNCisgIH0NCisNCisgICpFVGFnID0gQWxsb2NhdGVDb3B5UG9vbCAoQXNjaWlTdHJT aXplIChUYXJnZXQtPkVUYWcpLCBUYXJnZXQtPkVUYWcpOw0KKw0KKyAgcmV0dXJuIEVGSV9TVUND RVNTOw0KK30NCisNCisNCisvKioNCisgIEtlZXAgRVRhZyBzdHJpbmcgd2hpY2ggbWFwcyB0byBn aXZlbiBVcmkuDQorDQorICBAcGFyYW1baW5dICAgVGhpcyAgICAgICAgICAgICAgICBQb2ludGVy IHRvIEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTCBpbnN0YW5jZS4NCisgIEBwYXJhbVtpbl0g ICBVcmkgICAgICAgICAgICAgICAgIFRoZSB0YXJnZXQgVXJpIHdoaWNoIHJlbGF0ZWQgdG8gRVRh Zy4NCisgIEBwYXJhbVtpbl0gICBFVGFnICAgICAgICAgICAgICAgIFRoZSBFVGFnIHRvIGFkZC4g SWYgRVRhZyBpcyBOVUxMLCB0aGUgcmVjb3JkIG9mIGNvcnJlc3Bvb25kaW5nIFVSSSB3aWxsIGJl IHJlbW92ZWQuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICBUaGlzIGhh bmRsZXIgaGFzIGJlZW4gc3RvcGVkIHN1Y2Nlc3NmdWxseS4NCisgIEByZXR2YWwgT3RoZXJzICAg ICAgICAgICAgICAgICAgIFNvbWUgZXJyb3IgaGFwcGVuZWQuDQorDQorKiovDQorRUZJX1NUQVRV Uw0KK1JlZGZpc2hFVGFnU2V0ICgNCisgIElOICBFREtJSV9SRURGSVNIX0VUQUdfUFJPVE9DT0wg ICpUaGlzLA0KKyAgSU4gIENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAgKlVyaSwNCisgIElO ICBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgICpFVGFnICBPUFRJT05BTA0KKyAgKQ0KK3sN CisgIFJFREZJU0hfRVRBR19SRUNPUkQgICAgICAgKlRhcmdldDsNCisgIFJFREZJU0hfRVRBR19Q UklWQVRFX0RBVEEgKlByaXZhdGU7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1 czsNCisNCisgIGlmIChUaGlzID09IE5VTEwgfHwgSVNfRU1QVFlfU1RSSU5HIChVcmkpKSB7DQor ICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQorICB9DQorDQorICBQcml2YXRlID0g UkVERklTSF9FVEFHX1BSSVZBVEVfRlJPTV9USElTIChUaGlzKTsNCisNCisgIFN0YXR1cyA9IEVG SV9OT1RfRk9VTkQ7DQorICBUYXJnZXQgPSBGaW5kRVRhZ1JlY29yZCAoJlByaXZhdGUtPkVUYWdM aXN0Lkxpc3RoZWFkZXIsIFVyaSk7DQorICBpZiAoVGFyZ2V0ICE9IE5VTEwpIHsNCisgICAgLy8N CisgICAgLy8gUmVtb3ZlIG9sZCBvbmUgYW5kIGNyZWF0ZSBuZXcgb25lLg0KKyAgICAvLw0KKyAg ICBTdGF0dXMgPSBEZWxldGVFVGFnUmVjb3JkICgmUHJpdmF0ZS0+RVRhZ0xpc3QsIFRhcmdldCk7 DQorICB9DQorDQorICAvLw0KKyAgLy8gV2hlbiBFVGFnIGlzIE5VTEwsIGl0IG1lYW5zIHRoYXQg d2Ugd2FudCB0byByZW1vdiB0aGlzIHJlY29yZC4NCisgIC8vDQorICBpZiAoRVRhZyA9PSBOVUxM KSB7DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9DQorDQorICByZXR1cm4gQWRkRVRhZ1JlY29y ZCAoJlByaXZhdGUtPkVUYWdMaXN0LCBVcmksIEVUYWcpOw0KK30NCisNCisvKioNCisgIFJlZnJl c2ggdGhlIEVUYWcgZGF0YWJhc2UgYW5kIHNhdmUgZGF0YWJhc2UgdG8gdmFyaWFibGUuDQorDQor ICBAcGFyYW1baW5dICAgVGhpcyAgICAgICAgICAgICAgICBQb2ludGVyIHRvIEVES0lJX1JFREZJ U0hfRVRBR19QUk9UT0NPTCBpbnN0YW5jZS4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgICAgIFRoaXMgaGFuZGxlciBoYXMgYmVlbiBzdG9wZWQgc3VjY2Vzc2Z1bGx5Lg0KKyAg QHJldHZhbCBPdGhlcnMgICAgICAgICAgICAgICAgICAgU29tZSBlcnJvciBoYXBwZW5lZC4NCisN CisqKi8NCitFRklfU1RBVFVTDQorUmVkZmlzaEVUYWdGbHVzaCAoDQorICBJTiAgRURLSUlfUkVE RklTSF9FVEFHX1BST1RPQ09MICAgICpUaGlzDQorICApDQorew0KKyAgUkVERklTSF9FVEFHX1BS SVZBVEVfREFUQSAqUHJpdmF0ZTsNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVz Ow0KKw0KKyAgaWYgKFRoaXMgPT0gTlVMTCkgew0KKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KKyAgfQ0KKw0KKyAgUHJpdmF0ZSA9IFJFREZJU0hfRVRBR19QUklWQVRFX0ZST01f VEhJUyAoVGhpcyk7DQorDQorICBTdGF0dXMgPSBTYXZlRVRhZ0xpc3QgKCZQcml2YXRlLT5FVGFn TGlzdCwgUHJpdmF0ZS0+VmFyaWFibGVOYW1lKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCisgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhLCBzYXZlIEVUYWcgbGlzdCB0byB2YXJp YWJsZTogJXMgZmFpbGVkOiAlclxuIiwgX19GVU5DVElPTl9fLCBQcml2YXRlLT5WYXJpYWJsZU5h bWUsIFN0YXR1cykpOw0KKyAgfQ0KKw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQorLyoqDQor ICBDYWxsYmFjayBmdW5jdGlvbiBleGVjdXRlZCB3aGVuIHRoZSBFeGl0Qm9vdFNlcnZpY2UgZXZl bnQgZ3JvdXAgaXMgc2lnbmFsZWQuDQorDQorICBAcGFyYW1baW5dICAgRXZlbnQgICAgRXZlbnQg d2hvc2Ugbm90aWZpY2F0aW9uIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQuDQorICBAcGFyYW1b b3V0XSAgQ29udGV4dCAgUG9pbnRlciB0byB0aGUgQ29udGV4dCBidWZmZXINCisNCisqKi8NCitW T0lEDQorRUZJQVBJDQorUmVkZmlzaEVUYWdPbkV4aXRCb290U2VydmljZSAoDQorICBJTiAgRUZJ X0VWRU5UICBFdmVudCwNCisgIE9VVCBWT0lEICAgICAgICpDb250ZXh0DQorICApDQorew0KKyAg Ly8NCisgIC8vIE1lbW9yeSBpcyBhYm91dCB0byBiZSByZWxlYXNlZC4gS2VlcCBsaXN0IGludG8g dmFyaWFibGUuDQorICAvLw0KKyAgUmVkZmlzaEVUYWdGbHVzaCAoJm1SZWRmaXNoRVRhZ1ByaXZh dGUtPlByb3RvY29sKTsNCit9DQorDQorLyoqDQorICBVbmxvYWRzIGFuIGltYWdlLg0KKw0KKyAg QHBhcmFtW2luXSAgSW1hZ2VIYW5kbGUgICAgICAgICAgIEhhbmRsZSB0aGF0IGlkZW50aWZpZXMg dGhlIGltYWdlIHRvIGJlIHVubG9hZGVkLg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAg ICAgICAgVGhlIGltYWdlIGhhcyBiZWVuIHVubG9hZGVkLg0KKyAgQHJldHZhbCBFRklfSU5WQUxJ RF9QQVJBTUVURVIgSW1hZ2VIYW5kbGUgaXMgbm90IGEgdmFsaWQgaW1hZ2UgaGFuZGxlLg0KKw0K KyoqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitSZWRmaXNoRVRhZ0RyaXZlclVubG9hZCAoDQor ICBJTiBFRklfSEFORExFICBJbWFnZUhhbmRsZQ0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgIFN0 YXR1czsNCisNCisgIGlmIChtUmVkZmlzaEVUYWdQcml2YXRlICE9IE5VTEwpIHsNCisNCisgICAg U3RhdHVzID0gZ0JTLT5Vbmluc3RhbGxQcm90b2NvbEludGVyZmFjZSAoDQorICAgICAgICAgICAg ICAgICAgICBtUmVkZmlzaEVUYWdQcml2YXRlLT5JbWFnZUhhbmRsZSwNCisgICAgICAgICAgICAg ICAgICAgICZnRWRrSUlSZWRmaXNoRVRhZ1Byb3RvY29sR3VpZCwNCisgICAgICAgICAgICAgICAg ICAgIChWT0lEKikmbVJlZGZpc2hFVGFnUHJpdmF0ZS0+UHJvdG9jb2wNCisgICAgICAgICAgICAg ICAgICAgICk7DQorICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICBERUJVRyAo KERFQlVHX0VSUk9SLCAiJWEsIGNhbiBub3QgdW5pbnN0YWxsIGdFZGtJSVJlZGZpc2hFVGFnUHJv dG9jb2xHdWlkOiAlclxuIiwgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsNCisgICAgICBBU1NFUlQg KEZBTFNFKTsNCisgICAgfQ0KKw0KKyAgICBSZWxlYXNlRVRhZ0xpc3QgKCZtUmVkZmlzaEVUYWdQ cml2YXRlLT5FVGFnTGlzdCk7DQorDQorICAgIGlmIChtUmVkZmlzaEVUYWdQcml2YXRlLT5WYXJp YWJsZU5hbWUgIT0gTlVMTCkgew0KKyAgICAgIEZyZWVQb29sIChtUmVkZmlzaEVUYWdQcml2YXRl LT5WYXJpYWJsZU5hbWUpOw0KKyAgICB9DQorDQorICAgIGlmIChtUmVkZmlzaEVUYWdQcml2YXRl LT5FdmVudCAhPSBOVUxMKSB7DQorICAgICAgZ0JTLT5DbG9zZUV2ZW50IChtUmVkZmlzaEVUYWdQ cml2YXRlLT5FdmVudCk7DQorICAgIH0NCisNCisgICAgRnJlZVBvb2wgKG1SZWRmaXNoRVRhZ1By aXZhdGUpOw0KKyAgICBtUmVkZmlzaEVUYWdQcml2YXRlID0gTlVMTDsNCisgIH0NCisNCisNCisg IHJldHVybiBFRklfU1VDQ0VTUzsNCit9DQorDQorLy8NCisvLyBFREtJSV9SRURGSVNIX0VUQUdf UFJPVE9DT0wuDQorLy8NCitFREtJSV9SRURGSVNIX0VUQUdfUFJPVE9DT0wgbVJlZGZpc2hFVGFn UHJvdG9jb2wgPSB7DQorICBSZWRmaXNoRVRhZ0dldCwNCisgIFJlZGZpc2hFVGFnU2V0LA0KKyAg UmVkZmlzaEVUYWdGbHVzaA0KK307DQorDQorLyoqDQorICBUaGlzIGlzIHRoZSBkZWNsYXJhdGlv biBvZiBhbiBFRkkgaW1hZ2UgZW50cnkgcG9pbnQuIFRoaXMgZW50cnkgcG9pbnQgaXMNCisgIHRo ZSBzYW1lIGZvciBVRUZJIEFwcGxpY2F0aW9ucywgVUVGSSBPUyBMb2FkZXJzLCBhbmQgVUVGSSBE cml2ZXJzIGluY2x1ZGluZw0KKyAgYm90aCBkZXZpY2UgZHJpdmVycyBhbmQgYnVzIGRyaXZlcnMu DQorDQorICBAcGFyYW1baW5dICBJbWFnZUhhbmRsZSAgICAgICBUaGUgZmlybXdhcmUgYWxsb2Nh dGVkIGhhbmRsZSBmb3IgdGhlIFVFRkkgaW1hZ2UuDQorICBAcGFyYW1baW5dICBTeXN0ZW1UYWJs ZSAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSSBTeXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFs IEVGSV9TVUNDRVNTICAgICAgICAgICBUaGUgb3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVs bHkuDQorICBAcmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICBBbiB1bmV4cGVjdGVkIGVycm9y IG9jY3VycmVkLg0KKyoqLw0KK0VGSV9TVEFUVVMNCitFRklBUEkNCitSZWRmaXNoRVRhZ0RyaXZl ckVudHJ5UG9pbnQgKA0KKyAgSU4gRUZJX0hBTkRMRSAgICAgICAgSW1hZ2VIYW5kbGUsDQorICBJ TiBFRklfU1lTVEVNX1RBQkxFICAqU3lzdGVtVGFibGUNCisgICkNCit7DQorICBFRklfU1RBVFVT ICAgIFN0YXR1czsNCisNCisgIG1SZWRmaXNoRVRhZ1ByaXZhdGUgPSBBbGxvY2F0ZVplcm9Qb29s IChzaXplb2YgKFJFREZJU0hfRVRBR19QUklWQVRFX0RBVEEpKTsNCisgIGlmIChtUmVkZmlzaEVU YWdQcml2YXRlID09IE5VTEwpIHsNCisgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0K KyAgfQ0KKw0KKyAgSW5pdGlhbGl6ZUxpc3RIZWFkICgmbVJlZGZpc2hFVGFnUHJpdmF0ZS0+RVRh Z0xpc3QuTGlzdGhlYWRlcik7DQorICBtUmVkZmlzaEVUYWdQcml2YXRlLT5WYXJpYWJsZU5hbWUg PSBBbGxvY2F0ZUNvcHlQb29sIChTdHJTaXplIChFVEFHX1ZBUklBQkxFX05BTUUpLCBFVEFHX1ZB UklBQkxFX05BTUUpOw0KKyAgaWYgKG1SZWRmaXNoRVRhZ1ByaXZhdGUtPlZhcmlhYmxlTmFtZSA9 PSBOVUxMKSB7DQorICAgIGdvdG8gT05fRVJST1I7DQorICB9DQorDQorICBtUmVkZmlzaEVUYWdQ cml2YXRlLT5JbWFnZUhhbmRsZSA9IEltYWdlSGFuZGxlOw0KKyAgQ29weU1lbSAoJm1SZWRmaXNo RVRhZ1ByaXZhdGUtPlByb3RvY29sLCAmbVJlZGZpc2hFVGFnUHJvdG9jb2wsIHNpemVvZiAoRURL SUlfUkVERklTSF9FVEFHX1BST1RPQ09MKSk7DQorDQorICBTdGF0dXMgPSBnQlMtPkluc3RhbGxQ cm90b2NvbEludGVyZmFjZSAoDQorICAgICAgICAgICAgICAgICAgJkltYWdlSGFuZGxlLA0KKyAg ICAgICAgICAgICAgICAgICZnRWRrSUlSZWRmaXNoRVRhZ1Byb3RvY29sR3VpZCwNCisgICAgICAg ICAgICAgICAgICBFRklfTkFUSVZFX0lOVEVSRkFDRSwNCisgICAgICAgICAgICAgICAgICAoVk9J RCopJm1SZWRmaXNoRVRhZ1ByaXZhdGUtPlByb3RvY29sDQorICAgICAgICAgICAgICAgICAgKTsN CisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgREVCVUcgKChERUJVR19FUlJPUiwg IiVhLCBjYW4gbm90IGluc3RhbGwgZ0Vka0lJUmVkZmlzaEVUYWdQcm90b2NvbEd1aWQ6ICVyXG4i LCBfX0ZVTkNUSU9OX18sIFN0YXR1cykpOw0KKyAgICBBU1NFUlQgKEZBTFNFKTsNCisgICAgZ290 byBPTl9FUlJPUjsNCisgIH0NCisNCisgIC8vDQorICAvLyBDcmVhdGUgRXhpdCBCb290IFNlcnZp Y2UgZXZlbnQuDQorICAvLw0KKyAgU3RhdHVzID0gZ0JTLT5DcmVhdGVFdmVudEV4ICgNCisgICAg ICAgICAgICAgICAgICBFVlRfTk9USUZZX1NJR05BTCwNCisgICAgICAgICAgICAgICAgICBUUExf Q0FMTEJBQ0ssDQorICAgICAgICAgICAgICAgICAgUmVkZmlzaEVUYWdPbkV4aXRCb290U2Vydmlj ZSwNCisgICAgICAgICAgICAgICAgICBOVUxMLA0KKyAgICAgICAgICAgICAgICAgICZnRWZpRXZl bnRFeGl0Qm9vdFNlcnZpY2VzR3VpZCwNCisgICAgICAgICAgICAgICAgICAmbVJlZGZpc2hFVGFn UHJpdmF0ZS0+RXZlbnQNCisgICAgICAgICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEZhaWwgdG8gcmVnaXN0 ZXIgRXhpdCBCb290IFNlcnZpY2UgZXZlbnQuIiwgX19GVU5DVElPTl9fKSk7DQorICAgIGdvdG8g T05fRVJST1I7DQorICB9DQorDQorICAvLw0KKyAgLy8gUmVhZCBleGlzdGluZyByZWNvcmQgZnJv bSB2YXJpYWJsZS4NCisgIC8vDQorICBTdGF0dXMgPSBJbml0aWFsRVRhZ0xpc3QgKCZtUmVkZmlz aEVUYWdQcml2YXRlLT5FVGFnTGlzdCwgbVJlZGZpc2hFVGFnUHJpdmF0ZS0+VmFyaWFibGVOYW1l KTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgREVCVUcgKChERUJVR19JTkZP LCAiJWEsIEluaXRpYWwgRVRhZyBMaXN0OiAlclxuIiwgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsN CisgIH0NCisNCisgIHJldHVybiBFRklfU1VDQ0VTUzsNCisNCitPTl9FUlJPUjoNCisNCisgIFJl ZGZpc2hFVGFnRHJpdmVyVW5sb2FkIChJbWFnZUhhbmRsZSk7DQorDQorICByZXR1cm4gU3RhdHVz Ow0KK30NCi0tDQoyLjIxLjAud2luZG93cy4xDQoNCg== --_000_CS1PR8401MB1144251AC1C3C6D95113A2B3FF839CS1PR8401MB1144_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgc3R5bGU9 ImRpc3BsYXk6bm9uZTsiPiBQIHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO30gPC9zdHls ZT4NCjwvaGVhZD4NCjxib2R5IGRpcj0ibHRyIj4NCjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBD YWxpYnJpLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNv bG9yOiByZ2IoMCwgMCwgMCk7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsi Pg0KUmV2aWV3ZWQtYnk6Jm5ic3A7PHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZv bnQtZmFtaWx5OiAmcXVvdDtTZWdvZSBVSSZxdW90OywgJnF1b3Q7U2Vnb2UgVUkgV2ViIChXZXN0 IEV1cm9wZWFuKSZxdW90OywgJnF1b3Q7U2Vnb2UgVUkmcXVvdDssIC1hcHBsZS1zeXN0ZW0sIEJs aW5rTWFjU3lzdGVtRm9udCwgUm9ib3RvLCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywgc2Fu cy1zZXJpZjsgZm9udC1zaXplOiAxNC42NjY3cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUs IDI1NSwgMjU1KTsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5BYm5lcg0KIENoYW5nICZs dDthYm5lci5jaGFuZ0BocGUuY29tJmd0Ozwvc3Bhbj48L2Rpdj4NCjxkaXYgc3R5bGU9ImZvbnQt ZmFtaWx5OiBDYWxpYnJpLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1 NSwgMjU1KTsiPg0KPGJyPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ2FsaWJy aSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjog cmdiKDAsIDAsIDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij4NCjxi cj4NCjwvZGl2Pg0KPGRpdiBpZD0iYXBwZW5kb25zZW5kIj48L2Rpdj4NCjxkaXYgc3R5bGU9ImZv bnQtZmFtaWx5OiBDYWxpYnJpLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp emU6IDEycHQ7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4NCjxicj4NCjwvZGl2Pg0KPGhyIHRhYmlu ZGV4PSItMSIgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDo5OCUiPg0KPGRpdiBp ZD0iZGl2UnBseUZ3ZE1zZyIgZGlyPSJsdHIiPjxmb250IGZhY2U9IkNhbGlicmksIHNhbnMtc2Vy aWYiIGNvbG9yPSIjMDAwMDAwIiBzdHlsZT0iZm9udC1zaXplOiAxMXB0OyI+PGI+RnJvbTo8L2I+ IFdhbmcsIE5pY2tsZSAoSFBTIFNXKSAmbHQ7bmlja2xlLndhbmdAaHBlLmNvbSZndDs8YnI+DQo8 Yj5TZW50OjwvYj4gTW9uZGF5LCBPY3RvYmVyIDI1LCAyMDIxIDQ6MjAgUE08YnI+DQo8Yj5Ubzo8 L2I+IENoYW5nLCBBYm5lciAoSFBTIFNXL0ZXIFRlY2hub2xvZ2lzdCkgJmx0O2FibmVyLmNoYW5n QGhwZS5jb20mZ3Q7OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbyAmbHQ7ZGV2ZWxAZWRrMi5ncm91cHMu aW8mZ3Q7PGJyPg0KPGI+Q2M6PC9iPiBMaW1pbmcgR2FvICZsdDtnYW9saW1pbmdAYnlvc29mdC5j b20uY24mZ3Q7PGJyPg0KPGI+U3ViamVjdDo8L2I+IFJlOiBbUEFUQ0ggMS8yXSBzdGFnaW5nL1Jl ZGZpc2hDbGllbnRQa2c6IEFkZCBFREtJSSBFVGFnIGRyaXZlcjwvZm9udD4NCjxkaXY+Jm5ic3A7 PC9kaXY+DQo8L2Rpdj4NCjxkaXYgZGlyPSJsdHIiPg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6 IENhbGlicmksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsg Y29sb3I6IHJnYigwLCAwLCAwKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUp OyI+DQo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zaXplOiAxNC42NjY3 cHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgZGlzcGxheTogaW5saW5l ICFpbXBvcnRhbnQ7Ij5SZXZpZXdlZC1ieTogTmlja2xlIFdhbmcgJmx0O25pY2tsZS53YW5nQGhw ZS5jb20mZ3Q7PC9zcGFuPjxicj4NCjwvZGl2Pg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENh bGlicmksIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29s b3I6IHJnYigwLCAwLCAwKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyI+ DQo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zaXplOiAxNC42NjY3cHg7 IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgZGlzcGxheTogaW5saW5lICFp bXBvcnRhbnQ7Ij48YnI+DQo8L3NwYW4+PC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTog Q2FsaWJyaSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj b2xvcjogcmdiKDAsIDAsIDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7 Ij4NCjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LXNpemU6IDE0LjY2Njdw eDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyBkaXNwbGF5OiBpbmxpbmUg IWltcG9ydGFudDsiPlRoYW5rcyw8L3NwYW4+PC9kaXY+DQo8ZGl2IHN0eWxlPSJmb250LWZhbWls eTogQ2FsaWJyaSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0 OyBjb2xvcjogcmdiKDAsIDAsIDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1 NSk7Ij4NCjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LXNpemU6IDE0LjY2 NjdweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyBkaXNwbGF5OiBpbmxp bmUgIWltcG9ydGFudDsiPk5pY2tsZTwvc3Bhbj48L2Rpdj4NCjxkaXYgaWQ9InhfYXBwZW5kb25z ZW5kIj48L2Rpdj4NCjxociB0YWJpbmRleD0iLTEiIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9j azsgd2lkdGg6OTglIj4NCjxkaXYgaWQ9InhfZGl2UnBseUZ3ZE1zZyIgZGlyPSJsdHIiPjxmb250 IGZhY2U9IkNhbGlicmksIHNhbnMtc2VyaWYiIGNvbG9yPSIjMDAwMDAwIiBzdHlsZT0iZm9udC1z aXplOiAxMXB0OyI+PGI+RnJvbTo8L2I+IENoYW5nLCBBYm5lciAoSFBTIFNXL0ZXIFRlY2hub2xv Z2lzdCkgJmx0O2FibmVyLmNoYW5nQGhwZS5jb20mZ3Q7PGJyPg0KPGI+U2VudDo8L2I+IE1vbmRh eSwgT2N0b2JlciAyNSwgMjAyMSAxNTo0MTxicj4NCjxiPlRvOjwvYj4gZGV2ZWxAZWRrMi5ncm91 cHMuaW8gJmx0O2RldmVsQGVkazIuZ3JvdXBzLmlvJmd0Ozxicj4NCjxiPkNjOjwvYj4gV2FuZywg Tmlja2xlIChIUFMgU1cpICZsdDtuaWNrbGUud2FuZ0BocGUuY29tJmd0OzsgTGltaW5nIEdhbyAm bHQ7Z2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuJmd0Ozxicj4NCjxiPlN1YmplY3Q6PC9iPiBbUEFU Q0ggMS8yXSBzdGFnaW5nL1JlZGZpc2hDbGllbnRQa2c6IEFkZCBFREtJSSBFVGFnIGRyaXZlcjwv Zm9udD4NCjxkaXY+Jm5ic3A7PC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9InhfQm9keUZyYWdt ZW50Ij48Zm9udCBzaXplPSIyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExcHQiPg0KPGRpdiBj bGFzcz0ieF9QbGFpblRleHQiPkltcGxlbWVudCBFREtJSSBFVGFnIHByb3RvY29sIHRvIG1hbmlw dWxhdGUgRVRhZyBvZjxicj4NCkhUVFAgY29udGVudC48YnI+DQo8YnI+DQpTaWduZWQtb2ZmLWJ5 OiBOaWNrbGUgV2FuZyAmbHQ7bmlja2xlLndhbmdAaHBlLmNvbSZndDs8YnI+DQpDYzogQWJuZXIg Q2hhbmcgJmx0O2FibmVyLmNoYW5nQGhwZS5jb20mZ3Q7PGJyPg0KQ2M6IExpbWluZyBHYW8gJmx0 O2dhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbiZndDs8YnI+DQotLS08YnI+DQombmJzcDsuLi4vUmVk ZmlzaEVUYWdEeGUvUmVkZmlzaEVUYWdEeGUuaW5mJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwmbmJzcDsgNDUgKzxicj4NCiZuYnNwOy4uLi9Qcm90b2Nv bC9FZGtJSVJlZGZpc2hFVGFnUHJvdG9jb2wuaCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyB8Jm5ic3A7IDc2ICsrPGJyPg0KJm5ic3A7Li4uL1JlZGZpc2hFVGFnRHhlL1JlZGZp c2hFVGFnRHhlLmgmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgfCZuYnNwOyA3MCArKzxicj4NCiZuYnNwOy4uLi9SZWRmaXNoRVRhZ0R4 ZS9SZWRmaXNoRVRhZ0R4ZS5jJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwgNzc0ICsrKysrKysrKysrKysrKysrKzxicj4NCiZuYnNw OzQgZmlsZXMgY2hhbmdlZCwgOTY1IGluc2VydGlvbnMoKyk8YnI+DQombmJzcDtjcmVhdGUgbW9k ZSAxMDA2NDQgUmVkZmlzaENsaWVudFBrZy9SZWRmaXNoRVRhZ0R4ZS9SZWRmaXNoRVRhZ0R4ZS5p bmY8YnI+DQombmJzcDtjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaENsaWVudFBrZy9JbmNsdWRl L1Byb3RvY29sL0Vka0lJUmVkZmlzaEVUYWdQcm90b2NvbC5oPGJyPg0KJm5ic3A7Y3JlYXRlIG1v ZGUgMTAwNjQ0IFJlZGZpc2hDbGllbnRQa2cvUmVkZmlzaEVUYWdEeGUvUmVkZmlzaEVUYWdEeGUu aDxicj4NCiZuYnNwO2NyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoQ2xpZW50UGtnL1JlZGZpc2hF VGFnRHhlL1JlZGZpc2hFVGFnRHhlLmM8YnI+DQo8YnI+DQpkaWZmIC0tZ2l0IGEvUmVkZmlzaENs aWVudFBrZy9SZWRmaXNoRVRhZ0R4ZS9SZWRmaXNoRVRhZ0R4ZS5pbmYgYi9SZWRmaXNoQ2xpZW50 UGtnL1JlZGZpc2hFVGFnRHhlL1JlZGZpc2hFVGFnRHhlLmluZjxicj4NCm5ldyBmaWxlIG1vZGUg MTAwNjQ0PGJyPg0KaW5kZXggMDAwMDAwMDAwMDAuLjQzMTViMWVhYTVmPGJyPg0KLS0tIC9kZXYv bnVsbDxicj4NCisrKyBiL1JlZGZpc2hDbGllbnRQa2cvUmVkZmlzaEVUYWdEeGUvUmVkZmlzaEVU YWdEeGUuaW5mPGJyPg0KQEAgLTAsMCArMSw0NSBAQDxicj4NCivvu78jIyBAZmlsZTxicj4NCisj PGJyPg0KKyMmbmJzcDsgKEMpIENvcHlyaWdodCAyMDIxIEhld2xldHQgUGFja2FyZCBFbnRlcnBy aXNlIERldmVsb3BtZW50IExQJmx0O0JSJmd0Ozxicj4NCisjPGJyPg0KKyMmbmJzcDsgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQ8YnI+DQorIzxicj4NCisjIzxi cj4NCis8YnI+DQorW0RlZmluZXNdPGJyPg0KKyZuYnNwOyBJTkZfVkVSU0lPTiZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyA9IDB4MDAwMTAwMGI8YnI+DQorJm5ic3A7IEJBU0VfTkFNRSZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA9IFJlZGZpc2hFVGFnRHhlPGJyPg0K KyZuYnNwOyBGSUxFX0dVSUQmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg PSBGN0JCMEJCMi05Nzk2LTQ4NUYtOUYwMC1DMEVCNDdFOUY5MkI8YnI+DQorJm5ic3A7IE1PRFVM RV9UWVBFJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ID0gRFhFX0RSSVZFUjxicj4NCismbmJz cDsgVkVSU0lPTl9TVFJJTkcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPSAxLjA8YnI+DQorJm5ic3A7IEVOVFJZX1BPSU5U Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ID0gUmVkZmlzaEVUYWdEcml2ZXJFbnRyeVBvaW50 PGJyPg0KKyZuYnNwOyBVTkxPQURfSU1BR0UmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPSBSZWRmaXNo RVRhZ0RyaXZlclVubG9hZDxicj4NCis8YnI+DQorW1BhY2thZ2VzXTxicj4NCismbmJzcDsgTWRl UGtnL01kZVBrZy5kZWM8YnI+DQorJm5ic3A7IE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVj PGJyPg0KKyZuYnNwOyBSZWRmaXNoUGtnL1JlZGZpc2hQa2cuZGVjPGJyPg0KKyZuYnNwOyBSZWRm aXNoQ2xpZW50UGtnL1JlZGZpc2hDbGllbnRQa2cuZGVjPGJyPg0KKzxicj4NCitbU291cmNlc108 YnI+DQorJm5ic3A7IFJlZGZpc2hFVGFnRHhlLmg8YnI+DQorJm5ic3A7IFJlZGZpc2hFVGFnRHhl LmM8YnI+DQorPGJyPg0KK1tMaWJyYXJ5Q2xhc3Nlc108YnI+DQorJm5ic3A7IEJhc2VMaWI8YnI+ DQorJm5ic3A7IEJhc2VNZW1vcnlMaWI8YnI+DQorJm5ic3A7IERlYnVnTGliPGJyPg0KKyZuYnNw OyBNZW1vcnlBbGxvY2F0aW9uTGliPGJyPg0KKyZuYnNwOyBVZWZpTGliPGJyPg0KKyZuYnNwOyBV ZWZpQm9vdFNlcnZpY2VzVGFibGVMaWI8YnI+DQorJm5ic3A7IFVlZmlSdW50aW1lU2VydmljZXNU YWJsZUxpYjxicj4NCismbmJzcDsgVWVmaURyaXZlckVudHJ5UG9pbnQ8YnI+DQorPGJyPg0KK1tQ cm90b2NvbHNdPGJyPg0KKyZuYnNwOyBnRWRrSUlSZWRmaXNoRVRhZ1Byb3RvY29sR3VpZCZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAj IyBQUk9EVUNFRCAjIzxicj4NCis8YnI+DQorW0d1aWRzXTxicj4NCismbmJzcDsgZ0VmaUV2ZW50 RXhpdEJvb3RTZXJ2aWNlc0d1aWQmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgIyMgQ09OU1VNRVMgIyMgRXZlbnQ8YnI+DQorPGJyPg0K K1tEZXBleF08YnI+DQorJm5ic3A7IFRSVUU8YnI+DQpkaWZmIC0tZ2l0IGEvUmVkZmlzaENsaWVu dFBrZy9JbmNsdWRlL1Byb3RvY29sL0Vka0lJUmVkZmlzaEVUYWdQcm90b2NvbC5oIGIvUmVkZmlz aENsaWVudFBrZy9JbmNsdWRlL1Byb3RvY29sL0Vka0lJUmVkZmlzaEVUYWdQcm90b2NvbC5oPGJy Pg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQ8YnI+DQppbmRleCAwMDAwMDAwMDAwMC4uM2NiY2VkNDRl Yjc8YnI+DQotLS0gL2Rldi9udWxsPGJyPg0KKysrIGIvUmVkZmlzaENsaWVudFBrZy9JbmNsdWRl L1Byb3RvY29sL0Vka0lJUmVkZmlzaEVUYWdQcm90b2NvbC5oPGJyPg0KQEAgLTAsMCArMSw3NiBA QDxicj4NCisvKiogQGZpbGU8YnI+DQorJm5ic3A7IFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBFREtJ SV9SRURGSVNIX0ZFQVRVUkVfUFJPVE9DT0wgaW50ZXJmYWNlLjxicj4NCis8YnI+DQorJm5ic3A7 IChDKSBDb3B5cmlnaHQgMjAyMSBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVu dCBMUCZsdDtCUiZndDs8YnI+DQorPGJyPg0KKyZuYnNwOyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItQ2xhdXNlLVBhdGVudDxicj4NCis8YnI+DQorKiovPGJyPg0KKzxicj4NCisjaWZu ZGVmIEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTF9IXzxicj4NCisjZGVmaW5lIEVES0lJX1JF REZJU0hfRVRBR19QUk9UT0NPTF9IXzxicj4NCis8YnI+DQordHlwZWRlZiBzdHJ1Y3QgX0VES0lJ X1JFREZJU0hfRVRBR19QUk9UT0NPTCBFREtJSV9SRURGSVNIX0VUQUdfUFJPVE9DT0w7PGJyPg0K Kzxicj4NCisvKio8YnI+DQorJm5ic3A7IEdldCBFVGFnIHN0cmluZyBieSBnaXZlbiBVUkk8YnI+ DQorPGJyPg0KKyZuYnNwOyBAcGFyYW1baW5dJm5ic3A7Jm5ic3A7IFRoaXMmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgUG9pbnRlciB0byBF REtJSV9SRURGSVNIX0VUQUdfUFJPVE9DT0wgaW5zdGFuY2UuPGJyPg0KKyZuYnNwOyBAcGFyYW1b aW5dJm5ic3A7Jm5ic3A7IFVyaSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBUYXJnZXQgVVJJIHRvIHNlYXJjaC48YnI+DQorJm5i c3A7IEBwYXJhbVtvdXRdJm5ic3A7IEVUYWcmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgVGhlIEVUYWcgc3RyaW5nIHRvIGNvcnJlc3BvbmRp bmcgVVJJLjxicj4NCis8YnI+DQorJm5ic3A7IEByZXR2YWwgRUZJX1NVQ0NFU1MmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgVGhlIEVUYWcgaXMgZm91bmQgc3Vj Y2Vzc2Z1bGx5Ljxicj4NCismbmJzcDsgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVImbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgSW52YWxpZCBwYXJhbWV0ZXIg aXMgZ2l2ZW4uPGJyPg0KKzxicj4NCisqKi88YnI+DQordHlwZWRlZjxicj4NCitFRklfU1RBVFVT PGJyPg0KKyhFRklBUEkgKkVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTF9HRVQpICg8YnI+DQor Jm5ic3A7IElOJm5ic3A7IEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTCAqVGhpcyw8YnI+DQor Jm5ic3A7IElOJm5ic3A7IENIQVI4Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICpVcmksPGJyPg0KKyZuYnNw OyBPVVQgQ0hBUjgmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKipFVGFnPGJyPg0KKyZuYnNwOyApOzxicj4N Cis8YnI+DQorLyoqPGJyPg0KKyZuYnNwOyBLZWVwIEVUYWcgc3RyaW5nIHdoaWNoIG1hcHMgdG8g Z2l2ZW4gVXJpLjxicj4NCis8YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0mbmJzcDsmbmJzcDsgVGhp cyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBQb2ludGVyIHRvIEVES0lJX1JFREZJ U0hfRVRBR19QUk9UT0NPTCBpbnN0YW5jZS48YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0mbmJzcDsm bmJzcDsgVXJpJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFRoZSB0YXJn ZXQgVXJpIHdoaWNoIHJlbGF0ZWQgdG8gRVRhZy48YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0mbmJz cDsmbmJzcDsgRVRhZyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBUaGUgRVRhZyB0 byBhZGQuIElmIEVUYWcgaXMgTlVMTCwgdGhlIHJlY29yZCBvZiBjb3JyZXNwb29uZGluZyBVUkkg d2lsbCBiZSByZW1vdmVkLjxicj4NCis8YnI+DQorJm5ic3A7IEByZXR2YWwgRUZJX1NVQ0NFU1Mm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgVGhpcyBoYW5kbGVyIGhhcyBiZWVuIHN0b3BlZCBzdWNjZXNz ZnVsbHkuPGJyPg0KKyZuYnNwOyBAcmV0dmFsIE90aGVycyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBTb21lIGVycm9yIGhhcHBlbmVkLjxicj4NCis8 YnI+DQorKiovPGJyPg0KK3R5cGVkZWY8YnI+DQorRUZJX1NUQVRVUzxicj4NCisoRUZJQVBJICpF REtJSV9SRURGSVNIX0VUQUdfUFJPVE9DT0xfU0VUKSAoPGJyPg0KKyZuYnNwOyBJTiZuYnNwOyBF REtJSV9SRURGSVNIX0VUQUdfUFJPVE9DT0wmbmJzcDsmbmJzcDsgKlRoaXMsPGJyPg0KKyZuYnNw OyBJTiZuYnNwOyBDSEFSOCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqVXJpLDxicj4N CismbmJzcDsgSU4mbmJzcDsgQ0hBUjgmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKkVU YWc8YnI+DQorJm5ic3A7ICk7PGJyPg0KKzxicj4NCisvKio8YnI+DQorJm5ic3A7IFJlZnJlc2gg dGhlIEVUYWcgZGF0YWJhc2UgYW5kIHNhdmUgZGF0YWJhc2UgdG8gdmFyaWFibGUuPGJyPg0KKzxi cj4NCismbmJzcDsgQHBhcmFtW2luXSZuYnNwOyZuYnNwOyBUaGlzJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IFBvaW50ZXIgdG8gRURLSUlfUkVERklTSF9FVEFHX1BST1RPQ09MIGlu c3RhbmNlLjxicj4NCis8YnI+DQorJm5ic3A7IEByZXR2YWwgRUZJX1NVQ0NFU1MmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgVGhpcyBoYW5kbGVyIGhhcyBiZWVuIHN0b3BlZCBzdWNjZXNzZnVsbHkuPGJy Pg0KKyZuYnNwOyBAcmV0dmFsIE90aGVycyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyBTb21lIGVycm9yIGhhcHBlbmVkLjxicj4NCis8YnI+DQorKiov PGJyPg0KK3R5cGVkZWY8YnI+DQorRUZJX1NUQVRVUzxicj4NCisoRUZJQVBJICpFREtJSV9SRURG SVNIX0VUQUdfUFJPVE9DT0xfRkxVU0gpICg8YnI+DQorJm5ic3A7IElOJm5ic3A7IEVES0lJX1JF REZJU0hfRVRBR19QUk9UT0NPTCZuYnNwOyZuYnNwOyZuYnNwOyAqVGhpczxicj4NCismbmJzcDsg KTs8YnI+DQorPGJyPg0KK3N0cnVjdCBfRURLSUlfUkVERklTSF9FVEFHX1BST1RPQ09MIHs8YnI+ DQorJm5ic3A7IEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTF9HRVQmbmJzcDsmbmJzcDsgR2V0 Ozxicj4NCismbmJzcDsgRURLSUlfUkVERklTSF9FVEFHX1BST1RPQ09MX1NFVCZuYnNwOyZuYnNw OyBTZXQ7PGJyPg0KKyZuYnNwOyBFREtJSV9SRURGSVNIX0VUQUdfUFJPVE9DT0xfRkxVU0ggRmx1 c2g7PGJyPg0KK307PGJyPg0KKzxicj4NCitleHRlcm4gRUZJX0dVSUQgZ0Vka0lJUmVkZmlzaEVU YWdQcm90b2NvbEd1aWQ7PGJyPg0KKzxicj4NCisjZW5kaWY8YnI+DQpkaWZmIC0tZ2l0IGEvUmVk ZmlzaENsaWVudFBrZy9SZWRmaXNoRVRhZ0R4ZS9SZWRmaXNoRVRhZ0R4ZS5oIGIvUmVkZmlzaENs aWVudFBrZy9SZWRmaXNoRVRhZ0R4ZS9SZWRmaXNoRVRhZ0R4ZS5oPGJyPg0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQ8YnI+DQppbmRleCAwMDAwMDAwMDAwMC4uYzQ0NjU3NDMxMzM8YnI+DQotLS0gL2Rl di9udWxsPGJyPg0KKysrIGIvUmVkZmlzaENsaWVudFBrZy9SZWRmaXNoRVRhZ0R4ZS9SZWRmaXNo RVRhZ0R4ZS5oPGJyPg0KQEAgLTAsMCArMSw3MCBAQDxicj4NCivvu78vKiogQGZpbGU8YnI+DQor Jm5ic3A7IENvbW1vbiBoZWFkZXIgZmlsZSBmb3IgUmVkZmlzaEVUYWdEeGUgZHJpdmVyLjxicj4N Cis8YnI+DQorJm5ic3A7IChDKSBDb3B5cmlnaHQgMjAyMSBIZXdsZXR0IFBhY2thcmQgRW50ZXJw cmlzZSBEZXZlbG9wbWVudCBMUCZsdDtCUiZndDs8YnI+DQorPGJyPg0KKyZuYnNwOyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudDxicj4NCis8YnI+DQorKiovPGJy Pg0KKzxicj4NCisjaWZuZGVmIFJFREZJU0hfRVRBR19EWEVfSF88YnI+DQorI2RlZmluZSBSRURG SVNIX0VUQUdfRFhFX0hfPGJyPg0KKzxicj4NCisjaW5jbHVkZSAmbHQ7VWVmaS5oJmd0Ozxicj4N Cis8YnI+DQorLy88YnI+DQorLy8gTGlicmFyaWVzPGJyPg0KKy8vPGJyPg0KKyNpbmNsdWRlICZs dDtMaWJyYXJ5L0Jhc2VMaWIuaCZndDs8YnI+DQorI2luY2x1ZGUgJmx0O0xpYnJhcnkvQmFzZU1l bW9yeUxpYi5oJmd0Ozxicj4NCisjaW5jbHVkZSAmbHQ7TGlicmFyeS9EZWJ1Z0xpYi5oJmd0Ozxi cj4NCis8YnI+DQorI2luY2x1ZGUgJmx0O0xpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oJmd0 Ozxicj4NCisjaW5jbHVkZSAmbHQ7TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaCZn dDs8YnI+DQorI2luY2x1ZGUgJmx0O0xpYnJhcnkvVWVmaURyaXZlckVudHJ5UG9pbnQuaCZndDs8 YnI+DQorI2luY2x1ZGUgJmx0O0xpYnJhcnkvVWVmaUxpYi5oJmd0Ozxicj4NCisjaW5jbHVkZSAm bHQ7TGlicmFyeS9VZWZpUnVudGltZVNlcnZpY2VzVGFibGVMaWIuaCZndDs8YnI+DQorPGJyPg0K KyNpbmNsdWRlICZsdDtQcm90b2NvbC9FZGtJSVJlZGZpc2hFVGFnUHJvdG9jb2wuaCZndDs8YnI+ DQorPGJyPg0KKyNpbmNsdWRlICZsdDtHdWlkL1ZhcmlhYmxlRm9ybWF0LmgmZ3Q7PGJyPg0KKzxi cj4NCisjZGVmaW5lIEVUQUdfVkFSSUFCTEVfTkFNRSZuYnNwOyZuYnNwOyZuYnNwOyBMJnF1b3Q7 UmVkZmlzaEVUYWcmcXVvdDs8YnI+DQorI2RlZmluZSBJU19FTVBUWV9TVFJJTkcoYSkgKChhKSA9 PSBOVUxMIHx8IChhKVswXSA9PSAnXDAnKTxicj4NCisjZGVmaW5lIEVUQUdfREVCVUdfRU5BQkxF RCZuYnNwOyZuYnNwOyZuYnNwOyAweDAwPGJyPg0KKzxicj4NCisvLzxicj4NCisvLyBEZWZpbml0 aW9uIG9mIFJFREZJU0hfRVRBR19SRUNPUkQ8YnI+DQorLy88YnI+DQordHlwZWRlZiBzdHJ1Y3Qg ezxicj4NCismbmJzcDsgTElTVF9FTlRSWSZuYnNwOyBMaXN0Ozxicj4NCismbmJzcDsgQ0hBUjgm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKlVyaTs8YnI+DQorJm5ic3A7IENI QVI4Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICpFVGFnOzxicj4NCismbmJz cDsgVUlOVE4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgU2l6ZTs8YnI+DQor fSBSRURGSVNIX0VUQUdfUkVDT1JEOzxicj4NCis8YnI+DQorI2RlZmluZSBSRURGSVNIX0VUQUdf UkVDT1JEX0ZST01fTElTVChhKSZuYnNwOyBCQVNFX0NSIChhLCBSRURGSVNIX0VUQUdfUkVDT1JE LCBMaXN0KTxicj4NCis8YnI+DQorLy88YnI+DQorLy8gRGVmaW5pdGlvbiBvZiBSRURGSVNIX0VU QUdfTElTVDxicj4NCisvLzxicj4NCit0eXBlZGVmIHN0cnVjdCB7PGJyPg0KKyZuYnNwOyBMSVNU X0VOVFJZJm5ic3A7Jm5ic3A7Jm5ic3A7IExpc3RoZWFkZXI7PGJyPg0KKyZuYnNwOyBVSU5UTiZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBUb3RhbFNpemU7 PGJyPg0KKyZuYnNwOyBVSU5UTiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBDb3VudDs8YnI+DQorfSBSRURGSVNIX0VUQUdfTElTVDs8YnI+DQorPGJyPg0K Ky8vPGJyPg0KKy8vIERlZmluaXRpb24gb2YgUkVERklTSF9FVEFHX1BSSVZBVEVfREFUQTxicj4N CisvLzxicj4NCit0eXBlZGVmIHN0cnVjdCB7PGJyPg0KKyZuYnNwOyBFRklfSEFORExFJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IEltYWdlSGFuZGxlOzxicj4N CismbmJzcDsgUkVERklTSF9FVEFHX0xJU1QmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgRVRhZ0xpc3Q7PGJyPg0KKyZuYnNwOyBFREtJ SV9SRURGSVNIX0VUQUdfUFJPVE9DT0wgUHJvdG9jb2w7PGJyPg0KKyZuYnNwOyBFRklfU1RSSU5H Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFZhcmlhYmxlTmFt ZTs8YnI+DQorJm5ic3A7IEVGSV9FVkVOVCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyBFdmVudDs8YnI+DQorfSBSRURGSVNIX0VUQUdfUFJJVkFURV9E QVRBOzxicj4NCis8YnI+DQorI2RlZmluZSBSRURGSVNIX0VUQUdfUFJJVkFURV9GUk9NX1RISVMo YSkmbmJzcDsgQkFTRV9DUiAoYSwgUkVERklTSF9FVEFHX1BSSVZBVEVfREFUQSwgUHJvdG9jb2wp PGJyPg0KKzxicj4NCisjZW5kaWY8YnI+DQpkaWZmIC0tZ2l0IGEvUmVkZmlzaENsaWVudFBrZy9S ZWRmaXNoRVRhZ0R4ZS9SZWRmaXNoRVRhZ0R4ZS5jIGIvUmVkZmlzaENsaWVudFBrZy9SZWRmaXNo RVRhZ0R4ZS9SZWRmaXNoRVRhZ0R4ZS5jPGJyPg0KbmV3IGZpbGUgbW9kZSAxMDA2NDQ8YnI+DQpp bmRleCAwMDAwMDAwMDAwMC4uMzQ5MTc1MzQwZDQ8YnI+DQotLS0gL2Rldi9udWxsPGJyPg0KKysr IGIvUmVkZmlzaENsaWVudFBrZy9SZWRmaXNoRVRhZ0R4ZS9SZWRmaXNoRVRhZ0R4ZS5jPGJyPg0K QEAgLTAsMCArMSw3NzQgQEA8YnI+DQor77u/LyoqIEBmaWxlPGJyPg0KKzxicj4NCismbmJzcDsg KEMpIENvcHlyaWdodCAyMDIxIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50 IExQJmx0O0JSJmd0Ozxicj4NCis8YnI+DQorJm5ic3A7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50PGJyPg0KKzxicj4NCisqKi88YnI+DQorPGJyPg0KKyNpbmNs dWRlICZxdW90O1JlZGZpc2hFVGFnRHhlLmgmcXVvdDs8YnI+DQorPGJyPg0KK1JFREZJU0hfRVRB R19QUklWQVRFX0RBVEEmbmJzcDsgKm1SZWRmaXNoRVRhZ1ByaXZhdGUgPSBOVUxMOzxicj4NCis8 YnI+DQorLyoqPGJyPg0KKyZuYnNwOyBSZWxlYXNlIFJFREZJU0hfRVRBR19SRUNPUkQgcmVzb3Vy Y2U8YnI+DQorPGJyPg0KKyZuYnNwOyBAcGFyYW1baW5dJm5ic3A7Jm5ic3A7Jm5ic3A7IFJlY29y ZCZuYnNwOyZuYnNwOyZuYnNwOyBQb2ludGVyIHRvIFJFREZJU0hfRVRBR19SRUNPUkQgaW5zdGFu Y2U8YnI+DQorPGJyPg0KKyZuYnNwOyBAcmV0dmFsIEVGSV9TVUNDRVNTJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IFJFREZJU0hfRVRBR19SRUNPUkQgaXMgcmVsZWFzZWQgc3VjY2Vzc2Z1bGx5Ljxicj4NCismbmJz cDsgQHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVImbmJzcDsmbmJzcDsgUmVjb3JkIGlzIE5V TEw8YnI+DQorPGJyPg0KKyoqLzxicj4NCitFRklfU1RBVFVTPGJyPg0KK1JlbGVhc2VFVGFnUmVj b3JkICg8YnI+DQorJm5ic3A7IElOIFJFREZJU0hfRVRBR19SRUNPUkQgKlJlY29yZDxicj4NCism bmJzcDsgKTxicj4NCit7PGJyPg0KKyZuYnNwOyBpZiAoUmVjb3JkID09IE5VTEwpIHs8YnI+DQor Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7PGJyPg0KKyZu YnNwOyB9PGJyPg0KKzxicj4NCismbmJzcDsgaWYgKFJlY29yZC0mZ3Q7VXJpICE9IE5VTEwpIHs8 YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IEZyZWVQb29sIChSZWNvcmQtJmd0O1VyaSk7PGJyPg0K KyZuYnNwOyB9PGJyPg0KKzxicj4NCismbmJzcDsgaWYgKFJlY29yZC0mZ3Q7RVRhZyAhPSBOVUxM KSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBGcmVlUG9vbCAoUmVjb3JkLSZndDtFVGFnKTs8 YnI+DQorJm5ic3A7IH08YnI+DQorPGJyPg0KKyZuYnNwOyBGcmVlUG9vbCAoUmVjb3JkKTs8YnI+ DQorPGJyPg0KKyZuYnNwOyByZXR1cm4gRUZJX1NVQ0NFU1M7PGJyPg0KK308YnI+DQorPGJyPg0K Ky8qKjxicj4NCismbmJzcDsgQ3JlYXRlIG5ldyBFdGFnIHJlc291cmNlLjxicj4NCis8YnI+DQor Jm5ic3A7IEBwYXJhbVtpbl0mbmJzcDsmbmJzcDsmbmJzcDsgVXJpJm5ic3A7Jm5ic3A7IFRoZSBV Ukkgc3RyaW5nIG1hdGNoaW5nIHRvIHRoaXMgRVRBRy48YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0m bmJzcDsmbmJzcDsmbmJzcDsgRVRhZyZuYnNwOyBFVEFHIHN0cmluZy48YnI+DQorPGJyPg0KKyZu YnNwOyBAcmV0dmFsIFJFREZJU0hfRVRBR19SRUNPUkQgKiZuYnNwOyZuYnNwOyBQb2ludGVyIHRv IG5ld2x5IGNyZWF0ZWQgRVRBRy48YnI+DQorJm5ic3A7IEByZXR2YWwgTlVMTCZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBObyBtZW1vcnkg YXZhaWxhYmxlLjxicj4NCis8YnI+DQorKiovPGJyPg0KK1JFREZJU0hfRVRBR19SRUNPUkQgKjxi cj4NCitOZXdFVGFnUmVjb3JkICg8YnI+DQorJm5ic3A7IElOJm5ic3A7IENIQVI4Jm5ic3A7Jm5i c3A7ICpVcmksPGJyPg0KKyZuYnNwOyBJTiZuYnNwOyBDSEFSOCZuYnNwOyZuYnNwOyAqRVRhZzxi cj4NCismbmJzcDsgKTxicj4NCit7PGJyPg0KKyZuYnNwOyBSRURGSVNIX0VUQUdfUkVDT1JEICpO ZXdSZWNvcmQ7PGJyPg0KKyZuYnNwOyBVSU5UTiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBT aXplOzxicj4NCis8YnI+DQorJm5ic3A7IGlmIChJU19FTVBUWV9TVFJJTkcgKFVyaSkgfHwgSVNf RU1QVFlfU1RSSU5HIChFVGFnKSkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIE5V TEw7PGJyPg0KKyZuYnNwOyB9PGJyPg0KKzxicj4NCismbmJzcDsgTmV3UmVjb3JkID0gQWxsb2Nh dGVaZXJvUG9vbCAoc2l6ZW9mIChSRURGSVNIX0VUQUdfUkVDT1JEKSk7PGJyPg0KKyZuYnNwOyBp ZiAoTmV3UmVjb3JkID09IE5VTEwpIHs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiBO VUxMOzxicj4NCismbmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7IFNpemUgPSBBc2NpaVN0clNp emUgKFVyaSk7PGJyPg0KKyZuYnNwOyBOZXdSZWNvcmQtJmd0O1VyaSA9IEFsbG9jYXRlQ29weVBv b2wgKFNpemUsIFVyaSk7PGJyPg0KKyZuYnNwOyBpZiAoTmV3UmVjb3JkLSZndDtVcmkgPT0gTlVM TCkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgZ290byBPTl9FUlJPUjs8YnI+DQorJm5ic3A7 IH08YnI+DQorPGJyPg0KKyZuYnNwOyBOZXdSZWNvcmQtJmd0O1NpemUgPSBTaXplOzxicj4NCism bmJzcDsgU2l6ZSA9IEFzY2lpU3RyU2l6ZSAoRVRhZyk7PGJyPg0KKyZuYnNwOyBOZXdSZWNvcmQt Jmd0O0VUYWcgPSBBbGxvY2F0ZUNvcHlQb29sIChTaXplLCBFVGFnKTs8YnI+DQorJm5ic3A7IGlm IChOZXdSZWNvcmQtJmd0O0VUYWcgPT0gTlVMTCkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsg Z290byBPTl9FUlJPUjs8YnI+DQorJm5ic3A7IH08YnI+DQorPGJyPg0KKyZuYnNwOyBOZXdSZWNv cmQtJmd0O1NpemUgKz0gU2l6ZTs8YnI+DQorJm5ic3A7IHJldHVybiBOZXdSZWNvcmQ7PGJyPg0K Kzxicj4NCitPTl9FUlJPUjo8YnI+DQorPGJyPg0KKyZuYnNwOyBpZiAoTmV3UmVjb3JkICE9IE5V TEwpIHs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IFJlbGVhc2VFVGFnUmVjb3JkIChOZXdSZWNv cmQpOzxicj4NCismbmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7IHJldHVybiBOVUxMOzxicj4N Cit9PGJyPg0KKzxicj4NCisvKio8YnI+DQorJm5ic3A7IEFkZCBuZXcgRVRBRyBieSBnaXZlbiBV UkkgYW5kIEVUQUcgc3RyaW5nIHRvIHNwZWNpZnkgTGlzdC48YnI+DQorPGJyPg0KKyZuYnNwOyBA cGFyYW1baW5dJm5ic3A7Jm5ic3A7Jm5ic3A7IExpc3QmbmJzcDsgVGFyZ2V0IEVUQUcgbGlzdCB0 byBhZGQuPGJyPg0KKyZuYnNwOyBAcGFyYW1baW5dJm5ic3A7Jm5ic3A7Jm5ic3A7IFVyaSZuYnNw OyZuYnNwOyBUaGUgVVJJIHN0cmluZyBtYXRjaGluZyB0byB0aGlzIEVUQUcuPGJyPg0KKyZuYnNw OyBAcGFyYW1baW5dJm5ic3A7Jm5ic3A7Jm5ic3A7IEVUYWcmbmJzcDsgRVRBRyBzdHJpbmcuPGJy Pg0KKzxicj4NCismbmJzcDsgQHJldHZhbCBFRklfU1VDQ0VTUyZuYnNwOyZuYnNwOyBFVEFHIHJl Y291cmQgaXMgYWRkZWQuPGJyPg0KKyZuYnNwOyBAcmV0dmFsIE90aGVycyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBGYWlsIHRvIGFkZCBFVEFHLjxicj4NCis8YnI+ DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorQWRkRVRhZ1JlY29yZCAoPGJyPg0KKyZuYnNw OyBJTiZuYnNwOyBSRURGSVNIX0VUQUdfTElTVCAqTGlzdCw8YnI+DQorJm5ic3A7IElOJm5ic3A7 IENIQVI4Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICpVcmksPGJyPg0KKyZuYnNwOyBJTiZuYnNwOyBDSEFSOCZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyAqRVRhZzxicj4NCismbmJzcDsgKTxicj4NCit7PGJyPg0KKyZuYnNwOyBS RURGSVNIX0VUQUdfUkVDT1JEICpOZXdSZWNvcmQ7PGJyPg0KKzxicj4NCismbmJzcDsgaWYgKExp c3QgPT0gTlVMTCB8fCBJU19FTVBUWV9TVFJJTkcgKFVyaSkgfHwgSVNfRU1QVFlfU1RSSU5HIChF VGFnKSkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjs8YnI+DQorJm5ic3A7IH08YnI+DQorPGJyPg0KKyZuYnNwOyBOZXdSZWNvcmQgPSBOZXdF VGFnUmVjb3JkIChVcmksIEVUYWcpOzxicj4NCismbmJzcDsgaWYgKE5ld0VUYWdSZWNvcmQgPT0g TlVMTCkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VS Q0VTOzxicj4NCismbmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7IEluc2VydFRhaWxMaXN0ICgm YW1wO0xpc3QtJmd0O0xpc3RoZWFkZXIsICZhbXA7TmV3UmVjb3JkLSZndDtMaXN0KTs8YnI+DQor Jm5ic3A7ICsrTGlzdC0mZ3Q7Q291bnQ7PGJyPg0KKyZuYnNwOyBMaXN0LSZndDtUb3RhbFNpemUg Kz0gTmV3UmVjb3JkLSZndDtTaXplOzxicj4NCis8YnI+DQorJm5ic3A7IHJldHVybiBFRklfU1VD Q0VTUzs8YnI+DQorfTxicj4NCis8YnI+DQorLyoqPGJyPg0KKyZuYnNwOyBEZWxldGUgYW4gRVRB RyBieSBnaXZlbiBFVEFHIGluc3RhbmNlLjxicj4NCis8YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0m bmJzcDsmbmJzcDsmbmJzcDsgTGlzdCZuYnNwOyZuYnNwOyZuYnNwOyBUYXJnZXQgRVRBRyBsaXN0 IHRvIGJlIHJlbW92ZWQuPGJyPg0KKyZuYnNwOyBAcGFyYW1baW5dJm5ic3A7Jm5ic3A7Jm5ic3A7 IFJlY29yZCZuYnNwOyBQb2ludGVyIHRvIHRoZSBpbnN0YW5jZSB0byBiZSBkZWxldGVkLjxicj4N Cis8YnI+DQorJm5ic3A7IEByZXR2YWwgRUZJX1NVQ0NFU1MmbmJzcDsmbmJzcDsgRVRBRyByZWNv dXJkIGlzIHJlbW92ZWQuPGJyPg0KKyZuYnNwOyBAcmV0dmFsIE90aGVycyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBGYWlsIHRvIGFkZCBFVEFHLjxicj4NCis8YnI+ DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorRGVsZXRlRVRhZ1JlY29yZCAoPGJyPg0KKyZu YnNwOyBJTiZuYnNwOyBSRURGSVNIX0VUQUdfTElTVCZuYnNwOyZuYnNwOyAqTGlzdCw8YnI+DQor Jm5ic3A7IElOJm5ic3A7IFJFREZJU0hfRVRBR19SRUNPUkQgKlJlY29yZDxicj4NCismbmJzcDsg KTxicj4NCit7PGJyPg0KKyZuYnNwOyBpZiAoTGlzdCA9PSBOVUxMIHx8IFJlY29yZCA9PSBOVUxM KSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVS Ozxicj4NCismbmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7IFJlbW92ZUVudHJ5TGlzdCAoJmFt cDtSZWNvcmQtJmd0O0xpc3QpOzxicj4NCismbmJzcDsgLS1MaXN0LSZndDtDb3VudDs8YnI+DQor Jm5ic3A7IExpc3QtJmd0O1RvdGFsU2l6ZSAtPSBSZWNvcmQtJmd0O1NpemU7PGJyPg0KKzxicj4N CismbmJzcDsgcmV0dXJuIFJlbGVhc2VFVGFnUmVjb3JkIChSZWNvcmQpOzxicj4NCit9PGJyPg0K Kzxicj4NCisvKio8YnI+DQorJm5ic3A7IFNlYXJjaCBvbiBnaXZlbiBMaXN0SGVhZGVyIGZvciBn aXZlbiBVUkkgc3RyaW5nLjxicj4NCis8YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0mbmJzcDsmbmJz cDsmbmJzcDsgTGlzdEhlYWRlciZuYnNwOyBUYXJnZXQgbGlzdCB0byBzZWFyY2guPGJyPg0KKyZu YnNwOyBAcGFyYW1baW5dJm5ic3A7Jm5ic3A7Jm5ic3A7IFVyaSZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBUYXJnZXQgVVJJIHRvIHNlYXJjaC48YnI+DQor PGJyPg0KKyZuYnNwOyBAcmV0dmFsIFJFREZJU0hfRVRBR19SRUNPUkQmbmJzcDsmbmJzcDsgVGFy Z2V0IEVUQUcgaXMgZm91bmQuPGJyPg0KKyZuYnNwOyBAcmV0dmFsIE5VTEwmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgTm8gRVRBRyB3aXRoIGdpdmVuIFVSSSBp cyBmb3VuZC48YnI+DQorPGJyPg0KKyoqLzxicj4NCitSRURGSVNIX0VUQUdfUkVDT1JEICo8YnI+ DQorRmluZEVUYWdSZWNvcmQgKDxicj4NCismbmJzcDsgSU4mbmJzcDsgTElTVF9FTlRSWSZuYnNw OyAqTGlzdEhlYWRlciw8YnI+DQorJm5ic3A7IElOJm5ic3A7IENIQVI4Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICpVcmk8YnI+DQorJm5ic3A7ICk8YnI+DQorezxicj4NCism bmJzcDsgTElTVF9FTlRSWSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyAqTGlzdDs8YnI+DQorJm5ic3A7IFJFREZJU0hfRVRBR19SRUNPUkQgKlJl Y29yZDs8YnI+DQorPGJyPg0KKyZuYnNwOyBpZiAoSXNMaXN0RW1wdHkgKExpc3RIZWFkZXIpKSB7 PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gTlVMTDs8YnI+DQorJm5ic3A7IH08YnI+ DQorPGJyPg0KKyZuYnNwOyBSZWNvcmQgPSBOVUxMOzxicj4NCismbmJzcDsgTGlzdCA9IEdldEZp cnN0Tm9kZSAoTGlzdEhlYWRlcik7PGJyPg0KKyZuYnNwOyB3aGlsZSAoIUlzTnVsbCAoTGlzdEhl YWRlciwgTGlzdCkpIHs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IFJlY29yZCA9IFJFREZJU0hf RVRBR19SRUNPUkRfRlJPTV9MSVNUIChMaXN0KTs8YnI+DQorPGJyPg0KKyZuYnNwOyZuYnNwOyZu YnNwOyBpZiAoQXNjaWlTdHJDbXAgKFJlY29yZC0mZ3Q7VXJpLCBVcmkpID09IDApIHs8YnI+DQor Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiZuYnNwOyBSZWNvcmQ7PGJyPg0K KyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPg0KKzxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgTGlz dCA9IEdldE5leHROb2RlIChMaXN0SGVhZGVyLCBMaXN0KTs8YnI+DQorJm5ic3A7IH08YnI+DQor PGJyPg0KKyZuYnNwOyByZXR1cm4gTlVMTDs8YnI+DQorfTxicj4NCis8YnI+DQorI2lmIEVUQUdf REVCVUdfRU5BQkxFRDxicj4NCisvKio8YnI+DQorJm5ic3A7IERlYnVnIG91dHB1dCB0aGUgRVRB RyBsaXN0Ljxicj4NCis8YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0mbmJzcDsmbmJzcDsmbmJzcDsg RVRhZ0xpc3QmbmJzcDsgVGFyZ2V0IGxpc3QgdG8gZHVtcDxicj4NCismbmJzcDsgQHBhcmFtW2lu XSZuYnNwOyZuYnNwOyZuYnNwOyBNc2cmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgRGVidWcgbWVzc2FnZSBzdHJpbmcuPGJyPg0KKzxicj4NCismbmJzcDsgQHJldHZhbCBFRklf U1VDQ0VTUyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBEZWJ1ZyBkdW1wIGZpbmlzaGVkLjxicj4NCismbmJzcDsg QHJldHZhbCBFRklfSU5WQUxJRF9QQVJBTUVURVImbmJzcDsmbmJzcDsgRVRhZ0xpc3QgaXMgTlVM TC48YnI+DQorPGJyPg0KKyoqLzxicj4NCitFRklfU1RBVFVTPGJyPg0KK0R1bXBFVGFnTGlzdCAo PGJyPg0KKyZuYnNwOyBJTiZuYnNwOyBSRURGSVNIX0VUQUdfTElTVCZuYnNwOyZuYnNwOyAqRVRh Z0xpc3QsPGJyPg0KKyZuYnNwOyBJTiZuYnNwOyBFRklfU1RSSU5HJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IE1zZzxicj4NCismbmJzcDsgKTxi cj4NCit7PGJyPg0KKyZuYnNwOyBMSVNUX0VOVFJZJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICpMaXN0Ozxicj4NCismbmJzcDsgUkVERklTSF9F VEFHX1JFQ09SRCAqUmVjb3JkOzxicj4NCis8YnI+DQorJm5ic3A7IGlmIChFVGFnTGlzdCA9PSBO VUxMKSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1F VEVSOzxicj4NCismbmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7IGlmICghSVNfRU1QVFlfU1RS SU5HIChNc2cpKSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBERUJVRyAoKERFQlVHX0VSUk9S LCAmcXVvdDslc1xuJnF1b3Q7LCBNc2cpKTs8YnI+DQorJm5ic3A7IH08YnI+DQorPGJyPg0KKyZu YnNwOyBpZiAoSXNMaXN0RW1wdHkgKCZhbXA7RVRhZ0xpc3QtJmd0O0xpc3RoZWFkZXIpKSB7PGJy Pg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBERUJVRyAoKERFQlVHX0lORk8sICZxdW90O0VUYWcgbGlz dCBpcyBlbXB0eVxuJnF1b3Q7KSk7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gRUZJ X05PVF9GT1VORDs8YnI+DQorJm5ic3A7IH08YnI+DQorPGJyPg0KKyZuYnNwOyBERUJVRyAoKERF QlVHX0lORk8sICZxdW90O0NvdW50OiAlZCBUb3RhbCBTaXplOiAlZFxuJnF1b3Q7LCBFVGFnTGlz dC0mZ3Q7Q291bnQsIEVUYWdMaXN0LSZndDtUb3RhbFNpemUpKTs8YnI+DQorJm5ic3A7IFJlY29y ZCA9IE5VTEw7PGJyPg0KKyZuYnNwOyBMaXN0ID0gR2V0Rmlyc3ROb2RlICgmYW1wO0VUYWdMaXN0 LSZndDtMaXN0aGVhZGVyKTs8YnI+DQorJm5ic3A7IHdoaWxlICghSXNOdWxsICgmYW1wO0VUYWdM aXN0LSZndDtMaXN0aGVhZGVyLCBMaXN0KSkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgUmVj b3JkID0gUkVERklTSF9FVEFHX1JFQ09SRF9GUk9NX0xJU1QgKExpc3QpOzxicj4NCis8YnI+DQor Jm5ic3A7Jm5ic3A7Jm5ic3A7IERFQlVHICgoREVCVUdfSU5GTywgJnF1b3Q7RVRhZzogJWEgVXJp OiAlYSBTaXplOiAlZFxuJnF1b3Q7LCBSZWNvcmQtJmd0O0VUYWcsIFJlY29yZC0mZ3Q7VXJpLCBS ZWNvcmQtJmd0O1NpemUpKTs8YnI+DQorPGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBMaXN0ID0g R2V0TmV4dE5vZGUgKCZhbXA7RVRhZ0xpc3QtJmd0O0xpc3RoZWFkZXIsIExpc3QpOzxicj4NCism bmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7IHJldHVybiBFRklfU1VDQ0VTUzs8YnI+DQorfTxi cj4NCis8YnI+DQorLyoqPGJyPg0KKyZuYnNwOyBEZWJ1ZyBvdXRwdXQgcmF3IGRhdGEgYnVmZmVy Ljxicj4NCis8YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0mbmJzcDsmbmJzcDsmbmJzcDsgQnVmZmVy Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IERlYnVnIG91dHB1dCBkYXRhIGJ1ZmZlci48 YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0mbmJzcDsmbmJzcDsmbmJzcDsgQnVmZmVyU2l6ZSZuYnNw OyBUaGUgc2l6ZSBvZiBCdWZmZXIgaW4gYnl0ZS48YnI+DQorPGJyPg0KKyZuYnNwOyBAcmV0dmFs IEVGSV9TVUNDRVNTJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IERlYnVnIGR1bXAgZmluaXNoZWQuPGJyPg0KKyZu YnNwOyBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiZuYnNwOyZuYnNwOyBCdWZmZXIgaXMg TlVMTC48YnI+DQorPGJyPg0KKyoqLzxicj4NCitFRklfU1RBVFVTPGJyPg0KK0R1bXBSYXdCdWZm ZXIgKDxicj4NCismbmJzcDsgSU4mbmJzcDsgQ0hBUjgmbmJzcDsmbmJzcDsmbmJzcDsgKkJ1ZmZl ciw8YnI+DQorJm5ic3A7IElOJm5ic3A7IFVJTlROJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IEJ1 ZmZlclNpemU8YnI+DQorJm5ic3A7ICk8YnI+DQorezxicj4NCismbmJzcDsgVUlOVE4mbmJzcDsg SW5kZXg7PGJyPg0KKzxicj4NCismbmJzcDsgaWYgKEJ1ZmZlciA9PSBOVUxMKSB7PGJyPg0KKyZu YnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOzxicj4NCismbmJz cDsgfTxicj4NCis8YnI+DQorJm5ic3A7IEluZGV4ID0gMDs8YnI+DQorPGJyPg0KKyZuYnNwOyBE RUJVRyAoKERFQlVHX0VSUk9SLCAmcXVvdDtCdWZmZXIgc2l6ZTogJWRcbiZxdW90OywgQnVmZmVy U2l6ZSkpOzxicj4NCismbmJzcDsgd2hpbGUgKEJ1ZmZlcltJbmRleF0gIT0gJ1wwJykgezxicj4N CismbmJzcDsmbmJzcDsmbmJzcDsgREVCVUcgKChERUJVR19FUlJPUiwgJnF1b3Q7KCVkKSAlYyAm cXVvdDssIChJbmRleCArIDEpLCBCdWZmZXJbSW5kZXhdKSk7PGJyPg0KKzxicj4NCismbmJzcDsm bmJzcDsmbmJzcDsgKytJbmRleDs8YnI+DQorJm5ic3A7IH08YnI+DQorJm5ic3A7IERFQlVHICgo REVCVUdfRVJST1IsICZxdW90O1xuJnF1b3Q7KSk7PGJyPg0KKzxicj4NCismbmJzcDsgcmV0dXJu IEVGSV9TVUNDRVNTOzxicj4NCit9PGJyPg0KKyNlbmRpZjxicj4NCis8YnI+DQorLyoqPGJyPg0K KyZuYnNwOyBSZWxlYXNlIGFsbCBFVGFnIGZyb20gbGlzdC48YnI+DQorPGJyPg0KKyZuYnNwOyBA cGFyYW1baW5dJm5ic3A7Jm5ic3A7Jm5ic3A7IEVUYWdMaXN0Jm5ic3A7Jm5ic3A7Jm5ic3A7IFRo ZSBsaXN0IHRvIGJlIHJlbGVhc2VkLjxicj4NCis8YnI+DQorJm5ic3A7IEByZXR2YWwgRUZJX1NV Q0NFU1MmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgQWxsIGV0YWcgaXMgcmVsZWFzZWQuPGJyPg0KKyZuYnNwOyBA cmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiZuYnNwOyZuYnNwOyBFVGFnTGlzdCBpcyBOVUxM Ljxicj4NCis8YnI+DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorUmVsZWFzZUVUYWdMaXN0 ICg8YnI+DQorJm5ic3A7IElOJm5ic3A7IFJFREZJU0hfRVRBR19MSVNUJm5ic3A7Jm5ic3A7ICpF VGFnTGlzdDxicj4NCismbmJzcDsgKTxicj4NCit7PGJyPg0KKyZuYnNwOyBMSVNUX0VOVFJZJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICpMaXN0 Ozxicj4NCismbmJzcDsgTElTVF9FTlRSWSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqTmV4dDs8YnI+DQorJm5ic3A7IFJFREZJU0hfRVRBR19S RUNPUkQgKlJlY29yZDs8YnI+DQorPGJyPg0KKyZuYnNwOyBpZiAoRVRhZ0xpc3QgPT0gTlVMTCkg ezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjs8 YnI+DQorJm5ic3A7IH08YnI+DQorPGJyPg0KKyZuYnNwOyBpZiAoSXNMaXN0RW1wdHkgKCZhbXA7 RVRhZ0xpc3QtJmd0O0xpc3RoZWFkZXIpKSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1 cm4gRUZJX1NVQ0NFU1M7PGJyPg0KKyZuYnNwOyB9PGJyPg0KKzxicj4NCismbmJzcDsgUmVjb3Jk ID0gTlVMTDs8YnI+DQorJm5ic3A7IE5leHQgPSBOVUxMOzxicj4NCismbmJzcDsgTGlzdCA9IEdl dEZpcnN0Tm9kZSAoJmFtcDtFVGFnTGlzdC0mZ3Q7TGlzdGhlYWRlcik7PGJyPg0KKyZuYnNwOyB3 aGlsZSAoIUlzTnVsbCAoJmFtcDtFVGFnTGlzdC0mZ3Q7TGlzdGhlYWRlciwgTGlzdCkpIHs8YnI+ DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IFJlY29yZCA9IFJFREZJU0hfRVRBR19SRUNPUkRfRlJPTV9M SVNUIChMaXN0KTs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IE5leHQgPSBHZXROZXh0Tm9kZSAo JmFtcDtFVGFnTGlzdC0mZ3Q7TGlzdGhlYWRlciwgTGlzdCk7PGJyPg0KKzxicj4NCismbmJzcDsm bmJzcDsmbmJzcDsgRGVsZXRlRVRhZ1JlY29yZCAoRVRhZ0xpc3QsIFJlY29yZCk7PGJyPg0KKzxi cj4NCismbmJzcDsmbmJzcDsmbmJzcDsgTGlzdCA9IE5leHQ7PGJyPg0KKyZuYnNwOyB9PGJyPg0K Kzxicj4NCismbmJzcDsgcmV0dXJuIEVGSV9TVUNDRVNTOzxicj4NCit9PGJyPg0KKzxicj4NCisv Kio8YnI+DQorJm5ic3A7IFNhdmUgZXRhZyBpbiBsaXN0IHRvIFVFRkkgdmFyaWFibGUuPGJyPg0K Kzxicj4NCismbmJzcDsgQHBhcmFtW2luXSZuYnNwOyZuYnNwOyZuYnNwOyBFVGFnTGlzdCZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBUaGUgbGlzdCB0byBiZSBzYXZlZC48YnI+DQorJm5i c3A7IEBwYXJhbVtpbl0mbmJzcDsmbmJzcDsmbmJzcDsgVmFyaWFibGVOYW1lJm5ic3A7IFRoZSBV RUZJIHZhcmlhYmxlIG5hbWUuPGJyPg0KKzxicj4NCismbmJzcDsgQHJldHZhbCBFRklfU1VDQ0VT UyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyBBbGwgZXRhZyBpcyBzYXZlZC48YnI+DQorJm5ic3A7IEByZXR2YWwg RUZJX0lOVkFMSURfUEFSQU1FVEVSJm5ic3A7Jm5ic3A7IFZhcmlhYmxlTmFtZSBvciBFVGFnTGlz dCBpcyBOVUxMLjxicj4NCis8YnI+DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorU2F2ZUVU YWdMaXN0ICg8YnI+DQorJm5ic3A7IElOJm5ic3A7IFJFREZJU0hfRVRBR19MSVNUJm5ic3A7Jm5i c3A7ICpFVGFnTGlzdCw8YnI+DQorJm5ic3A7IElOJm5ic3A7IEVGSV9TVFJJTkcmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgVmFyaWFibGVOYW1l PGJyPg0KKyZuYnNwOyApPGJyPg0KK3s8YnI+DQorJm5ic3A7IExJU1RfRU5UUlkmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKkxpc3Q7PGJyPg0K KyZuYnNwOyBSRURGSVNIX0VUQUdfUkVDT1JEICpSZWNvcmQ7PGJyPg0KKyZuYnNwOyBDSEFSOCZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqVmFyRGF0YTs8YnI+DQorJm5ic3A7IFZPSUQmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKkRhdGE7PGJyPg0KKyZuYnNwOyBDSEFSOCZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqU2Vla2VyOzxicj4NCismbmJzcDsgVUlOVE4mbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgVmFyU2l6ZTs8YnI+DQorJm5ic3A7IFVJTlROJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFN0clNpemU7PGJyPg0KKyZuYnNwOyBFRklfU1RBVFVTJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFN0YXR1 czs8YnI+DQorPGJyPg0KKyZuYnNwOyBpZiAoRVRhZ0xpc3QgPT0gTlVMTCB8fCBJU19FTVBUWV9T VFJJTkcgKFZhcmlhYmxlTmFtZSkpIHs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiBF RklfSU5WQUxJRF9QQVJBTUVURVI7PGJyPg0KKyZuYnNwOyB9PGJyPg0KKzxicj4NCismbmJzcDsg aWYgKElzTGlzdEVtcHR5ICgmYW1wO0VUYWdMaXN0LSZndDtMaXN0aGVhZGVyKSkgezxicj4NCism bmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIEVGSV9TVUNDRVNTOzxicj4NCismbmJzcDsgfTxicj4N Cis8YnI+DQorJm5ic3A7IC8vPGJyPg0KKyZuYnNwOyAvLyBDYWN1bGF0ZSB0aGUgdG90YWwgc2l6 ZSB3ZSBuZWVkIHRvIGtlZXAgRVRhZyBsaXN0Ljxicj4NCismbmJzcDsgLy88YnI+DQorJm5ic3A7 IFZhclNpemUgPSBFVGFnTGlzdC0mZ3Q7VG90YWxTaXplICsgMTsgLy8gdGVybWluYXRvciBjaGFy YWN0ZXI8YnI+DQorJm5ic3A7IFZhckRhdGEgPSBBbGxvY2F0ZVplcm9Qb29sIChWYXJTaXplKTs8 YnI+DQorJm5ic3A7IGlmIChWYXJEYXRhID09IE5VTEwpIHs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5i c3A7IHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzs8YnI+DQorJm5ic3A7IH08YnI+DQorPGJy Pg0KKyZuYnNwOyBTZWVrZXIgPSBWYXJEYXRhOzxicj4NCismbmJzcDsgUmVjb3JkID0gTlVMTDs8 YnI+DQorJm5ic3A7IExpc3QgPSBHZXRGaXJzdE5vZGUgKCZhbXA7RVRhZ0xpc3QtJmd0O0xpc3Ro ZWFkZXIpOzxicj4NCismbmJzcDsgd2hpbGUgKCFJc051bGwgKCZhbXA7RVRhZ0xpc3QtJmd0O0xp c3RoZWFkZXIsIExpc3QpKSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBSZWNvcmQgPSBSRURG SVNIX0VUQUdfUkVDT1JEX0ZST01fTElTVCAoTGlzdCk7PGJyPg0KKzxicj4NCismbmJzcDsmbmJz cDsmbmJzcDsgU3RyU2l6ZSA9IEFzY2lpU3RyU2l6ZSAoUmVjb3JkLSZndDtVcmkpOzxicj4NCism bmJzcDsmbmJzcDsmbmJzcDsgQ29weU1lbSAoU2Vla2VyLCBSZWNvcmQtJmd0O1VyaSwgU3RyU2l6 ZSk7PGJyPg0KKzxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgU2Vla2VyICs9IChTdHJTaXplIC0g MSk7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyAqU2Vla2VyID0gJ3wnOzxicj4NCismbmJzcDsm bmJzcDsmbmJzcDsgKytTZWVrZXI7PGJyPg0KKzxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgU3Ry U2l6ZSA9IEFzY2lpU3RyU2l6ZSAoUmVjb3JkLSZndDtFVGFnKTs8YnI+DQorJm5ic3A7Jm5ic3A7 Jm5ic3A7IENvcHlNZW0gKFNlZWtlciwgUmVjb3JkLSZndDtFVGFnLCBTdHJTaXplKTs8YnI+DQor PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBTZWVrZXIgKz0gKFN0clNpemUgLSAxKTs8YnI+DQor Jm5ic3A7Jm5ic3A7Jm5ic3A7ICpTZWVrZXIgPSAnXG4nOzxicj4NCis8YnI+DQorJm5ic3A7Jm5i c3A7Jm5ic3A7ICsrU2Vla2VyOzxicj4NCis8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IExpc3Qg PSBHZXROZXh0Tm9kZSAoJmFtcDtFVGFnTGlzdC0mZ3Q7TGlzdGhlYWRlciwgTGlzdCk7Ozxicj4N CismbmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7ICpTZWVrZXIgPSAnXDAnOzxicj4NCis8YnI+ DQorI2lmIEVUQUdfREVCVUdfRU5BQkxFRDxicj4NCismbmJzcDsgRHVtcFJhd0J1ZmZlciAoVmFy RGF0YSwgVmFyU2l6ZSk7PGJyPg0KKyNlbmRpZjxicj4NCis8YnI+DQorJm5ic3A7IEFTU0VSVCAo KChVSU5UTilTZWVrZXIgLSAoVUlOVE4pVmFyRGF0YSArIDEpID09IFZhclNpemUpOzxicj4NCis8 YnI+DQorJm5ic3A7IC8vPGJyPg0KKyZuYnNwOyAvLyBDaGVjayBpZiB2YXJpYWJsZSBleGlzdHMg YWxyZWFkeS4gSWYgeWVzLCByZW1vdmUgaXQgZmlyc3QuPGJyPg0KKyZuYnNwOyAvLzxicj4NCism bmJzcDsgU3RhdHVzID0gR2V0VmFyaWFibGUyICg8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFZhcmlh YmxlTmFtZSw8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZhbXA7Z0VmaUNhbGxlcklkR3VpZCw8YnI+ DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IChWT0lEICopJmFtcDtEYXRhLDxicj4NCismbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgTlVMTDxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKTs8YnI+DQorJm5ic3A7IGlmICghRUZJX0VS Uk9SIChTdGF0dXMpKSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBGcmVlUG9vbCAoRGF0YSk7 PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBnUlQtJmd0O1NldFZhcmlhYmxlIChWYXJpYWJsZU5h bWUsICZhbXA7Z0VmaUNhbGxlcklkR3VpZCwgVkFSSUFCTEVfQVRUUklCVVRFX05WX0JTLCAwLCBO VUxMKTs8YnI+DQorJm5ic3A7IH08YnI+DQorPGJyPg0KKzxicj4NCismbmJzcDsgcmV0dXJuIGdS VC0mZ3Q7U2V0VmFyaWFibGUgKFZhcmlhYmxlTmFtZSwgJmFtcDtnRWZpQ2FsbGVySWRHdWlkLCBW QVJJQUJMRV9BVFRSSUJVVEVfTlZfQlMsIFZhclNpemUsIChWT0lEICopVmFyRGF0YSk7PGJyPg0K K308YnI+DQorPGJyPg0KKy8qKjxicj4NCismbmJzcDsgUmVhZCBldGFnIGZyb20gVUVGSSB2YXJp YWJsZSBpZiBpdCBleGlzdHMuPGJyPg0KKzxicj4NCismbmJzcDsgQHBhcmFtW2luXSZuYnNwOyZu YnNwOyZuYnNwOyBFVGFnTGlzdCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBUaGUgbGlz dCB0byBiZSBsb2FkZWQuPGJyPg0KKyZuYnNwOyBAcGFyYW1baW5dJm5ic3A7Jm5ic3A7Jm5ic3A7 IFZhcmlhYmxlTmFtZSZuYnNwOyBUaGUgVUVGSSB2YXJpYWJsZSBuYW1lLjxicj4NCis8YnI+DQor Jm5ic3A7IEByZXR2YWwgRUZJX1NVQ0NFU1MmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgQWxsIGV0YWcgaXMgcmVh ZCBzdWNjZXNzZnVsbHkuPGJyPg0KKyZuYnNwOyBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRF UiZuYnNwOyZuYnNwOyBWYXJpYWJsZU5hbWUgb3IgRVRhZ0xpc3QgaXMgTlVMTC48YnI+DQorJm5i c3A7IEByZXR2YWwgRUZJX05PVF9GT1VORCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBObyBldGFnIGlzIGZvdW5kIG9uIFVFRkkgdmFy aWFibGUuPGJyPg0KKzxicj4NCisqKi88YnI+DQorRUZJX1NUQVRVUzxicj4NCitJbml0aWFsRVRh Z0xpc3QgKDxicj4NCismbmJzcDsgSU4mbmJzcDsgUkVERklTSF9FVEFHX0xJU1QmbmJzcDsmbmJz cDsgKkVUYWdMaXN0LDxicj4NCismbmJzcDsgSU4mbmJzcDsgRUZJX1NUUklORyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBWYXJpYWJsZU5hbWU8 YnI+DQorJm5ic3A7ICk8YnI+DQorezxicj4NCismbmJzcDsgQ0hBUjgmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgKlZhckRhdGE7PGJyPg0KKyZuYnNwOyBDSEFSOCZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyAqVXJpUG9pbnRlcjs8YnI+DQorJm5ic3A7IENIQVI4Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICpFVGFnUG9pbnRlcjs8YnI+DQorJm5ic3A7IENIQVI4Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICpTZWVrZXI7PGJyPg0KKyZuYnNwOyBVSU5UTiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyBWYXJpYWJsZVNpemU7PGJyPg0KKyZuYnNwOyBFRklfU1RBVFVTIFN0YXR1czs8YnI+DQor PGJyPg0KKyZuYnNwOyBpZiAoRVRhZ0xpc3QgPT0gTlVMTCB8fCBJU19FTVBUWV9TVFJJTkcgKFZh cmlhYmxlTmFtZSkpIHs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IHJldHVybiBFRklfSU5WQUxJ RF9QQVJBTUVURVI7PGJyPg0KKyZuYnNwOyB9PGJyPg0KKzxicj4NCismbmJzcDsgLy88YnI+DQor Jm5ic3A7IC8vIENoZWNrIGlmIHZhcmlhYmxlIGV4aXN0cyBhbHJlYWR5Ljxicj4NCismbmJzcDsg Ly88YnI+DQorJm5ic3A7IFN0YXR1cyA9IEdldFZhcmlhYmxlMiAoPGJyPg0KKyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyBWYXJpYWJsZU5hbWUsPGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmYW1wO2dFZmlDYWxsZXJJ ZEd1aWQsPGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAoVk9JRCAqKSZhbXA7VmFyRGF0YSw8YnI+DQor Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7ICZhbXA7VmFyaWFibGVTaXplPGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAp Ozxicj4NCismbmJzcDsgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgezxicj4NCismbmJzcDsmbmJz cDsmbmJzcDsgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7PGJyPg0KKyZuYnNwOyB9PGJyPg0KKzxicj4N CismbmJzcDsgU2Vla2VyID0gVmFyRGF0YTs8YnI+DQorJm5ic3A7IFVyaVBvaW50ZXIgPSBWYXJE YXRhOzxicj4NCismbmJzcDsgRVRhZ1BvaW50ZXIgPSBWYXJEYXRhOzxicj4NCismbmJzcDsgd2hp bGUgKCpTZWVrZXIgIT0gJ1wwJykgezxicj4NCis8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IC8v PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyAvLyBGaW5kIFVSSTxicj4NCismbmJzcDsmbmJzcDsm bmJzcDsgLy88YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IFNlZWtlciA9IEFzY2lpU3RyU3RyIChV cmlQb2ludGVyLCAmcXVvdDt8JnF1b3Q7KTs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChT ZWVrZXIgPT0gTlVMTCkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgREVC VUcgKChERUJVR19FUlJPUiwgJnF1b3Q7JWEsIGRhdGEgY29ycnVwdGVkXG4mcXVvdDssIF9fRlVO Q1RJT05fXykpOzxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgU3RhdHVzID0g RUZJX0RFVklDRV9FUlJPUjs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGdv dG8gT05fRVJST1I7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPg0KKzxicj4NCismbmJz cDsmbmJzcDsmbmJzcDsgKlNlZWtlciA9ICdcMCc7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBF VGFnUG9pbnRlciA9ICsrU2Vla2VyOzxicj4NCis8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IC8v PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyAvLyBGaW5kIEVUQUc8YnI+DQorJm5ic3A7Jm5ic3A7 Jm5ic3A7IC8vPGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBTZWVrZXIgPSBBc2NpaVN0clN0ciAo RVRhZ1BvaW50ZXIsICZxdW90O1xuJnF1b3Q7KTs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IGlm IChTZWVrZXIgPT0gTlVMTCkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg REVCVUcgKChERUJVR19FUlJPUiwgJnF1b3Q7JWEsIGRhdGEgY29ycnVwdGVkXG4mcXVvdDssIF9f RlVOQ1RJT05fXykpOzxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgU3RhdHVz ID0gRUZJX0RFVklDRV9FUlJPUjs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IGdvdG8gT05fRVJST1I7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPg0KKzxicj4NCism bmJzcDsmbmJzcDsmbmJzcDsgKlNlZWtlciA9ICdcMCc7PGJyPg0KKzxicj4NCismbmJzcDsmbmJz cDsmbmJzcDsgQWRkRVRhZ1JlY29yZCAoRVRhZ0xpc3QsIFVyaVBvaW50ZXIsIEVUYWdQb2ludGVy KTs8YnI+DQorPGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBVcmlQb2ludGVyID0gKytTZWVrZXI7 PGJyPg0KKyZuYnNwOyB9PGJyPg0KKzxicj4NCisjaWYgRVRBR19ERUJVR19FTkFCTEVEPGJyPg0K KyZuYnNwOyBEdW1wRVRhZ0xpc3QgKEVUYWdMaXN0LCBMJnF1b3Q7SW5pdGlhbCBFVGFnIExpc3Qg ZnJvbSBWYXJpYWJsZSZxdW90Oyk7PGJyPg0KKyNlbmRpZjxicj4NCis8YnI+DQorJm5ic3A7IFN0 YXR1cyA9IEVGSV9TVUNDRVNTOzxicj4NCis8YnI+DQorT05fRVJST1I6PGJyPg0KKzxicj4NCism bmJzcDsgRnJlZVBvb2wgKFZhckRhdGEpOzxicj4NCis8YnI+DQorJm5ic3A7IHJldHVybiBTdGF0 dXM7PGJyPg0KK308YnI+DQorPGJyPg0KKy8qKjxicj4NCismbmJzcDsgR2V0IEVUYWcgc3RyaW5n IGJ5IGdpdmVuIFVSSTxicj4NCis8YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0mbmJzcDsmbmJzcDsg VGhpcyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyBQb2ludGVyIHRvIEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTCBpbnN0YW5jZS48YnI+ DQorJm5ic3A7IEBwYXJhbVtpbl0mbmJzcDsmbmJzcDsgVXJpJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFRhcmdldCBVUkkgdG8g c2VhcmNoLjxicj4NCismbmJzcDsgQHBhcmFtW291dF0mbmJzcDsgRVRhZyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBUaGUgRVRhZyBzdHJp bmcgdG8gY29ycmVzcG9uZGluZyBVUkkuPGJyPg0KKzxicj4NCismbmJzcDsgQHJldHZhbCBFRklf U1VDQ0VTUyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBUaGUg RVRhZyBpcyBmb3VuZCBzdWNjZXNzZnVsbHkuPGJyPg0KKyZuYnNwOyBAcmV0dmFsIEVGSV9JTlZB TElEX1BBUkFNRVRFUiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBJ bnZhbGlkIHBhcmFtZXRlciBpcyBnaXZlbi48YnI+DQorPGJyPg0KKyoqLzxicj4NCitFRklfU1RB VFVTPGJyPg0KK1JlZGZpc2hFVGFnR2V0ICg8YnI+DQorJm5ic3A7IElOJm5ic3A7IEVES0lJX1JF REZJU0hfRVRBR19QUk9UT0NPTCAqVGhpcyw8YnI+DQorJm5ic3A7IElOJm5ic3A7IENIQVI4Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICpVcmksPGJyPg0KKyZuYnNwOyBPVVQgQ0hBUjgmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKipFVGFnPGJyPg0KKyZuYnNw OyApPGJyPg0KK3s8YnI+DQorJm5ic3A7IFJFREZJU0hfRVRBR19SRUNPUkQmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKlRhcmdldDs8YnI+DQorJm5ic3A7IFJFREZJU0hfRVRB R19QUklWQVRFX0RBVEEgKlByaXZhdGU7PGJyPg0KKzxicj4NCismbmJzcDsgaWYgKFRoaXMgPT0g TlVMTCB8fCBJU19FTVBUWV9TVFJJTkcgKFVyaSkgfHwgRVRhZyA9PSBOVUxMKSB7PGJyPg0KKyZu YnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOzxicj4NCismbmJz cDsgfTxicj4NCis8YnI+DQorJm5ic3A7IFByaXZhdGUgPSBSRURGSVNIX0VUQUdfUFJJVkFURV9G Uk9NX1RISVMgKFRoaXMpOzxicj4NCis8YnI+DQorJm5ic3A7ICpFVGFnID0gTlVMTDs8YnI+DQor PGJyPg0KKyZuYnNwOyBUYXJnZXQgPSBGaW5kRVRhZ1JlY29yZCAoJmFtcDtQcml2YXRlLSZndDtF VGFnTGlzdC5MaXN0aGVhZGVyLCBVcmkpOzxicj4NCismbmJzcDsgaWYgKFRhcmdldCA9PSBOVUxM KSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gRUZJX05PVF9GT1VORDs8YnI+DQor Jm5ic3A7IH08YnI+DQorPGJyPg0KKyZuYnNwOyAqRVRhZyA9IEFsbG9jYXRlQ29weVBvb2wgKEFz Y2lpU3RyU2l6ZSAoVGFyZ2V0LSZndDtFVGFnKSwgVGFyZ2V0LSZndDtFVGFnKTs8YnI+DQorPGJy Pg0KKyZuYnNwOyByZXR1cm4gRUZJX1NVQ0NFU1M7PGJyPg0KK308YnI+DQorPGJyPg0KKzxicj4N CisvKio8YnI+DQorJm5ic3A7IEtlZXAgRVRhZyBzdHJpbmcgd2hpY2ggbWFwcyB0byBnaXZlbiBV cmkuPGJyPg0KKzxicj4NCismbmJzcDsgQHBhcmFtW2luXSZuYnNwOyZuYnNwOyBUaGlzJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFBvaW50ZXIgdG8gRURLSUlfUkVERklTSF9FVEFH X1BST1RPQ09MIGluc3RhbmNlLjxicj4NCismbmJzcDsgQHBhcmFtW2luXSZuYnNwOyZuYnNwOyBV cmkmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgVGhlIHRhcmdldCBVcmkg d2hpY2ggcmVsYXRlZCB0byBFVGFnLjxicj4NCismbmJzcDsgQHBhcmFtW2luXSZuYnNwOyZuYnNw OyBFVGFnJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFRoZSBFVGFnIHRvIGFkZC4g SWYgRVRhZyBpcyBOVUxMLCB0aGUgcmVjb3JkIG9mIGNvcnJlc3Bvb25kaW5nIFVSSSB3aWxsIGJl IHJlbW92ZWQuPGJyPg0KKzxicj4NCismbmJzcDsgQHJldHZhbCBFRklfU1VDQ0VTUyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyBUaGlzIGhhbmRsZXIgaGFzIGJlZW4gc3RvcGVkIHN1Y2Nlc3NmdWxseS48 YnI+DQorJm5ic3A7IEByZXR2YWwgT3RoZXJzJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFNvbWUgZXJyb3IgaGFwcGVuZWQuPGJyPg0KKzxicj4NCisq Ki88YnI+DQorRUZJX1NUQVRVUzxicj4NCitSZWRmaXNoRVRhZ1NldCAoPGJyPg0KKyZuYnNwOyBJ TiZuYnNwOyBFREtJSV9SRURGSVNIX0VUQUdfUFJPVE9DT0wmbmJzcDsgKlRoaXMsPGJyPg0KKyZu YnNwOyBJTiZuYnNwOyBDSEFSOCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqVXJpLDxicj4NCism bmJzcDsgSU4mbmJzcDsgQ0hBUjgmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKkVUYWcmbmJzcDsg T1BUSU9OQUw8YnI+DQorJm5ic3A7ICk8YnI+DQorezxicj4NCismbmJzcDsgUkVERklTSF9FVEFH X1JFQ09SRCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqVGFyZ2V0Ozxicj4N CismbmJzcDsgUkVERklTSF9FVEFHX1BSSVZBVEVfREFUQSAqUHJpdmF0ZTs8YnI+DQorJm5ic3A7 IEVGSV9TVEFUVVMmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgU3RhdHVzOzxicj4N Cis8YnI+DQorJm5ic3A7IGlmIChUaGlzID09IE5VTEwgfHwgSVNfRU1QVFlfU1RSSU5HIChVcmkp KSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVS Ozxicj4NCismbmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7IFByaXZhdGUgPSBSRURGSVNIX0VU QUdfUFJJVkFURV9GUk9NX1RISVMgKFRoaXMpOzxicj4NCis8YnI+DQorJm5ic3A7IFN0YXR1cyA9 IEVGSV9OT1RfRk9VTkQ7PGJyPg0KKyZuYnNwOyBUYXJnZXQgPSBGaW5kRVRhZ1JlY29yZCAoJmFt cDtQcml2YXRlLSZndDtFVGFnTGlzdC5MaXN0aGVhZGVyLCBVcmkpOzxicj4NCismbmJzcDsgaWYg KFRhcmdldCAhPSBOVUxMKSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyAvLzxicj4NCismbmJz cDsmbmJzcDsmbmJzcDsgLy8gUmVtb3ZlIG9sZCBvbmUgYW5kIGNyZWF0ZSBuZXcgb25lLjxicj4N CismbmJzcDsmbmJzcDsmbmJzcDsgLy88YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IFN0YXR1cyA9 IERlbGV0ZUVUYWdSZWNvcmQgKCZhbXA7UHJpdmF0ZS0mZ3Q7RVRhZ0xpc3QsIFRhcmdldCk7PGJy Pg0KKyZuYnNwOyB9PGJyPg0KKzxicj4NCismbmJzcDsgLy88YnI+DQorJm5ic3A7IC8vIFdoZW4g RVRhZyBpcyBOVUxMLCBpdCBtZWFucyB0aGF0IHdlIHdhbnQgdG8gcmVtb3YgdGhpcyByZWNvcmQu PGJyPg0KKyZuYnNwOyAvLzxicj4NCismbmJzcDsgaWYgKEVUYWcgPT0gTlVMTCkgezxicj4NCism bmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIFN0YXR1czs8YnI+DQorJm5ic3A7IH08YnI+DQorPGJy Pg0KKyZuYnNwOyByZXR1cm4gQWRkRVRhZ1JlY29yZCAoJmFtcDtQcml2YXRlLSZndDtFVGFnTGlz dCwgVXJpLCBFVGFnKTs8YnI+DQorfTxicj4NCis8YnI+DQorLyoqPGJyPg0KKyZuYnNwOyBSZWZy ZXNoIHRoZSBFVGFnIGRhdGFiYXNlIGFuZCBzYXZlIGRhdGFiYXNlIHRvIHZhcmlhYmxlLjxicj4N Cis8YnI+DQorJm5ic3A7IEBwYXJhbVtpbl0mbmJzcDsmbmJzcDsgVGhpcyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyBQb2ludGVyIHRvIEVES0lJX1JFREZJU0hfRVRBR19QUk9UT0NP TCBpbnN0YW5jZS48YnI+DQorPGJyPg0KKyZuYnNwOyBAcmV0dmFsIEVGSV9TVUNDRVNTJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IFRoaXMgaGFuZGxlciBoYXMgYmVlbiBzdG9wZWQgc3VjY2Vzc2Z1bGx5 Ljxicj4NCismbmJzcDsgQHJldHZhbCBPdGhlcnMmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgU29tZSBlcnJvciBoYXBwZW5lZC48YnI+DQorPGJyPg0K KyoqLzxicj4NCitFRklfU1RBVFVTPGJyPg0KK1JlZGZpc2hFVGFnRmx1c2ggKDxicj4NCismbmJz cDsgSU4mbmJzcDsgRURLSUlfUkVERklTSF9FVEFHX1BST1RPQ09MJm5ic3A7Jm5ic3A7Jm5ic3A7 ICpUaGlzPGJyPg0KKyZuYnNwOyApPGJyPg0KK3s8YnI+DQorJm5ic3A7IFJFREZJU0hfRVRBR19Q UklWQVRFX0RBVEEgKlByaXZhdGU7PGJyPg0KKyZuYnNwOyBFRklfU1RBVFVTJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFN0YXR1czs8YnI+DQorPGJyPg0KKyZuYnNwOyBpZiAoVGhp cyA9PSBOVUxMKSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyByZXR1cm4gRUZJX0lOVkFMSURf UEFSQU1FVEVSOzxicj4NCismbmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7IFByaXZhdGUgPSBS RURGSVNIX0VUQUdfUFJJVkFURV9GUk9NX1RISVMgKFRoaXMpOzxicj4NCis8YnI+DQorJm5ic3A7 IFN0YXR1cyA9IFNhdmVFVGFnTGlzdCAoJmFtcDtQcml2YXRlLSZndDtFVGFnTGlzdCwgUHJpdmF0 ZS0mZ3Q7VmFyaWFibGVOYW1lKTs8YnI+DQorJm5ic3A7IGlmIChFRklfRVJST1IgKFN0YXR1cykp IHs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IERFQlVHICgoREVCVUdfRVJST1IsICZxdW90OyVh LCBzYXZlIEVUYWcgbGlzdCB0byB2YXJpYWJsZTogJXMgZmFpbGVkOiAlclxuJnF1b3Q7LCBfX0ZV TkNUSU9OX18sIFByaXZhdGUtJmd0O1ZhcmlhYmxlTmFtZSwgU3RhdHVzKSk7PGJyPg0KKyZuYnNw OyB9PGJyPg0KKzxicj4NCismbmJzcDsgcmV0dXJuIFN0YXR1czs8YnI+DQorfTxicj4NCis8YnI+ DQorLyoqPGJyPg0KKyZuYnNwOyBDYWxsYmFjayBmdW5jdGlvbiBleGVjdXRlZCB3aGVuIHRoZSBF eGl0Qm9vdFNlcnZpY2UgZXZlbnQgZ3JvdXAgaXMgc2lnbmFsZWQuPGJyPg0KKzxicj4NCismbmJz cDsgQHBhcmFtW2luXSZuYnNwOyZuYnNwOyBFdmVudCZuYnNwOyZuYnNwOyZuYnNwOyBFdmVudCB3 aG9zZSBub3RpZmljYXRpb24gZnVuY3Rpb24gaXMgYmVpbmcgaW52b2tlZC48YnI+DQorJm5ic3A7 IEBwYXJhbVtvdXRdJm5ic3A7IENvbnRleHQmbmJzcDsgUG9pbnRlciB0byB0aGUgQ29udGV4dCBi dWZmZXI8YnI+DQorPGJyPg0KKyoqLzxicj4NCitWT0lEPGJyPg0KK0VGSUFQSTxicj4NCitSZWRm aXNoRVRhZ09uRXhpdEJvb3RTZXJ2aWNlICg8YnI+DQorJm5ic3A7IElOJm5ic3A7IEVGSV9FVkVO VCZuYnNwOyBFdmVudCw8YnI+DQorJm5ic3A7IE9VVCBWT0lEJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7ICpDb250ZXh0PGJyPg0KKyZuYnNwOyApPGJyPg0KK3s8YnI+DQorJm5i c3A7IC8vPGJyPg0KKyZuYnNwOyAvLyBNZW1vcnkgaXMgYWJvdXQgdG8gYmUgcmVsZWFzZWQuIEtl ZXAgbGlzdCBpbnRvIHZhcmlhYmxlLjxicj4NCismbmJzcDsgLy88YnI+DQorJm5ic3A7IFJlZGZp c2hFVGFnRmx1c2ggKCZhbXA7bVJlZGZpc2hFVGFnUHJpdmF0ZS0mZ3Q7UHJvdG9jb2wpOzxicj4N Cit9PGJyPg0KKzxicj4NCisvKio8YnI+DQorJm5ic3A7IFVubG9hZHMgYW4gaW1hZ2UuPGJyPg0K Kzxicj4NCismbmJzcDsgQHBhcmFtW2luXSZuYnNwOyBJbWFnZUhhbmRsZSZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBIYW5kbGUgdGhh dCBpZGVudGlmaWVzIHRoZSBpbWFnZSB0byBiZSB1bmxvYWRlZC48YnI+DQorPGJyPg0KKyZuYnNw OyBAcmV0dmFsIEVGSV9TVUNDRVNTJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFRoZSBpbWFnZSBoYXMgYmVlbiB1bmxvYWRlZC48YnI+ DQorJm5ic3A7IEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEltYWdlSGFuZGxlIGlzIG5v dCBhIHZhbGlkIGltYWdlIGhhbmRsZS48YnI+DQorPGJyPg0KKyoqLzxicj4NCitFRklfU1RBVFVT PGJyPg0KK0VGSUFQSTxicj4NCitSZWRmaXNoRVRhZ0RyaXZlclVubG9hZCAoPGJyPg0KKyZuYnNw OyBJTiBFRklfSEFORExFJm5ic3A7IEltYWdlSGFuZGxlPGJyPg0KKyZuYnNwOyApPGJyPg0KK3s8 YnI+DQorJm5ic3A7IEVGSV9TVEFUVVMmbmJzcDsgU3RhdHVzOzxicj4NCis8YnI+DQorJm5ic3A7 IGlmIChtUmVkZmlzaEVUYWdQcml2YXRlICE9IE5VTEwpIHs8YnI+DQorPGJyPg0KKyZuYnNwOyZu YnNwOyZuYnNwOyBTdGF0dXMgPSBnQlMtJmd0O1VuaW5zdGFsbFByb3RvY29sSW50ZXJmYWNlICg8 YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7IG1SZWRmaXNoRVRhZ1ByaXZhdGUtJmd0O0ltYWdlSGFuZGxlLDxicj4NCismbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmFtcDtn RWRrSUlSZWRmaXNoRVRhZ1Byb3RvY29sR3VpZCw8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IChWT0lEKikmYW1wO21SZWRmaXNo RVRhZ1ByaXZhdGUtJmd0O1Byb3RvY29sPGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyApOzxicj4NCismbmJzcDsmbmJzcDsmbmJz cDsgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsgREVCVUcgKChERUJVR19FUlJPUiwgJnF1b3Q7JWEsIGNhbiBub3QgdW5pbnN0YWxs IGdFZGtJSVJlZGZpc2hFVGFnUHJvdG9jb2xHdWlkOiAlclxuJnF1b3Q7LCBfX0ZVTkNUSU9OX18s IFN0YXR1cykpOzxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgQVNTRVJUIChG QUxTRSk7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyB9PGJyPg0KKzxicj4NCismbmJzcDsmbmJz cDsmbmJzcDsgUmVsZWFzZUVUYWdMaXN0ICgmYW1wO21SZWRmaXNoRVRhZ1ByaXZhdGUtJmd0O0VU YWdMaXN0KTs8YnI+DQorPGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBpZiAobVJlZGZpc2hFVGFn UHJpdmF0ZS0mZ3Q7VmFyaWFibGVOYW1lICE9IE5VTEwpIHs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IEZyZWVQb29sIChtUmVkZmlzaEVUYWdQcml2YXRlLSZndDtWYXJpYWJs ZU5hbWUpOzxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7Jm5i c3A7Jm5ic3A7IGlmIChtUmVkZmlzaEVUYWdQcml2YXRlLSZndDtFdmVudCAhPSBOVUxMKSB7PGJy Pg0KKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBnQlMtJmd0O0Nsb3NlRXZlbnQgKG1S ZWRmaXNoRVRhZ1ByaXZhdGUtJmd0O0V2ZW50KTs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IH08 YnI+DQorPGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBGcmVlUG9vbCAobVJlZGZpc2hFVGFnUHJp dmF0ZSk7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBtUmVkZmlzaEVUYWdQcml2YXRlID0gTlVM TDs8YnI+DQorJm5ic3A7IH08YnI+DQorPGJyPg0KKzxicj4NCismbmJzcDsgcmV0dXJuIEVGSV9T VUNDRVNTOzxicj4NCit9PGJyPg0KKzxicj4NCisvLzxicj4NCisvLyBFREtJSV9SRURGSVNIX0VU QUdfUFJPVE9DT0wuPGJyPg0KKy8vPGJyPg0KK0VES0lJX1JFREZJU0hfRVRBR19QUk9UT0NPTCBt UmVkZmlzaEVUYWdQcm90b2NvbCA9IHs8YnI+DQorJm5ic3A7IFJlZGZpc2hFVGFnR2V0LDxicj4N CismbmJzcDsgUmVkZmlzaEVUYWdTZXQsPGJyPg0KKyZuYnNwOyBSZWRmaXNoRVRhZ0ZsdXNoPGJy Pg0KK307PGJyPg0KKzxicj4NCisvKio8YnI+DQorJm5ic3A7IFRoaXMgaXMgdGhlIGRlY2xhcmF0 aW9uIG9mIGFuIEVGSSBpbWFnZSBlbnRyeSBwb2ludC4gVGhpcyBlbnRyeSBwb2ludCBpczxicj4N CismbmJzcDsgdGhlIHNhbWUgZm9yIFVFRkkgQXBwbGljYXRpb25zLCBVRUZJIE9TIExvYWRlcnMs IGFuZCBVRUZJIERyaXZlcnMgaW5jbHVkaW5nPGJyPg0KKyZuYnNwOyBib3RoIGRldmljZSBkcml2 ZXJzIGFuZCBidXMgZHJpdmVycy48YnI+DQorPGJyPg0KKyZuYnNwOyBAcGFyYW1baW5dJm5ic3A7 IEltYWdlSGFuZGxlJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFRoZSBmaXJt d2FyZSBhbGxvY2F0ZWQgaGFuZGxlIGZvciB0aGUgVUVGSSBpbWFnZS48YnI+DQorJm5ic3A7IEBw YXJhbVtpbl0mbmJzcDsgU3lzdGVtVGFibGUmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgQSBwb2ludGVyIHRvIHRoZSBFRkkgU3lzdGVtIFRhYmxlLjxicj4NCis8YnI+DQorJm5i c3A7IEByZXR2YWwgRUZJX1NVQ0NFU1MmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgVGhlIG9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vz c2Z1bGx5Ljxicj4NCismbmJzcDsgQHJldHZhbCBPdGhlcnMmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cnJlZC48YnI+DQorKiovPGJyPg0K K0VGSV9TVEFUVVM8YnI+DQorRUZJQVBJPGJyPg0KK1JlZGZpc2hFVGFnRHJpdmVyRW50cnlQb2lu dCAoPGJyPg0KKyZuYnNwOyBJTiBFRklfSEFORExFJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IEltYWdlSGFuZGxlLDxicj4NCismbmJzcDsgSU4gRUZJX1NZU1RFTV9U QUJMRSZuYnNwOyAqU3lzdGVtVGFibGU8YnI+DQorJm5ic3A7ICk8YnI+DQorezxicj4NCismbmJz cDsgRUZJX1NUQVRVUyZuYnNwOyZuYnNwOyZuYnNwOyBTdGF0dXM7PGJyPg0KKzxicj4NCismbmJz cDsgbVJlZGZpc2hFVGFnUHJpdmF0ZSA9IEFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoUkVERklT SF9FVEFHX1BSSVZBVEVfREFUQSkpOzxicj4NCismbmJzcDsgaWYgKG1SZWRmaXNoRVRhZ1ByaXZh dGUgPT0gTlVMTCkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgcmV0dXJuIEVGSV9PVVRfT0Zf UkVTT1VSQ0VTOzxicj4NCismbmJzcDsgfTxicj4NCis8YnI+DQorJm5ic3A7IEluaXRpYWxpemVM aXN0SGVhZCAoJmFtcDttUmVkZmlzaEVUYWdQcml2YXRlLSZndDtFVGFnTGlzdC5MaXN0aGVhZGVy KTs8YnI+DQorJm5ic3A7IG1SZWRmaXNoRVRhZ1ByaXZhdGUtJmd0O1ZhcmlhYmxlTmFtZSA9IEFs bG9jYXRlQ29weVBvb2wgKFN0clNpemUgKEVUQUdfVkFSSUFCTEVfTkFNRSksIEVUQUdfVkFSSUFC TEVfTkFNRSk7PGJyPg0KKyZuYnNwOyBpZiAobVJlZGZpc2hFVGFnUHJpdmF0ZS0mZ3Q7VmFyaWFi bGVOYW1lID09IE5VTEwpIHs8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7IGdvdG8gT05fRVJST1I7 PGJyPg0KKyZuYnNwOyB9PGJyPg0KKzxicj4NCismbmJzcDsgbVJlZGZpc2hFVGFnUHJpdmF0ZS0m Z3Q7SW1hZ2VIYW5kbGUgPSBJbWFnZUhhbmRsZTs8YnI+DQorJm5ic3A7IENvcHlNZW0gKCZhbXA7 bVJlZGZpc2hFVGFnUHJpdmF0ZS0mZ3Q7UHJvdG9jb2wsICZhbXA7bVJlZGZpc2hFVGFnUHJvdG9j b2wsIHNpemVvZiAoRURLSUlfUkVERklTSF9FVEFHX1BST1RPQ09MKSk7PGJyPg0KKzxicj4NCism bmJzcDsgU3RhdHVzID0gZ0JTLSZndDtJbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKDxicj4NCism bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmFtcDtJbWFnZUhh bmRsZSw8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 ICZhbXA7Z0Vka0lJUmVkZmlzaEVUYWdQcm90b2NvbEd1aWQsPGJyPg0KKyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBFRklfTkFUSVZFX0lOVEVSRkFDRSw8YnI+ DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IChWT0lEKikm YW1wO21SZWRmaXNoRVRhZ1ByaXZhdGUtJmd0O1Byb3RvY29sPGJyPg0KKyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyApOzxicj4NCismbmJzcDsgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgezxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgREVCVUcgKChERUJVR19F UlJPUiwgJnF1b3Q7JWEsIGNhbiBub3QgaW5zdGFsbCBnRWRrSUlSZWRmaXNoRVRhZ1Byb3RvY29s R3VpZDogJXJcbiZxdW90OywgX19GVU5DVElPTl9fLCBTdGF0dXMpKTs8YnI+DQorJm5ic3A7Jm5i c3A7Jm5ic3A7IEFTU0VSVCAoRkFMU0UpOzxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgZ290byBP Tl9FUlJPUjs8YnI+DQorJm5ic3A7IH08YnI+DQorPGJyPg0KKyZuYnNwOyAvLzxicj4NCismbmJz cDsgLy8gQ3JlYXRlIEV4aXQgQm9vdCBTZXJ2aWNlIGV2ZW50Ljxicj4NCismbmJzcDsgLy88YnI+ DQorJm5ic3A7IFN0YXR1cyA9IGdCUy0mZ3Q7Q3JlYXRlRXZlbnRFeCAoPGJyPg0KKyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBFVlRfTk9USUZZX1NJR05BTCw8 YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFRQTF9D QUxMQkFDSyw8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IFJlZGZpc2hFVGFnT25FeGl0Qm9vdFNlcnZpY2UsPGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBOVUxMLDxicj4NCismbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJmFtcDtnRWZpRXZlbnRFeGl0Qm9vdFNlcnZp Y2VzR3VpZCw8YnI+DQorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7ICZhbXA7bVJlZGZpc2hFVGFnUHJpdmF0ZS0mZ3Q7RXZlbnQ8YnI+DQorJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICk7PGJyPg0KKyZuYnNwOyBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7PGJyPg0KKyZuYnNwOyZuYnNwOyZuYnNwOyBERUJVRyAoKERFQlVH X0VSUk9SLCAmcXVvdDslYTogRmFpbCB0byByZWdpc3RlciBFeGl0IEJvb3QgU2VydmljZSBldmVu dC4mcXVvdDssIF9fRlVOQ1RJT05fXykpOzxicj4NCismbmJzcDsmbmJzcDsmbmJzcDsgZ290byBP Tl9FUlJPUjs8YnI+DQorJm5ic3A7IH08YnI+DQorPGJyPg0KKyZuYnNwOyAvLzxicj4NCismbmJz cDsgLy8gUmVhZCBleGlzdGluZyByZWNvcmQgZnJvbSB2YXJpYWJsZS48YnI+DQorJm5ic3A7IC8v PGJyPg0KKyZuYnNwOyBTdGF0dXMgPSBJbml0aWFsRVRhZ0xpc3QgKCZhbXA7bVJlZGZpc2hFVGFn UHJpdmF0ZS0mZ3Q7RVRhZ0xpc3QsIG1SZWRmaXNoRVRhZ1ByaXZhdGUtJmd0O1ZhcmlhYmxlTmFt ZSk7PGJyPg0KKyZuYnNwOyBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7PGJyPg0KKyZuYnNwOyZu YnNwOyZuYnNwOyBERUJVRyAoKERFQlVHX0lORk8sICZxdW90OyVhLCBJbml0aWFsIEVUYWcgTGlz dDogJXJcbiZxdW90OywgX19GVU5DVElPTl9fLCBTdGF0dXMpKTs8YnI+DQorJm5ic3A7IH08YnI+ DQorPGJyPg0KKyZuYnNwOyByZXR1cm4gRUZJX1NVQ0NFU1M7PGJyPg0KKzxicj4NCitPTl9FUlJP Ujo8YnI+DQorPGJyPg0KKyZuYnNwOyBSZWRmaXNoRVRhZ0RyaXZlclVubG9hZCAoSW1hZ2VIYW5k bGUpOzxicj4NCis8YnI+DQorJm5ic3A7IHJldHVybiBTdGF0dXM7PGJyPg0KK308YnI+DQotLSA8 YnI+DQoyLjIxLjAud2luZG93cy4xPGJyPg0KPGJyPg0KPC9kaXY+DQo8L3NwYW4+PC9mb250Pjwv ZGl2Pg0KPC9kaXY+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_CS1PR8401MB1144251AC1C3C6D95113A2B3FF839CS1PR8401MB1144_--