From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (NAM12-DM6-obe.outbound.protection.outlook.com [40.107.243.126]) by mx.groups.io with SMTP id smtpd.web11.44841.1681698030662824680 for ; Sun, 16 Apr 2023 19:20:31 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="no key for verify" header.i=@amperemail.onmicrosoft.com header.s=selector1-amperemail-onmicrosoft-com header.b=nJMDkrWh; spf=pass (domain: amperemail.onmicrosoft.com, ip: 40.107.243.126, mailfrom: thang@amperemail.onmicrosoft.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P4koLmjh1F2c2veszIGudXwHjGXw0/pXpm1HWlC/oUxaYn3NVbbWHRCk9m1BvZKRYWdXXMk4SYV83IcJXwTDnNLggXvTgSJ0opbqbu7XavwdOMSu9fHSPQv/nyLdeutISqp7dn+vFlRmpiF4azx8kiDjQDjHppBmzWE1GmBpWZrmXIGgNfo4iBB/lDc/b3db2CTmji/GWBQnbWY0bnOAZSZVbvjNtx2LsvMQ7WP0hsqYxk2zdfOQNoxdSnuspqbMEIOTde3BNKSWe0DfdJ1NRWlij4Qev5nmvABNY/K8Exy7yKJy1fqGnbV6lYOySUTHCzEOLwf2z3j7Sgl295Bk4w== 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=kFYn182arUYPBNzg2+pX1z0asPGVtnJaGAvOI64+HZQ=; b=Df6gmHX9d+jlZWPowPYBqS5jksIfnHtMpe9o823aGkHA4Efn669yNekYv5CcnKeLIvuJCd2ZPVEM68J5xv2R/iF/kXK53HxI52TcwQWe0uHcfJdeqRqeoOunzT+dgbOEJiVGJdTS7bRbUWe2hg4IqaNLNSkFmKfRxw2BLw0KuSbwoZFROaEEHcCbHGqdK3rZgtTuOX90yTWzpGAcBXyyul3e4iR4ZsWQEXbMfzLqVBxAHAVyhO4v+c9cWiWxTIXsAmZT+/OeqcTGeAdPLeA1CF6y/HedwsH1KL+vWSi4rWN0ZFPzIw1qOW7Am06TzicFK3jFsgMd91Dk25wsoQ68wQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amperemail.onmicrosoft.com; dmarc=pass action=none header.from=amperemail.onmicrosoft.com; dkim=pass header.d=amperemail.onmicrosoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amperemail.onmicrosoft.com; s=selector1-amperemail-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kFYn182arUYPBNzg2+pX1z0asPGVtnJaGAvOI64+HZQ=; b=nJMDkrWhuQSfMVgFuz08u8RQvtJQjJDK660E7Ci4CF5pGRBE20dBQbC/b8MBmTjHOGYG957ld6BCDE5ciEw0Z1B17/O5DR4dy78xDZr5sDYSGcDZkj7JoogcoczCQqE1BuuMei86SQFIRanh1UPoJAY0aAqxV/xmK1qLWIGTJec= Received: from BL1PR01MB7747.prod.exchangelabs.com (2603:10b6:208:39a::12) by SJ0PR01MB6221.prod.exchangelabs.com (2603:10b6:a03:295::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.19; Mon, 17 Apr 2023 02:20:21 +0000 Received: from BL1PR01MB7747.prod.exchangelabs.com ([fe80::ca95:1a34:18bb:385d]) by BL1PR01MB7747.prod.exchangelabs.com ([fe80::ca95:1a34:18bb:385d%7]) with mapi id 15.20.6298.028; Mon, 17 Apr 2023 02:20:21 +0000 From: Thang Nguyen OS To: "devel@edk2.groups.io" , Tinh Nguyen OS CC: Nickle Wang , Abner Chang , Isaac Oram , Abdul Lateef Attar Subject: Re: [edk2-devel] [edk2-platforms][PATCH] ManageabilityPkg: add support for the phosphor ipmi blob transfer protocol Thread-Topic: [edk2-devel] [edk2-platforms][PATCH] ManageabilityPkg: add support for the phosphor ipmi blob transfer protocol Thread-Index: AQHZbO1eeAec3dmoEU+ps+GP+C8klK8twpCAgAEJ2IA= Date: Mon, 17 Apr 2023 02:20:21 +0000 Message-ID: <1EAC4DCE-EC61-4E99-B82A-E11890D18BD7@amperemail.onmicrosoft.com> References: <20230412031724.12690-1-nicklew@nvidia.com> <0c49ba9d-25e8-2727-a1bd-c93d2d2d6bce@amperemail.onmicrosoft.com> In-Reply-To: <0c49ba9d-25e8-2727-a1bd-c93d2d2d6bce@amperemail.onmicrosoft.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3731.500.231) authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amperemail.onmicrosoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BL1PR01MB7747:EE_|SJ0PR01MB6221:EE_ x-ms-office365-filtering-correlation-id: 4fe3dbf5-bf12-486c-d5ba-08db3eea4b58 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: t0fZdBXLnp6WeHef3diSjtw1gn+EPdNmQmWly2DQFqWSRMbqDFyXtYK/EPvJ0xPo8nwErUfleSCtw4seVH70CSFY+phWvNpJH2tTeHr4hfGeseZGX/GN9979ViltQ7DvjY3g+M5vMLfBYZF6m6eU7o0FNCp5KPr87l/WuDmUnPZL7mroj/I1Wdu8EADnAPYsn0UaCRZrkgwcfH+gePIwYF1nv1/b5tJCqcLJIz23D1wC15ow1y5npSlEOyKRSMo/0s8fNOfHT7NC4RRwa37GWWYPuUWa82M7yP1UlnaekeeGIKSmJPColKZmg+jaE3d09mI8Yho02XN4quPON28MZ7505rsL1qYo36W217Jut0ZH/7rmDyBejhI7i+fQMU1hXHQyTWJJhNW8aLqo6+5XlIhjMP7uEiAFI8LpvbXRtxC4oO/sR4paZiolhtZiYPceHWkmNTc1s99gjrUhnzgRwBPRpCBDwg5l3wzDrvXc0jP8myVYdZV5CJ6x1r5uOFhXzgn6HANkBNyjyDfEie/F+mUwrEV6RFID0fKrgoCtrYuTUHpPltDmozTA96DrXTyBX9knTxA4qq84Vt9RwVaG5cWguV4pTtyNiMspV22KK6DVNxDvAwfWGtsMEoyaRcgf x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR01MB7747.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(396003)(376002)(346002)(366004)(39850400004)(136003)(451199021)(54906003)(110136005)(6486002)(71200400001)(478600001)(41300700001)(316002)(83380400001)(91956017)(64756008)(4326008)(66556008)(966005)(2616005)(186003)(66446008)(53546011)(6512007)(6506007)(26005)(76116006)(66946007)(66476007)(5660300002)(30864003)(166002)(2906002)(8676002)(8936002)(66899021)(38100700002)(38070700005)(122000001)(33656002)(86362001)(559001)(579004)(44824005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?amFGWEloQWdnUklOU3VWdDBzeHdZNGR4WjdGM3pwUXJxcHY1UmVwZnBKYm4w?= =?utf-8?B?OUFaQ2FRdGYxRWM4SzRQYVpPWkhQZ3lsWGFycVZ6Rk1LNzZnM1UyeFplU3VH?= =?utf-8?B?NnIyb2VSbDVPeGJkR00weUJobG4wL0VDSFlZZ0ozdWhlY1VtU0FqTlU1YVlv?= =?utf-8?B?ZXZMZ3FUTGRyQkhvNklFMmZOYWs1ejJMVXZNN0xzTjM2SWVlYktUdEt0SGYx?= =?utf-8?B?VHlJWjl4NjFEMWE3N05CTEJRclhsVFdiaUlTcC9Qbm1RTTlvbzZHVFQ4T2ds?= =?utf-8?B?QmRBSEZpUFRJWnhqTFFBY21ZRU40Wm56Q1dnNm44OVZlNG1QaEN3VFRaam1p?= =?utf-8?B?Y1JRbmZsWkgvdG1jL0M5ME16RzFoZFhNL0dZaXQzOC9jeDl5NnZUdk9KV3Bi?= =?utf-8?B?V3p4aFd2cG1oSndaV0YvNnNsVHJ0c2UzWUQyU0NvVi9penFid1NiSjlsRU1X?= =?utf-8?B?Mkl3NjBlUjlSeTlFTzBoNWdsemhsYytHdytCMVVKbWdqVjhaQU1oeWJMSk1Z?= =?utf-8?B?dEFHZVJVV2t0Ui9PbHdZQVRQeDhSMFVjSUdCVXM0U3RxbU5rQ3UrdzNIclc2?= =?utf-8?B?ZjkxTE55bEhXU2FXOTU2cWxPN1lEL00wUlFVM3N2VnZtNk5rdFRXdUEvY2x4?= =?utf-8?B?bHFuOWYzWVJtbW1CQmtwWS9CMFVFN3JsalpuUytoNWVCclVuaERvc3p3ZHUz?= =?utf-8?B?czVLSmNxMU4xdkMxNENib0VqeGdIRCsvT1FKdXNFNndYd2FINjNnUUhaNnlL?= =?utf-8?B?czZkOGJRSHUrUlQ0S3M1SFc2L0czWmNlUHA2akxTdkJQQTBxM1ZURFRDYXJW?= =?utf-8?B?dTJ0a2hGMlNNdjBkYitmQk1YcENkYy96dGdsVkZibnNuMGpWNUkxV0xZaWdu?= =?utf-8?B?VlFjODBhc1pKSWtKSExwdzVqa2lTL1k1WkltckUwbm1zaUZsZ3EwNW5nNmlQ?= =?utf-8?B?TGljS2t2NnBSR0JLZTZFQWtwNHF6YkdoaStaUU9NMU5RWFdXSUpIU0hscE5Z?= =?utf-8?B?djl2QXpDek1tck1GNkhTWFBuWlR0QTNsZWNveUt5OTUxRlIzZEIzbWZEeHJV?= =?utf-8?B?WTkzN2VoLzZPTVZ1Q2xjemRrNzAyNmYwZjBhYlVac09SUHZ1Um9xL0FlUTBv?= =?utf-8?B?UnpDd0QrNlVXbWJOVVJ5S3Q2aUFmTHJsNGpJanY5Y0VGMGhIM2U1aWVnWkJ5?= =?utf-8?B?QlNGUWpQMzVxb0xUR3d4cW5WUmwxYk4ycUJXUE4xYVlnSlhYYThMbTVsYzV2?= =?utf-8?B?UDdPbEludE1yTkozNVhPUkMvMGNReXpUalJUb2xXTElwU3FNNldraWUzTUhR?= =?utf-8?B?bEJObjByNmdmYktnUExpeVAxTVoxM045U1h2WDNoVGlnUFAvV25RVml2V3hK?= =?utf-8?B?Z0x6S0RKU3FGZ2RtcHNPMzBsdmF5THAzSGF2VEZGNFRUbk04YlpCb29JZllM?= =?utf-8?B?YVpYRGUvQ2RWcElYVi9iQXdJU2FmVmQzalZOWjY0QmtycEdCczV3dm1GVTZv?= =?utf-8?B?WnRKTnNOQWJvcFlENmVOSEpyTHlnYmhBZE9xN3pxRXNRdHoxNVh5cUU5cWxH?= =?utf-8?B?Z29EUmppRVMzL2V2TTJQVDcyaDFobzlIWkJRempDK3BwRXJ0UEJOS0hpaFIz?= =?utf-8?B?NmlYekpDNFJyY3BLZmVyL25Fc21JNndwOXdBd2RubDFwRWtDOXo4TFdxandM?= =?utf-8?B?Vks5b3FBUFYvRnoyc1YvaUx5a3dOcjJwc0ZxWFg2QytnVUdqZTNKYUZkQ0gw?= =?utf-8?B?Lzg4dzRPZjJJb3l2NW82YTJBS2d3ZWlydWVCK1NGVXBZMk9iZFFJQTFrZ3JN?= =?utf-8?B?UWpScyszb3FGSEtXOGtVZksxdlluMElSTElkQzl0cCtjUzdnelBWYkJRdTZS?= =?utf-8?B?Z0p6R0YrQ1NJRmdJaVhlZUs0TE9XUE5FZHVraUl1cnhwblRDMGlrdVZGdC93?= =?utf-8?B?V0lFZWNvNm1VY2NPcmJoaGpaSytKd2Q2OGk0a1RpeHI5Z05WVUdwS0FBWnBF?= =?utf-8?B?QnVlZEptSUZIdEk3dDRRU2RUWWhVQUtrQ2VrRFVwak1lSHk0WnRDU1RBa0hG?= =?utf-8?B?b1p4RnpBQUYwaXFWZEtzKzhyZTlmcmgxMmp4RGsyMFpNMDgyWHRvbFlYMWRB?= =?utf-8?B?c0VNYTVuVmxFdENtNUVpb0JLZlRZQlpxVUtZTmVOd01XbVRjVTdFd0NjQ29o?= =?utf-8?Q?KS+pG5tUbvLbTMC6fnGxupY=3D?= MIME-Version: 1.0 X-OriginatorOrg: amperemail.onmicrosoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BL1PR01MB7747.prod.exchangelabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4fe3dbf5-bf12-486c-d5ba-08db3eea4b58 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Apr 2023 02:20:21.0236 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8D10E0zbo4vkzseGkWM5DvtG8KcdQ/btDcn7jcNzxGT42ZyvUw/XnlpBXUnwvVftmFVphmgL4YuvKXQOG3dJrq6YERrXVnOXWMSfFPiLmG1JxcT8qhrvAL0dAYf2uAl/ X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR01MB6221 Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_1EAC4DCEEC614E99B82AE11890D18BD7amperemailonmicrosoftco_" --_000_1EAC4DCEEC614E99B82AE11890D18BD7amperemailonmicrosoftco_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCk9uIDE2IEFwciAyMDIzLCBhdCAxNzoyOCwgVGluaCBOZ3V5ZW4gdmlhIGdyb3Vwcy5pbyA8 dGluaG5ndXllbj1vcy5hbXBlcmVjb21wdXRpbmcuY29tQGdyb3Vwcy5pbz4gd3JvdGU6DQoNCkhp IE5pY2tsZSwNCg0KUGxlYXNlIGZpbmQgbXkgaW5saW5lIGNvbW1lbnRzIGJlbG93DQoNCk9uIDQv MTIvMjAyMyAxMDoxNyBBTSwgTmlja2xlIFdhbmcgd3JvdGU6DQpbRVhURVJOQUwgRU1BSUwgTk9U SUNFOiBUaGlzIGVtYWlsIG9yaWdpbmF0ZWQgZnJvbSBhbiBleHRlcm5hbCBzZW5kZXIuIFBsZWFz ZSBiZSBtaW5kZnVsIG9mIHNhZmUgZW1haWwgaGFuZGxpbmcgYW5kIHByb3ByaWV0YXJ5IGluZm9y bWF0aW9uIHByb3RlY3Rpb24gcHJhY3RpY2VzLl0NCg0KDQpUaGlzIGNoYW5nZSBpbXBsZW1lbnRz IHRoZSBibG9iIHRyYW5zZmVyIHByb3RvY29sIHVzZWQgaW4gT3BlbkJtYw0KZG9jdW1lbnRlZCBo ZXJlOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmJtYy9waG9zcGhvci1pcG1pLWJsb2JzDQoNClNp Z25lZC1vZmYtYnk6IE5pY2sgUmFtaXJleiA8bnJhbWlyZXpAbnZpZGlhLmNvbT4NCkNjOiBBYm5l ciBDaGFuZyA8YWJuZXIuY2hhbmdAYW1kLmNvbT4NCkNjOiBJc2FhYyBPcmFtIDxpc2FhYy53Lm9y YW1AaW50ZWwuY29tPg0KQ2M6IEFiZHVsIExhdGVlZiBBdHRhciA8QWJkdWxMYXRlZWYuQXR0YXJA YW1kLmNvbT4NCkNjOiBOaWNrbGUgV2FuZyA8bmlja2xld0BudmlkaWEuY29tPg0KQ2M6IFRpbmgg Tmd1eWVuIDx0aW5obmd1eWVuQGFtcGVyZW1haWwub25taWNyb3NvZnQuY29tPg0KLS0tDQogLi4u L01hbmFnZWFiaWxpdHlQa2cvTWFuYWdlYWJpbGl0eVBrZy5kZWMgICAgIHwgICAgNiArDQogLi4u L0luY2x1ZGUvRHNjL01hbmFnZWFiaWxpdHkuZHNjICAgICAgICAgICAgIHwgICAgNCArLQ0KIC4u Li9JcG1pQmxvYlRyYW5zZmVyRHhlLmluZiAgICAgICAgICAgICAgICAgICB8ICAgMzkgKw0KIC4u Li9JcG1pQmxvYlRyYW5zZmVyVGVzdFVuaXRUZXN0c0hvc3QuaW5mICAgICB8ICAgNDAgKw0KIC4u Li9JbmNsdWRlL1Byb3RvY29sL0lwbWlCbG9iVHJhbnNmZXIuaCAgICAgICB8ICAxMzYgKysNCiAu Li4vSW50ZXJuYWxJcG1pQmxvYlRyYW5zZmVyLmggICAgICAgICAgICAgICAgfCAgMzYzICsrKysr Kw0KIC4uLi9JcG1pQmxvYlRyYW5zZmVyRHhlL0lwbWlCbG9iVHJhbnNmZXJEeGUuYyB8ICA3OTkg KysrKysrKysrKysrDQogLi4uL1VuaXRUZXN0L0lwbWlCbG9iVHJhbnNmZXJUZXN0VW5pdFRlc3Rz LmMgIHwgMTExMyArKysrKysrKysrKysrKysrKw0KIC4uLi9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFu c2ZlckR4ZS9SZWFkbWUubWQgICB8ICAgMjQgKw0KIDkgZmlsZXMgY2hhbmdlZCwgMjUyMyBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQogY3JlYXRlIG1vZGUgMTAwNjQ0IEZlYXR1cmVzL01h bmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJEeGUvSXBtaUJsb2JUcmFu c2ZlckR4ZS5pbmYNCiBjcmVhdGUgbW9kZSAxMDA2NDQgRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBr Zy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9Vbml0VGVzdC9JcG1pQmxvYlRyYW5zZmVy VGVzdFVuaXRUZXN0c0hvc3QuaW5mDQogY3JlYXRlIG1vZGUgMTAwNjQ0IEZlYXR1cmVzL01hbmFn ZWFiaWxpdHlQa2cvSW5jbHVkZS9Qcm90b2NvbC9JcG1pQmxvYlRyYW5zZmVyLmgNCiBjcmVhdGUg bW9kZSAxMDA2NDQgRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JU cmFuc2ZlckR4ZS9JbnRlcm5hbElwbWlCbG9iVHJhbnNmZXIuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0 NCBGZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVyRHhl L0lwbWlCbG9iVHJhbnNmZXJEeGUuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBGZWF0dXJlcy9NYW5h Z2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVyRHhlL1VuaXRUZXN0L0lwbWlC bG9iVHJhbnNmZXJUZXN0VW5pdFRlc3RzLmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9SZWFkbWUubWQN Cg0KZGlmZiAtLWdpdCBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTWFuYWdlYWJpbGl0eVBr Zy5kZWMgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL01hbmFnZWFiaWxpdHlQa2cuZGVjDQpp bmRleCA5YTkzMGQzZTRiLi5lMmQ2Y2NjYzUwIDEwMDY0NA0KLS0tIGEvRmVhdHVyZXMvTWFuYWdl YWJpbGl0eVBrZy9NYW5hZ2VhYmlsaXR5UGtnLmRlYw0KKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJp bGl0eVBrZy9NYW5hZ2VhYmlsaXR5UGtnLmRlYw0KQEAgLTQsNiArNCw3IEBADQogIyB0aG9zZSBh cmUgcmVsYXRlZCB0byB0aGUgcGxhdGZvcm0gbWFuYWdlbWVudC4NCiAjDQogIyBDb3B5cmlnaHQg KEMpIDIwMjMgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCisjIENvcHlyaWdodCAoYykgMjAyMywgTlZJRElBIENPUlBPUkFUSU9OICYgQUZGSUxJ QVRFUy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBC U0QtMi1DbGF1c2UtUGF0ZW50DQogIw0KICMjDQpAQCAtNDgsMyArNDksOCBAQA0KICAgZ01hbmFn ZWFiaWxpdHlQcm90b2NvbE1jdHBHdWlkICAgID0geyAweDc2RkVEOEYxLCAweDBCRTUsIDB4NDI2 OSwgeyAweEEzLCAweDFBLCAweDM4LCAweDBGLCAweDU0LCAweEYxLCAweEExLCAweDhBIH0gfQ0K ICAgIyBNYW5hZ2VhYmlsaXR5IFByb3RvY29sIFBMRE0NCiAgIGdNYW5hZ2VhYmlsaXR5UHJvdG9j b2xQbGRtR3VpZCAgICA9IHsgMHgzOTU4MDkwRCwgMHg2OURELCAweDQ4NjgsIHsgMHg5QywgMHg0 MSwgMHhDOSwgMHhBQywgMHgzMSwgMHhCNSwgMHgyNSwgMHhDNSB9IH0NCisNCitbUHJvdG9jb2xz XQ0KKw0KKyAgIyMgSW5jbHVkZS9Qcm90b2NvbC9JcG1pQmxvYlRyYW5zZmVyLmgNCisgIGdFZGtp aUlwbWlCbG9iVHJhbnNmZXJQcm90b2NvbEd1aWQgPSB7IDB4MDU4MzdjNzUsIDB4MWQ2NSwgMHg0 NjhiLCB7IDB4YjEsIDB4YzIsIDB4ODEsIDB4YWYsIDB4OWEsIDB4MzEsIDB4NWIsIDB4MmMgfSB9 DQpkaWZmIC0tZ2l0IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL0RzYy9NYW5h Z2VhYmlsaXR5LmRzYyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvSW5jbHVkZS9Ec2MvTWFu YWdlYWJpbGl0eS5kc2MNCmluZGV4IDBkODY4ZmRmNGEuLjExMWQ2YjkxZGMgMTAwNjQ0DQotLS0g YS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvRHNjL01hbmFnZWFiaWxpdHkuZHNj DQorKysgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvRHNjL01hbmFnZWFiaWxp dHkuZHNjDQpAQCAtMiwxMSArMiwxMyBAQA0KICMgQ29tbW9uIGxpYnJhcmllcyBmb3IgTWFuYWdl YWJpbHR5IFBhY2thZ2UNCiAjDQogIyBDb3B5cmlnaHQgKEMpIDIwMjMgQWR2YW5jZWQgTWljcm8g RGV2aWNlcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCisjIENvcHlyaWdodCAoYykg MjAyMywgTlZJRElBIENPUlBPUkFUSU9OICYgQUZGSUxJQVRFUy4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4NCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQogIw0K ICMjDQogW0xpYnJhcnlDbGFzc2VzXQ0KICAgTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlckxp YnxNYW5hZ2VhYmlsaXR5UGtnL0xpYnJhcnkvQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxw ZXJMaWIvQmFzZU1hbmFnZWFiaWxpdHlUcmFuc3BvcnRIZWxwZXIuaW5mDQorICBJcG1pTGlifE1k ZU1vZHVsZVBrZy9MaWJyYXJ5L0R4ZUlwbWlMaWJJcG1pUHJvdG9jb2wvRHhlSXBtaUxpYklwbWlQ cm90b2NvbC5pbmYNCg0KIFtMaWJyYXJ5Q2xhc3Nlcy5BUk0sIExpYnJhcnlDbGFzc2VzLkFBUkNI NjRdDQogICAjDQpAQCAtMjIsNCArMjQsNCBAQA0KIFtDb21wb25lbnRzLlg2NF0NCiAgIE1hbmFn ZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9EeGUvSXBtaVByb3RvY29sRHhlLmlu Zg0KICAgTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaVByb3RvY29sL1NtbS9JcG1pUHJv dG9jb2xTbW0uaW5mDQotDQorICBNYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRy YW5zZmVyRHhlL0lwbWlCbG9iVHJhbnNmZXJEeGUuaW5mDQpkaWZmIC0tZ2l0IGEvRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9JcG1pQmxvYlRy YW5zZmVyRHhlLmluZiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlC bG9iVHJhbnNmZXJEeGUvSXBtaUJsb2JUcmFuc2ZlckR4ZS5pbmYNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwLi4yOGU5ZDI5M2MxDQotLS0gL2Rldi9udWxsDQorKysgYi9G ZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVyRHhlL0lw bWlCbG9iVHJhbnNmZXJEeGUuaW5mDQpAQCAtMCwwICsxLDM5IEBADQorIyMgQGZpbGUNCisjIElQ TUkgQmxvYiBUcmFuc2ZlciBQcm90b2NvbCBEWEUgRHJpdmVyLg0KKyMNCisjICBDb3B5cmlnaHQg KGMpIDIwMjItMjAyMywgTlZJRElBIENPUlBPUkFUSU9OICYgQUZGSUxJQVRFUy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCisjDQorIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCisjDQorDQorW0RlZmluZXNdDQorICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAg ICAgICAgPSAweDAwMDEwMDA1DQorICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBJ cG1pQmxvYlRyYW5zZmVyRHhlDQorICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA2 MzU3YzgwNC03OGJiLTRiMGMtYWJkZi1jNzVkZjk0MmYzMTkNCisgIE1PRFVMRV9UWVBFICAgICAg ICAgICAgICAgICAgICA9IERYRV9EUklWRVINCisgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAg ICAgICA9IDEuMA0KKyAgRU5UUllfUE9JTlQgICAgICAgICAgICAgICAgICAgID0gSXBtaUJsb2JU cmFuc2ZlckR4ZURyaXZlckVudHJ5UG9pbnQNCisNCitbU291cmNlcy5jb21tb25dDQorICBJcG1p QmxvYlRyYW5zZmVyRHhlLmMNCisNCitbTGlicmFyeUNsYXNzZXNdDQorICBCYXNlTGliDQorICBC YXNlTWVtb3J5TGliDQorICBEZWJ1Z0xpYg0KKyAgSXBtaUxpYg0KKyAgTWVtb3J5QWxsb2NhdGlv bkxpYg0KKyAgUGNkTGliDQorICBVZWZpQm9vdFNlcnZpY2VzVGFibGVMaWINCisgIFVlZmlEcml2 ZXJFbnRyeVBvaW50DQorDQorW1BhY2thZ2VzXQ0KKyAgTWRlUGtnL01kZVBrZy5kZWMNCisgIE1k ZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQorICBNYW5hZ2VhYmlsaXR5UGtnL01hbmFnZWFi aWxpdHlQa2cuZGVjDQorDQorW1Byb3RvY29sc10NCisgIGdFZGtpaUlwbWlCbG9iVHJhbnNmZXJQ cm90b2NvbEd1aWQNCisNCitbRGVwZXhdDQorICBUUlVFDQpkaWZmIC0tZ2l0IGEvRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9Vbml0VGVzdC9J cG1pQmxvYlRyYW5zZmVyVGVzdFVuaXRUZXN0c0hvc3QuaW5mIGIvRmVhdHVyZXMvTWFuYWdlYWJp bGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9Vbml0VGVzdC9JcG1pQmxvYlRy YW5zZmVyVGVzdFVuaXRUZXN0c0hvc3QuaW5mDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXgg MDAwMDAwMDAwMC4uMWYwNzFiYmFkYw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvRmVhdHVyZXMvTWFu YWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9Vbml0VGVzdC9JcG1p QmxvYlRyYW5zZmVyVGVzdFVuaXRUZXN0c0hvc3QuaW5mDQpAQCAtMCwwICsxLDQwIEBADQorIyMg QGZpbGUNCisjIFVuaXQgdGVzdHMgb2YgdGhlIElwbWkgYmxvYiB0cmFuc2ZlciBkcml2ZXIgdGhh dCBhcmUgcnVuIGZyb20gYSBob3N0IGVudmlyb25tZW50Lg0KKyMNCisjIENvcHlyaWdodCAoYykg MjAyMC0yMDIzLCBOVklESUEgQ09SUE9SQVRJT04gJiBBRkZJTElBVEVTLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KKyMNCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQorIyMNCisNCitbRGVmaW5lc10NCisgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAg ICA9IDB4MDAwMTAwMDYNCisgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IElwbWlC bG9iVHJhbnNmZXJEeGVVbml0VGVzdHNIb3N0DQorICBGSUxFX0dVSUQgICAgICAgICAgICAgICAg ICAgICAgPSAxZjVkNDA5NS1lYTUyLTQzMmMtYjA3OC04NjA5N2ZlZjYwMDQNCisgIE1PRFVMRV9U WVBFICAgICAgICAgICAgICAgICAgICA9IEhPU1RfQVBQTElDQVRJT04NCisgIFZFUlNJT05fU1RS SU5HICAgICAgICAgICAgICAgICA9IDEuMA0KKw0KKyMNCisjIFRoZSBmb2xsb3dpbmcgaW5mb3Jt YXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5DQorIyBhbmQgbm90IHJlcXVpcmVkIGJ5IHRoZSBi dWlsZCB0b29scy4NCisjDQorIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAgPSBYNjQN CisjDQorDQorW1NvdXJjZXNdDQorICBJcG1pQmxvYlRyYW5zZmVyVGVzdFVuaXRUZXN0cy5jDQor DQorW1BhY2thZ2VzXQ0KKyAgTWRlUGtnL01kZVBrZy5kZWMNCisgIE1kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZGVjDQorICBNYW5hZ2VhYmlsaXR5UGtnL01hbmFnZWFiaWxpdHlQa2cuZGVjDQor ICBVbml0VGVzdEZyYW1ld29ya1BrZy9Vbml0VGVzdEZyYW1ld29ya1BrZy5kZWMNCisNCitbTGli cmFyeUNsYXNzZXNdDQorICBCYXNlTGliDQorICBCYXNlTWVtb3J5TGliDQorICBEZWJ1Z0xpYg0K KyAgVW5pdFRlc3RMaWINCisgIElwbWlMaWINCisNCitbUHJvdG9jb2xzXQ0KKyAgZ0Vka2lpSXBt aUJsb2JUcmFuc2ZlclByb3RvY29sR3VpZA0KZGlmZiAtLWdpdCBhL0ZlYXR1cmVzL01hbmFnZWFi aWxpdHlQa2cvSW5jbHVkZS9Qcm90b2NvbC9JcG1pQmxvYlRyYW5zZmVyLmggYi9GZWF0dXJlcy9N YW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvUHJvdG9jb2wvSXBtaUJsb2JUcmFuc2Zlci5oDQpuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uOGVhNzFkODgxNg0KLS0tIC9kZXYv bnVsbA0KKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL1Byb3RvY29sL0lw bWlCbG9iVHJhbnNmZXIuaA0KQEAgLTAsMCArMSwxMzYgQEANCisvKiogQGZpbGUNCisNCisgIElQ TUkgQmxvYiBUcmFuc2ZlciBkcml2ZXINCisNCisgIENvcHlyaWdodCAoYykgMjAyMi0yMDIzLCBO VklESUEgQ09SUE9SQVRJT04gJiBBRkZJTElBVEVTLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKw0K KyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCisNCisqKi8N CisjaW5jbHVkZSA8TGlicmFyeS9JcG1pTGliLmg+DQorI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJv b3RTZXJ2aWNlc1RhYmxlTGliLmg+DQorI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvSXBtaS5o Pg0KKw0KKyNkZWZpbmUgSVBNSV9ORVRGTl9PRU0gICAgICAgICAgICAgICAgICAgICAweDJFDQor I2RlZmluZSBJUE1JX09FTV9CTE9CX1RSQU5TRkVSX0NNRCAgICAgICAgIDB4ODANCisjZGVmaW5l IElQTUlfT0VNX0JMT0JfTUFYX0RBVEFfUEVSX1BBQ0tFVCAgNjQNCg0KSXQgaXMgYmV0dGVyIHRv IGF2b2lkIGZpeGluZyB0aGUgcGFja2V0IHNpemUgaGVyZS4NCg0KLSBGb3Igc3NpZiwgZ2V0IGl0 IGZyb20gImdldCBjYXBhYmlsaXRpZXMiIGNvbW1hbmQuIElmIEJNQyBzdXBwb3J0cyBvbmx5IHNp bmdsZS1wYXJ0IHJlYWQvd3JpdGUsIHRoaXMgc2l6ZSBleGNlZWRzIEJNQyBjYXBhYmlsaXR5DQoN Ci0gRm9yIGtjcywgSSBkb24ndCBzZWUgdGhlIGxpbWl0YXRpb24NCg0KSSB0aGluayBsaW1pdGlu ZyB0aGUgc2l6ZSBoZXJlIGlzIHVuc3VpdGFibGUsIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSB0aGlz IHByb3RvY29sIHNob3VsZCBjaGVjayB0aGUgc2l6ZSB0aGVtc2VsdmVzDQoNCisNCisjZGVmaW5l IEJMT0JfVFJBTlNGRVJfU1RBVF9PUEVOX1IgICAgICAgIEJJVDANCisjZGVmaW5lIEJMT0JfVFJB TlNGRVJfU1RBVF9PUEVOX1cgICAgICAgIEJJVDENCisjZGVmaW5lIEJMT0JfVFJBTlNGRVJfU1RB VF9DT01NSVRJTkcgICAgIEJJVDINCisjZGVmaW5lIEJMT0JfVFJBTlNGRVJfU1RBVF9DT01NSVRU RUQgICAgIEJJVDMNCisjZGVmaW5lIEJMT0JfVFJBTlNGRVJfU1RBVF9DT01NSVRfRVJST1IgIEJJ VDQNCisvLyBCaXRzIDUtNyBhcmUgcmVzZXJ2ZWQNCisvLyBCaXRzIDgtMTUgYXJlIGJsb2Itc3Bl Y2lmaWMgZGVmaW5pdGlvbnMNCisNCisvLw0KKy8vICBCbG9iIFRyYW5zZmVyIEZ1bmN0aW9uIFBy b3RvdHlwZXMNCisvLw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVGSUFQSSAqSVBNSV9CTE9C X1RSQU5TRkVSX1BST1RPQ09MX0dFVF9DT1VOVCkoDQorICBPVVQgVUlOVDMyICpDb3VudA0KKyAg KTsNCisNCit0eXBlZGVmDQorRUZJX1NUQVRVUw0KKyhFRklBUEkgKklQTUlfQkxPQl9UUkFOU0ZF Ul9QUk9UT0NPTF9FTlVNRVJBVEUpKA0KKyAgSU4gIFVJTlQzMiAgICAgIEJsb2JJbmRleCwNCisg IE9VVCBDSEFSOCAqQmxvYklkDQorICApOw0KKw0KK3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVG SUFQSSAqSVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX09QRU4pKA0KKyAgSU4gIENIQVI4ICpC bG9iSWQsDQorICBJTiAgVUlOVDE2ICAgICAgRmxhZ3MsDQorICBPVVQgVUlOVDE2ICpTZXNzaW9u SWQNCisgICk7DQorDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJICpJUE1JX0JMT0Jf VFJBTlNGRVJfUFJPVE9DT0xfUkVBRCkoDQorICBJTiAgVUlOVDE2ICAgICAgU2Vzc2lvbklkLA0K KyAgSU4gIFVJTlQzMiAgICAgIE9mZnNldCwNCisgIElOICBVSU5UMzIgICAgICBSZXF1ZXN0ZWRT aXplLA0KKyAgT1VUIFVJTlQ4ICpEYXRhDQorICApOw0KKw0KK3R5cGVkZWYNCitFRklfU1RBVFVT DQorKEVGSUFQSSAqSVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX1dSSVRFKSgNCisgIElOICBV SU5UMTYgICAgICBTZXNzaW9uSWQsDQorICBJTiAgVUlOVDMyICAgICAgT2Zmc2V0LA0KKyAgSU4g IFVJTlQ4ICpEYXRhLA0KKyAgSU4gIFVJTlQzMiAgICAgIFdyaXRlTGVuZ3RoDQorICApOw0KKw0K K3R5cGVkZWYNCitFRklfU1RBVFVTDQorKEVGSUFQSSAqSVBNSV9CTE9CX1RSQU5TRkVSX1BST1RP Q09MX0NPTU1JVCkoDQorICBJTiAgVUlOVDE2ICAgICAgU2Vzc2lvbklkLA0KKyAgSU4gIFVJTlQ4 ICAgICAgIENvbW1pdERhdGFMZW5ndGgsDQorICBJTiAgVUlOVDggKkNvbW1pdERhdGENCisgICk7 DQorDQordHlwZWRlZg0KK0VGSV9TVEFUVVMNCisoRUZJQVBJICpJUE1JX0JMT0JfVFJBTlNGRVJf UFJPVE9DT0xfQ0xPU0UpKA0KKyAgSU4gIFVJTlQxNiAgICAgIFNlc3Npb25JZA0KKyAgKTsNCisN Cit0eXBlZGVmDQorRUZJX1NUQVRVUw0KKyhFRklBUEkgKklQTUlfQkxPQl9UUkFOU0ZFUl9QUk9U T0NPTF9ERUxFVEUpKA0KKyAgSU4gIENIQVI4ICpCbG9iSWQNCisgICk7DQorDQordHlwZWRlZg0K K0VGSV9TVEFUVVMNCisoRUZJQVBJICpJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfU1RBVCko DQorICBJTiAgQ0hBUjggKkJsb2JJZCwNCisgIE9VVCBVSU5UMTYgKkJsb2JTdGF0ZSwNCisgIE9V VCBVSU5UMzIgKlNpemUsDQorICBPVVQgVUlOVDggKk1ldGFkYXRhTGVuZ3RoLA0KKyAgT1VUIFVJ TlQ4ICpNZXRhZGF0YQ0KKyAgKTsNCisNCit0eXBlZGVmDQorRUZJX1NUQVRVUw0KKyhFRklBUEkg KklQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9TRVNTSU9OX1NUQVQpKA0KKyAgSU4gIFVJTlQx NiAgICAgIFNlc3Npb25JZCwNCisgIE9VVCBVSU5UMTYgKkJsb2JTdGF0ZSwNCisgIE9VVCBVSU5U MzIgKlNpemUsDQorICBPVVQgVUlOVDggKk1ldGFkYXRhTGVuZ3RoLA0KKyAgT1VUIFVJTlQ4ICpN ZXRhZGF0YQ0KKyAgKTsNCisNCit0eXBlZGVmDQorRUZJX1NUQVRVUw0KKyhFRklBUEkgKklQTUlf QkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9XUklURV9NRVRBKSgNCisgIElOICBVSU5UMTYgICAgICBT ZXNzaW9uSWQsDQorICBJTiAgVUlOVDMyICAgICAgT2Zmc2V0LA0KKyAgSU4gIFVJTlQ4ICpEYXRh LA0KKyAgSU4gIFVJTlQzMiAgICAgIFdyaXRlTGVuZ3RoDQorICApOw0KKw0KKy8vDQorLy8gU3Ry dWN0dXJlIG9mIElQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTA0KKy8vDQorc3RydWN0IF9JUE1J X0JMT0JfVFJBTlNGRVJfUFJPVE9DT0wgew0KKyAgSVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09M X0dFVF9DT1VOVCAgICAgICBCbG9iR2V0Q291bnQ7DQorICBJUE1JX0JMT0JfVFJBTlNGRVJfUFJP VE9DT0xfRU5VTUVSQVRFICAgICAgIEJsb2JFbnVtZXJhdGU7DQorICBJUE1JX0JMT0JfVFJBTlNG RVJfUFJPVE9DT0xfT1BFTiAgICAgICAgICAgIEJsb2JPcGVuOw0KKyAgSVBNSV9CTE9CX1RSQU5T RkVSX1BST1RPQ09MX1JFQUQgICAgICAgICAgICBCbG9iUmVhZDsNCisgIElQTUlfQkxPQl9UUkFO U0ZFUl9QUk9UT0NPTF9XUklURSAgICAgICAgICAgQmxvYldyaXRlOw0KKyAgSVBNSV9CTE9CX1RS QU5TRkVSX1BST1RPQ09MX0NPTU1JVCAgICAgICAgICBCbG9iQ29tbWl0Ow0KKyAgSVBNSV9CTE9C X1RSQU5TRkVSX1BST1RPQ09MX0NMT1NFICAgICAgICAgICBCbG9iQ2xvc2U7DQorICBJUE1JX0JM T0JfVFJBTlNGRVJfUFJPVE9DT0xfREVMRVRFICAgICAgICAgIEJsb2JEZWxldGU7DQorICBJUE1J X0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfU1RBVCAgICAgICAgICAgIEJsb2JTdGF0Ow0KKyAgSVBN SV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX1NFU1NJT05fU1RBVCAgICBCbG9iU2Vzc2lvblN0YXQ7 DQorICBJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfV1JJVEVfTUVUQSAgICAgIEJsb2JXcml0 ZU1ldGE7DQorfTsNCisNCit0eXBlZGVmIHN0cnVjdCBfSVBNSV9CTE9CX1RSQU5TRkVSX1BST1RP Q09MIElQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTDsNCisNCitleHRlcm4gRUZJX0dVSUQgIGdF ZGtpaUlwbWlCbG9iVHJhbnNmZXJQcm90b2NvbEd1aWQ7DQpkaWZmIC0tZ2l0IGEvRmVhdHVyZXMv TWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9JbnRlcm5hbElw bWlCbG9iVHJhbnNmZXIuaCBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lw bWlCbG9iVHJhbnNmZXJEeGUvSW50ZXJuYWxJcG1pQmxvYlRyYW5zZmVyLmgNCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwLi4xNGYwZGMwMmJjDQotLS0gL2Rldi9udWxsDQor KysgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVy RHhlL0ludGVybmFsSXBtaUJsb2JUcmFuc2Zlci5oDQpAQCAtMCwwICsxLDM2MyBAQA0KKy8qKiBA ZmlsZQ0KKw0KKyAgSGVhZGVycyBmb3IgSVBNSSBCbG9iIFRyYW5zZmVyIGRyaXZlcg0KKw0KKyAg Q29weXJpZ2h0IChjKSAyMDIyLTIwMjMsIE5WSURJQSBDT1JQT1JBVElPTiAmIEFGRklMSUFURVMu IEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KKw0KKyoqLw0KKw0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIu aD4NCisjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQorI2luY2x1ZGUgPExpYnJh cnkvRGVidWdMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9JcG1pTGliLmg+DQorI2luY2x1ZGUg PExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5L1BjZExp Yi5oPg0KKw0KKyNkZWZpbmUgUFJPVE9DT0xfUkVTUE9OU0VfT1ZFUkhFQUQgICg0ICogc2l6ZW9m KFVJTlQ4KSkgICAgIC8vIDEgYnl0ZSBjb21wbGV0aW9uIGNvZGUgKyAzIGJ5dGVzIE9FTg0KKw0K Ky8vIFN1YmNvbW1hbmRzIGZvciB0aGlzIHByb3RvY29sDQordHlwZWRlZiBlbnVtIHsNCisgIElw bWlCbG9iVHJhbnNmZXJTdWJjb21tYW5kR2V0Q291bnQgPSAwLA0KKyAgSXBtaUJsb2JUcmFuc2Zl clN1YmNvbW1hbmRFbnVtZXJhdGUsDQorICBJcG1pQmxvYlRyYW5zZmVyU3ViY29tbWFuZE9wZW4s DQorICBJcG1pQmxvYlRyYW5zZmVyU3ViY29tbWFuZFJlYWQsDQorICBJcG1pQmxvYlRyYW5zZmVy U3ViY29tbWFuZFdyaXRlLA0KKyAgSXBtaUJsb2JUcmFuc2ZlclN1YmNvbW1hbmRDb21taXQsDQor ICBJcG1pQmxvYlRyYW5zZmVyU3ViY29tbWFuZENsb3NlLA0KKyAgSXBtaUJsb2JUcmFuc2ZlclN1 YmNvbW1hbmREZWxldGUsDQorICBJcG1pQmxvYlRyYW5zZmVyU3ViY29tbWFuZFN0YXQsDQorICBJ cG1pQmxvYlRyYW5zZmVyU3ViY29tbWFuZFNlc3Npb25TdGF0LA0KKyAgSXBtaUJsb2JUcmFuc2Zl clN1YmNvbW1hbmRXcml0ZU1ldGEsDQorfSBJUE1JX0JMT0JfVFJBTlNGRVJfU1VCQ09NTUFORFM7 DQorDQorI3ByYWdtYSBwYWNrKDEpDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgVUlOVDggICAg T0VOWzNdOw0KKyAgVUlOVDggICAgU3ViQ29tbWFuZDsNCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9I RUFERVI7DQorDQorLy8NCisvLyBDb21tYW5kIDAgLSBCbWNCbG9iR2V0Q291bnQNCisvLyBUaGUg Qm1jQmxvYkdldENvdW50IGNvbW1hbmQgZXhwZWN0cyB0byByZWNlaXZlIGFuIGVtcHR5IGJvZHku DQorLy8gVGhlIEJNQyB3aWxsIHJldHVybiB0aGUgbnVtYmVyIG9mIGVudW1lcmFibGUgYmxvYnMN CisvLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFVJTlQzMiAgICBCbG9iQ291bnQ7DQorfSBJUE1J X0JMT0JfVFJBTlNGRVJfR0VUX0NPVU5UX1JFU1BPTlNFOw0KKw0KKy8vDQorLy8gQ29tbWFuZCAx IC0gQm1jQmxvYkVudW1lcmF0ZQ0KKy8vIFRoZSBCbWNCbG9iRW51bWVyYXRlIGNvbW1hbmQgZXhw ZWN0cyB0byByZWNlaXZlIGEgYm9keSBvZjoNCisvLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFVJ TlQzMiAgICBCbG9iSW5kZXg7IC8vIDAtYmFzZWQgaW5kZXggb2YgYmxvYiB0byByZWNlaXZlDQor fSBJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9FTlVNRVJBVEVfU0VORF9EQVRBOw0KKw0KK3R5cGVk ZWYgc3RydWN0IHsNCisgIENIQVI4ICAgIEJsb2JJZFtJUE1JX09FTV9CTE9CX01BWF9EQVRBX1BF Ul9QQUNLRVRdOw0KK30gSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfRU5VTUVSQVRFX1JFU1BPTlNF Ow0KKw0KKy8vDQorLy8gQ29tbWFuZCAyIC0gQm1jQmxvYk9wZW4NCisvLyBUaGUgQm1jQmxvYk9w ZW4gY29tbWFuZCBleHBlY3RzIHRvIHJlY2VpdmUgYSBib2R5IG9mOg0KKy8vDQordHlwZWRlZiBz dHJ1Y3Qgew0KKyAgVUlOVDE2ICAgIEZsYWdzOw0KKyAgQ0hBUjggICAgIEJsb2JJZFtJUE1JX09F TV9CTE9CX01BWF9EQVRBX1BFUl9QQUNLRVRdOw0KK30gSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0Jf T1BFTl9TRU5EX0RBVEE7DQorDQorI2RlZmluZSBCTE9CX09QRU5fRkxBR19SRUFEICAgMA0KKyNk ZWZpbmUgQkxPQl9PUEVOX0ZMQUdfV1JJVEUgIDENCisvLyBCaXRzIDItNyBhcmUgcmVzZXJ2ZWQN CisvLyBCaXRzIDgtMTUgYXJlIGJsb2Itc3BlY2lmaWMgZGVmaW5pdGlvbnMNCisNCit0eXBlZGVm IHN0cnVjdCB7DQorICBVSU5UMTYgICAgU2Vzc2lvbklkOw0KK30gSVBNSV9CTE9CX1RSQU5TRkVS X0JMT0JfT1BFTl9SRVNQT05TRTsNCisNCisvLw0KKy8vIENvbW1hbmQgMyAtIEJtY0Jsb2JSZWFk DQorLy8gVGhlIEJtY0Jsb2JSZWFkIGNvbW1hbmQgZXhwZWN0cyB0byByZWNlaXZlIGEgYm9keSBv ZjoNCisvLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFVJTlQxNiAgICBTZXNzaW9uSWQ7IC8vIFJl dHVybmVkIGZyb20gQmxvYk9wZW4NCisgIFVJTlQzMiAgICBPZmZzZXQ7DQorICBVSU5UMzIgICAg UmVxdWVzdGVkU2l6ZTsNCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1JFQURfU0VORF9EQVRB Ow0KKw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFVJTlQ4ICAgIERhdGFbSVBNSV9PRU1fQkxPQl9N QVhfREFUQV9QRVJfUEFDS0VUXTsNCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1JFQURfUkVT UE9OU0U7DQorDQorLy8NCisvLyBDb21tYW5kIDQgLSBCbWNCbG9iV3JpdGUNCisvLyBUaGUgQm1j QmxvYldyaXRlIGNvbW1hbmQgZXhwZWN0cyB0byByZWNlaXZlIGEgYm9keSBvZjoNCisvLw0KK3R5 cGVkZWYgc3RydWN0IHsNCisgIFVJTlQxNiAgICBTZXNzaW9uSWQ7IC8vIFJldHVybmVkIGZyb20g QmxvYk9wZW4NCisgIFVJTlQzMiAgICBPZmZzZXQ7DQorICBVSU5UOCAgICAgRGF0YVtJUE1JX09F TV9CTE9CX01BWF9EQVRBX1BFUl9QQUNLRVRdOw0KK30gSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0Jf V1JJVEVfU0VORF9EQVRBOw0KKw0KKy8vDQorLy8gQ29tbWFuZCA1IC0gQm1jQmxvYkNvbW1pdA0K Ky8vIFRoZSBCbWNCbG9iQ29tbWl0IGNvbW1hbmQgZXhwZWN0cyB0byByZWNlaXZlIGEgYm9keSBv ZjoNCisvLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFVJTlQxNiAgICBTZXNzaW9uSWQ7IC8vIFJl dHVybmVkIGZyb20gQmxvYk9wZW4NCisgIFVJTlQ4ICAgICBDb21taXREYXRhTGVuZ3RoOw0KKyAg VUlOVDggICAgIENvbW1pdERhdGFbSVBNSV9PRU1fQkxPQl9NQVhfREFUQV9QRVJfUEFDS0VUXTsN Cit9IElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX0NPTU1JVF9TRU5EX0RBVEE7DQorDQorLy8NCisv LyBDb21tYW5kIDYgLSBCbWNCbG9iQ2xvc2UNCisvLyBUaGUgQm1jQmxvYkNsb3NlIGNvbW1hbmQg ZXhwZWN0cyB0byByZWNlaXZlIGEgYm9keSBvZjoNCisvLw0KK3R5cGVkZWYgc3RydWN0IHsNCisg IFVJTlQxNiAgICBTZXNzaW9uSWQ7IC8vIFJldHVybmVkIGZyb20gQmxvYk9wZW4NCit9IElQTUlf QkxPQl9UUkFOU0ZFUl9CTE9CX0NMT1NFX1NFTkRfREFUQTsNCisNCisvLw0KKy8vIENvbW1hbmQg NyAtIEJtY0Jsb2JEZWxldGUNCisvLyBOT1RFOiBUaGlzIGNvbW1hbmQgd2lsbCBmYWlsIGlmIHRo ZXJlIGFyZSBvcGVuIHNlc3Npb25zIGZvciB0aGlzIGJsb2INCisvLyBUaGUgQm1jQmxvYkRlbGV0 ZSBjb21tYW5kIGV4cGVjdHMgdG8gcmVjZWl2ZSBhIGJvZHkgb2Y6DQorLy8NCit0eXBlZGVmIHN0 cnVjdCB7DQorICBDSEFSOCAgICBCbG9iSWRbSVBNSV9PRU1fQkxPQl9NQVhfREFUQV9QRVJfUEFD S0VUXTsNCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX0RFTEVURV9TRU5EX0RBVEE7DQorDQor Ly8NCisvLyBDb21tYW5kIDggLSBCbWNCbG9iU3RhdA0KKy8vIFRoaXMgY29tbWFuZCByZXR1cm5z IHN0YXRpc3RpY3MgYWJvdXQgYSBibG9iLg0KKy8vIFRoaXMgY29tbWFuZCBleHBlY3RzIHRvIHJl Y2VpdmUgYSBib2R5IG9mOg0KKy8vDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgQ0hBUjggICAgQmxv YklkW0lQTUlfT0VNX0JMT0JfTUFYX0RBVEFfUEVSX1BBQ0tFVF07DQorfSBJUE1JX0JMT0JfVFJB TlNGRVJfQkxPQl9TVEFUX1NFTkRfREFUQTsNCisNCit0eXBlZGVmIHN0cnVjdCB7DQorICBVSU5U MTYgICAgQmxvYlN0YXRlOw0KKyAgVUlOVDMyICAgIFNpemU7IC8vIFNpemUgaW4gYnl0ZXMgb2Yg dGhlIGJsb2INCisgIFVJTlQ4ICAgICBNZXRhRGF0YUxlbjsNCisgIFVJTlQ4ICAgICBNZXRhRGF0 YVtJUE1JX09FTV9CTE9CX01BWF9EQVRBX1BFUl9QQUNLRVRdOw0KK30gSVBNSV9CTE9CX1RSQU5T RkVSX0JMT0JfU1RBVF9SRVNQT05TRTsNCisNCisvLw0KKy8vIENvbW1hbmQgOSAtIEJtY0Jsb2JT ZXNzaW9uU3RhdA0KKy8vIFJldHVybnMgc2FtZSBkYXRhIGFzIEJtY0Jsb2JTdGF0ZSBleHBlY3Qg Zm9yIGEgc2Vzc2lvbiwgbm90IGEgYmxvYg0KKy8vIFRoaXMgY29tbWFuZCBleHBlY3RzIHRvIHJl Y2VpdmUgYSBib2R5IG9mOg0KKy8vDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgVUlOVDE2ICAgIFNl c3Npb25JZDsNCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1NFU1NJT05fU1RBVF9TRU5EX0RB VEE7DQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgVUlOVDE2ICAgIEJsb2JTdGF0ZTsNCisgIFVJ TlQzMiAgICBTaXplOyAvLyBTaXplIGluIGJ5dGVzIG9mIHRoZSBibG9iDQorICBVSU5UOCAgICAg TWV0YURhdGFMZW47DQorICBVSU5UOCAgICAgTWV0YURhdGFbSVBNSV9PRU1fQkxPQl9NQVhfREFU QV9QRVJfUEFDS0VUXTsNCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1NFU1NJT05fU1RBVF9S RVNQT05TRTsNCisNCisvLw0KKy8vIENvbW1hbmQgMTAgLSBCbWNCbG9iV3JpdGVNZXRhDQorLy8g VGhlIEJtY0Jsb2JXcml0ZU1ldGEgY29tbWFuZCBleHBlY3RzIHRvIHJlY2VpdmUgYSBib2R5IG9m Og0KKy8vDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAgVUlOVDE2ICAgIFNlc3Npb25JZDsNCisgIFVJ TlQzMiAgICBPZmZzZXQ7DQorICBVSU5UOCAgICAgRGF0YVtJUE1JX09FTV9CTE9CX01BWF9EQVRB X1BFUl9QQUNLRVRdOw0KK30gSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfV1JJVEVfTUVUQV9TRU5E X0RBVEE7DQorDQorI2RlZmluZSBJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9XUklURV9NRVRBX1JF U1BPTlNFICBOVUxMDQorDQorI3ByYWdtYSBwYWNrKCkNCisNCisvKioNCisgIENhbGN1bGF0ZSBD UkMtMTYtQ0NJVFQgd2l0aCBwb2x5IG9mIDB4MTAyMQ0KKw0KKyAgQHBhcmFtW2luXSAgRGF0YSAg ICAgICAgICAgICAgVGhlIHRhcmdldCBkYXRhLg0KKyAgQHBhcmFtW2luXSAgRGF0YVNpemUgICAg ICAgICAgVGhlIHRhcmdldCBkYXRhIHNpemUuDQorDQorICBAcmV0dXJuIFVJTlQxNiAgICAgVGhl IENSQzE2IHZhbHVlLg0KKw0KKyoqLw0KK1VJTlQxNg0KK0NhbGN1bGF0ZUNyYzE2ICgNCisgIElO IFVJTlQ4ICAqRGF0YSwNCisgIElOIFVJTlROICBEYXRhU2l6ZQ0KKyAgKTsNCisNCitFRklfU1RB VFVTDQorSXBtaUJsb2JUcmFuc2ZlclNlbmRJcG1pICgNCisgIElOICBVSU5UOCAgIFN1YkNvbW1h bmQsDQorICBJTiAgVUlOVDggICAqU2VuZERhdGEsDQorICBJTiAgVUlOVDMyICBTZW5kRGF0YVNp emUsDQorICBPVVQgVUlOVDggICAqUmVzcG9uc2VEYXRhLA0KKyAgT1VUIFVJTlQzMiAgKlJlc3Bv bnNlRGF0YVNpemUNCisgICk7DQorDQorLyoqDQorICBAcGFyYW1bb3V0XSAgICAgICAgQ291bnQg ICAgICAgVGhlIG51bWJlciBvZiBhY3RpdmUgYmxvYnMNCisNCisgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgICBTdWNjZXNzZnVsbHkgcmV0cmlldmVkIHRoZSBudW1iZXIgb2YgYWN0aXZl IGJsb2JzLg0KKyAgQHJldHZhbCBPdGhlciAgICAgICAgICAgICAgICAgIEFuIGVycm9yIG9jY3Vy cmVkDQorKiovDQorRUZJX1NUQVRVUw0KK0lwbWlCbG9iVHJhbnNmZXJHZXRDb3VudCAoDQorICBP VVQgVUlOVDMyICAqQ291bnQNCisgICk7DQorDQorLyoqDQorICBAcGFyYW1baW5dICAgICAgICAg QmxvYkluZGV4ICAgICAgIFRoZSAwLWJhc2VkIEluZGV4IG9mIHRoZSBibG9iIHRvIGVudW1lcmF0 ZQ0KKyAgQHBhcmFtW291dF0gICAgICAgIEJsb2JJZCAgICAgICAgICBUaGUgSUQgb2YgdGhlIGJs b2INCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgU3VjY2Vzc2Z1bGx5 IGVudW1lcmF0ZWQgdGhlIGJsb2IuDQorICBAcmV0dmFsIE90aGVyICAgICAgICAgICAgICAgICAg ICAgIEFuIGVycm9yIG9jY3VycmVkDQorKiovDQorRUZJX1NUQVRVUw0KK0lwbWlCbG9iVHJhbnNm ZXJFbnVtZXJhdGUgKA0KKyAgSU4gIFVJTlQzMiAgQmxvYkluZGV4LA0KKyAgT1VUIENIQVI4ICAg KkJsb2JJZA0KKyAgKTsNCisNCisvKioNCisgIEBwYXJhbVtpbl0gICAgICAgICBCbG9iSWQgICAg ICAgICAgVGhlIElEIG9mIHRoZSBibG9iIHRvIG9wZW4NCisgIEBwYXJhbVtpbl0gICAgICAgICBG bGFncyAgICAgICAgICAgRmxhZ3MgdG8gY29udHJvbCBob3cgdGhlIGJsb2IgaXMgb3BlbmVkDQor ICBAcGFyYW1bb3V0XSAgICAgICAgU2Vzc2lvbklkICAgICAgIEEgdW5pcXVlIHNlc3Npb24gaWRl bnRpZmllcg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICBTdWNjZXNz ZnVsbHkgb3BlbmVkIHRoZSBibG9iLg0KKyAgQHJldHZhbCBPdGhlciAgICAgICAgICAgICAgICAg ICAgICBBbiBlcnJvciBvY2N1cnJlZA0KKyoqLw0KK0VGSV9TVEFUVVMNCitJcG1pQmxvYlRyYW5z ZmVyT3BlbiAoDQorICBJTiAgQ0hBUjggICAqQmxvYklkLA0KKyAgSU4gIFVJTlQxNiAgRmxhZ3Ms DQorICBPVVQgVUlOVDE2ICAqU2Vzc2lvbklkDQorICApOw0KKw0KKy8qKg0KKyAgQHBhcmFtW2lu XSAgICAgICAgIFNlc3Npb25JZCAgICAgICBUaGUgc2Vzc2lvbiBJRCByZXR1cm5lZCBmcm9tIGEg Y2FsbCB0byBCbG9iT3Blbg0KKyAgQHBhcmFtW2luXSAgICAgICAgIE9mZnNldCAgICAgICAgICBU aGUgb2Zmc2V0IG9mIHRoZSBibG9iIGZyb20gd2hpY2ggdG8gc3RhcnQgcmVhZGluZw0KKyAgQHBh cmFtW2luXSAgICAgICAgIFJlcXVlc3RlZFNpemUgICBUaGUgbGVuZ3RoIG9mIGRhdGEgdG8gcmVh ZA0KKyAgQHBhcmFtW291dF0gICAgICAgIERhdGEgICAgICAgICAgICBEYXRhIHJlYWQgZnJvbSB0 aGUgYmxvYg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICBTdWNjZXNz ZnVsbHkgcmVhZCBmcm9tIHRoZSBibG9iLg0KKyAgQHJldHZhbCBPdGhlciAgICAgICAgICAgICAg ICAgICAgICBBbiBlcnJvciBvY2N1cnJlZA0KKyoqLw0KK0VGSV9TVEFUVVMNCitJcG1pQmxvYlRy YW5zZmVyUmVhZCAoDQorICBJTiAgVUlOVDE2ICBTZXNzaW9uSWQsDQorICBJTiAgVUlOVDMyICBP ZmZzZXQsDQorICBJTiAgVUlOVDMyICBSZXF1ZXN0ZWRTaXplLA0KKyAgT1VUIFVJTlQ4ICAgKkRh dGENCisgICk7DQorDQorLyoqDQorICBAcGFyYW1baW5dICAgICAgICAgU2Vzc2lvbklkICAgICAg IFRoZSBzZXNzaW9uIElEIHJldHVybmVkIGZyb20gYSBjYWxsIHRvIEJsb2JPcGVuDQorICBAcGFy YW1baW5dICAgICAgICAgT2Zmc2V0ICAgICAgICAgIFRoZSBvZmZzZXQgb2YgdGhlIGJsb2IgZnJv bSB3aGljaCB0byBzdGFydCB3cml0aW5nDQorICBAcGFyYW1baW5dICAgICAgICAgRGF0YSAgICAg ICAgICAgIEEgcG9pbnRlciB0byB0aGUgZGF0YSB0byB3cml0ZQ0KKw0KKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgICAgICBTdWNjZXNzZnVsbHkgd3JvdGUgdG8gdGhlIGJsb2IuDQor ICBAcmV0dmFsIE90aGVyICAgICAgICAgICAgICAgICAgICAgIEFuIGVycm9yIG9jY3VycmVkDQor KiovDQorRUZJX1NUQVRVUw0KK0lwbWlCbG9iVHJhbnNmZXJXcml0ZSAoDQorICBJTiAgVUlOVDE2 ICBTZXNzaW9uSWQsDQorICBJTiAgVUlOVDMyICBPZmZzZXQsDQorICBJTiAgVUlOVDggICAqRGF0 YSwNCisgIElOICBVSU5UMzIgIFdyaXRlTGVuZ3RoDQorICApOw0KKw0KKy8qKg0KKyAgQHBhcmFt W2luXSAgICAgICAgIFNlc3Npb25JZCAgICAgICAgVGhlIHNlc3Npb24gSUQgcmV0dXJuZWQgZnJv bSBhIGNhbGwgdG8gQmxvYk9wZW4NCisgIEBwYXJhbVtpbl0gICAgICAgICBDb21taXREYXRhTGVu Z3RoIFRoZSBsZW5ndGggb2YgZGF0YSB0byBjb21taXQgdG8gdGhlIGJsb2INCisgIEBwYXJhbVtp bl0gICAgICAgICBDb21taXREYXRhICAgICAgIEEgcG9pbnRlciB0byB0aGUgZGF0YSB0byBjb21t aXQNCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgU3VjY2Vzc2Z1bCBj b21taXQgdG8gdGhlIGJsb2IuDQorICBAcmV0dmFsIE90aGVyICAgICAgICAgICAgICAgICAgICAg IEFuIGVycm9yIG9jY3VycmVkDQorKiovDQorRUZJX1NUQVRVUw0KK0lwbWlCbG9iVHJhbnNmZXJD b21taXQgKA0KKyAgSU4gIFVJTlQxNiAgU2Vzc2lvbklkLA0KKyAgSU4gIFVJTlQ4ICAgQ29tbWl0 RGF0YUxlbmd0aCwNCisgIElOICBVSU5UOCAgICpDb21taXREYXRhDQorICApOw0KKw0KKy8qKg0K KyAgQHBhcmFtW2luXSAgICAgICAgIFNlc3Npb25JZCAgICAgICBUaGUgc2Vzc2lvbiBJRCByZXR1 cm5lZCBmcm9tIGEgY2FsbCB0byBCbG9iT3Blbg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAg ICAgICAgICAgICAgICBUaGUgYmxvYiB3YXMgY2xvc2VkLg0KKyAgQHJldHZhbCBPdGhlciAgICAg ICAgICAgICAgICAgICAgICBBbiBlcnJvciBvY2N1cnJlZA0KKyoqLw0KK0VGSV9TVEFUVVMNCitJ cG1pQmxvYlRyYW5zZmVyQ2xvc2UgKA0KKyAgSU4gIFVJTlQxNiAgU2Vzc2lvbklkDQorICApOw0K Kw0KKy8qKg0KKyAgQHBhcmFtW2luXSAgICAgICAgIEJsb2JJZCAgICAgICAgICBUaGUgQmxvYklk IHRvIGJlIGRlbGV0ZWQNCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAg VGhlIGJsb2Igd2FzIGRlbGV0ZWQuDQorICBAcmV0dmFsIE90aGVyICAgICAgICAgICAgICAgICAg ICAgIEFuIGVycm9yIG9jY3VycmVkDQorKiovDQorRUZJX1NUQVRVUw0KK0lwbWlCbG9iVHJhbnNm ZXJEZWxldGUgKA0KKyAgSU4gIENIQVI4ICAqQmxvYklkDQorICApOw0KKw0KKy8qKg0KKyAgQHBh cmFtW2luXSAgICAgICAgIEJsb2JJZCAgICAgICAgICBUaGUgQmxvYiBJRCB0byBnYXRoZXIgc3Rh dGlzdGljcyBmb3INCisgIEBwYXJhbVtvdXRdICAgICAgICBCbG9iU3RhdGUgICAgICAgVGhlIGN1 cnJlbnQgc3RhdGUgb2YgdGhlIGJsb2INCisgIEBwYXJhbVtvdXRdICAgICAgICBTaXplICAgICAg ICAgICAgU2l6ZSBpbiBieXRlcyBvZiB0aGUgYmxvYg0KKyAgQHBhcmFtW291dF0gICAgICAgIE1l dGFkYXRhTGVuZ3RoICBMZW5ndGggb2YgdGhlIG9wdGlvbmFsIG1ldGFkYXRhDQorICBAcGFyYW1b b3V0XSAgICAgICAgTWV0YWRhdGEgICAgICAgIE9wdGlvbmFsIGJsb2Itc3BlY2lmaWMgbWV0YWRh dGENCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgVGhlIGJsb2Igc3Rh dGlzdGljcyB3ZXJlIHN1Y2Nlc3NmdWxseSBnYXRoZXJlZC4NCisgIEByZXR2YWwgT3RoZXIgICAg ICAgICAgICAgICAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQNCisqKi8NCitFRklfU1RBVFVTDQor SXBtaUJsb2JUcmFuc2ZlclN0YXQgKA0KKyAgSU4gIENIQVI4ICAgKkJsb2JJZCwNCisgIE9VVCBV SU5UMTYgICpCbG9iU3RhdGUsDQorICBPVVQgVUlOVDMyICAqU2l6ZSwNCisgIE9VVCBVSU5UOCAg ICpNZXRhZGF0YUxlbmd0aCwNCisgIE9VVCBVSU5UOCAgICpNZXRhZGF0YQ0KKyAgKTsNCisNCisv KioNCisgIEBwYXJhbVtpbl0gICAgICAgICBTZXNzaW9uSWQgICAgICAgVGhlIElEIG9mIHRoZSBz ZXNzaW9uIHRvIGdhdGhlciBzdGF0aXN0aWNzIGZvcg0KKyAgQHBhcmFtW291dF0gICAgICAgIEJs b2JTdGF0ZSAgICAgICBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYmxvYg0KKyAgQHBhcmFtW291 dF0gICAgICAgIFNpemUgICAgICAgICAgICBTaXplIGluIGJ5dGVzIG9mIHRoZSBibG9iDQorICBA cGFyYW1bb3V0XSAgICAgICAgTWV0YWRhdGFMZW5ndGggIExlbmd0aCBvZiB0aGUgb3B0aW9uYWwg bWV0YWRhdGENCisgIEBwYXJhbVtvdXRdICAgICAgICBNZXRhZGF0YSAgICAgICAgT3B0aW9uYWwg YmxvYi1zcGVjaWZpYyBtZXRhZGF0YQ0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgICAgICBUaGUgYmxvYiBzdGF0aXN0aWNzIHdlcmUgc3VjY2Vzc2Z1bGx5IGdhdGhlcmVkLg0K KyAgQHJldHZhbCBPdGhlciAgICAgICAgICAgICAgICAgICAgICBBbiBlcnJvciBvY2N1cnJlZA0K KyoqLw0KK0VGSV9TVEFUVVMNCitJcG1pQmxvYlRyYW5zZmVyU2Vzc2lvblN0YXQgKA0KKyAgSU4g IFVJTlQxNiAgU2Vzc2lvbklkLA0KKyAgT1VUIFVJTlQxNiAgKkJsb2JTdGF0ZSwNCisgIE9VVCBV SU5UMzIgICpTaXplLA0KKyAgT1VUIFVJTlQ4ICAgKk1ldGFkYXRhTGVuZ3RoLA0KKyAgT1VUIFVJ TlQ4ICAgKk1ldGFkYXRhDQorICApOw0KKw0KKy8qKg0KKyAgQHBhcmFtW2luXSAgICAgICAgIFNl c3Npb25JZCAgICAgICBUaGUgSUQgb2YgdGhlIHNlc3Npb24gdG8gd3JpdGUgbWV0YWRhdGEgZm9y DQorICBAcGFyYW1baW5dICAgICAgICAgT2Zmc2V0ICAgICAgICAgIFRoZSBvZmZzZXQgb2YgdGhl IG1ldGFkYXRhIHRvIHdyaXRlIHRvDQorICBAcGFyYW1baW5dICAgICAgICAgRGF0YSAgICAgICAg ICAgIFRoZSBkYXRhIHRvIHdyaXRlIHRvIHRoZSBtZXRhZGF0YQ0KKw0KKyAgQHJldHZhbCBFRklf U1VDQ0VTUyAgICAgICAgICAgICAgICBUaGUgYmxvYiBtZXRhZGF0YSB3YXMgc3VjY2Vzc2Z1bGx5 IHdyaXR0ZW4uDQorICBAcmV0dmFsIE90aGVyICAgICAgICAgICAgICAgICAgICAgIEFuIGVycm9y IG9jY3VycmVkDQorKiovDQorRUZJX1NUQVRVUw0KK0lwbWlCbG9iVHJhbnNmZXJXcml0ZU1ldGEg KA0KKyAgSU4gIFVJTlQxNiAgU2Vzc2lvbklkLA0KKyAgSU4gIFVJTlQzMiAgT2Zmc2V0LA0KKyAg SU4gIFVJTlQ4ICAgKkRhdGEsDQorICBJTiAgVUlOVDMyICBXcml0ZUxlbmd0aA0KKyAgKTsNCmRp ZmYgLS1naXQgYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRy YW5zZmVyRHhlL0lwbWlCbG9iVHJhbnNmZXJEeGUuYyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQ a2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJEeGUvSXBtaUJsb2JUcmFuc2ZlckR4ZS5jDQpu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMC4uOWU2NjMyODlkNQ0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJs b2JUcmFuc2ZlckR4ZS9JcG1pQmxvYlRyYW5zZmVyRHhlLmMNCkBAIC0wLDAgKzEsNzk5IEBADQor LyoqIEBmaWxlDQorDQorICBJUE1JIEJsb2IgVHJhbnNmZXIgZHJpdmVyDQorDQorICBDb3B5cmln aHQgKGMpIDIwMjItMjAyMywgTlZJRElBIENPUlBPUkFUSU9OICYgQUZGSUxJQVRFUy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4NCisNCisgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQorDQorKiovDQorI2luY2x1ZGUgPFByb3RvY29sL0lwbWlCbG9iVHJhbnNmZXIu aD4NCisNCisjaW5jbHVkZSAiSW50ZXJuYWxJcG1pQmxvYlRyYW5zZmVyLmgiDQorDQorI2RlZmlu ZSBCTE9CX1RSQU5TRkVSX0RFQlVHICAwDQorDQorU1RBVElDIENPTlNUIElQTUlfQkxPQl9UUkFO U0ZFUl9QUk9UT0NPTCAgbUlwbWlCbG9iVHJhbnNmZXIgPSB7DQorICAoSVBNSV9CTE9CX1RSQU5T RkVSX1BST1RPQ09MX0dFVF9DT1VOVCkqSXBtaUJsb2JUcmFuc2ZlckdldENvdW50LA0KKyAgKElQ TUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9FTlVNRVJBVEUpKklwbWlCbG9iVHJhbnNmZXJFbnVt ZXJhdGUsDQorICAoSVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX09QRU4pKklwbWlCbG9iVHJh bnNmZXJPcGVuLA0KKyAgKElQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9SRUFEKSpJcG1pQmxv YlRyYW5zZmVyUmVhZCwNCisgIChJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfV1JJVEUpKklw bWlCbG9iVHJhbnNmZXJXcml0ZSwNCisgIChJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfQ09N TUlUKSpJcG1pQmxvYlRyYW5zZmVyQ29tbWl0LA0KKyAgKElQTUlfQkxPQl9UUkFOU0ZFUl9QUk9U T0NPTF9DTE9TRSkqSXBtaUJsb2JUcmFuc2ZlckNsb3NlLA0KKyAgKElQTUlfQkxPQl9UUkFOU0ZF Ul9QUk9UT0NPTF9ERUxFVEUpKklwbWlCbG9iVHJhbnNmZXJEZWxldGUsDQorICAoSVBNSV9CTE9C X1RSQU5TRkVSX1BST1RPQ09MX1NUQVQpKklwbWlCbG9iVHJhbnNmZXJTdGF0LA0KKyAgKElQTUlf QkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9TRVNTSU9OX1NUQVQpKklwbWlCbG9iVHJhbnNmZXJTZXNz aW9uU3RhdCwNCisgIChJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfV1JJVEVfTUVUQSkqSXBt aUJsb2JUcmFuc2ZlcldyaXRlTWV0YQ0KK307DQorDQorY29uc3QgVUlOVDggIE9wZW5CbWNPZW5b XSA9IHsgMHhDRiwgMHhDMiwgMHgwMCB9OyAgICAgICAgICAvLyBPcGVuQk1DIE9FTiBjb2RlIGlu IGxpdHRsZSBlbmRpYW4gZm9ybWF0DQoNCkkgZG9u4oCZdCBrbm93IHdoYXQg4oCcT2Vu4oCdIG1l YW5zLiBTaG91bGQgaXQgYmUg4oCcT2Vt4oCdIG9yIOKAnElBTkHigJ0gbnVtYmVyPw0KDQpBbmQg dGhpcyBudW1iZXIgY2FuIGJlIGNvbmZpZ3VyZWQsIG90aGVyIE9FTXMgd2lsbCBoYXZlIHRoZWly IG93biBudW1iZXIuDQoNClRoaXMgbnVtYmVyIHNob3VsZCBiZSBwcm92aWRlZCBieSBkcml2ZXJz IHRoYXQgY29uc3VtZSB0aGlzIHByb3RvY29sDQpUaGlzIGNvbW1pdCB1c2VzIE9wZW5CTUMgSVBN SSBibG9iIGNvbW1hbmRzIGRlZmluZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL29wZW5ibWMvcGhv c3Bob3ItaXBtaS1ibG9icyB3aGljaCBhcmUgZml4ZWQgbnVtYmVycy4gU28sIG5vIHByb2JsZW0g dG8gaGF2ZSBmaXhlZCBkZWZpbml0aW9uLg0KDQorDQorLyoqDQorICBDYWxjdWxhdGUgQ1JDLTE2 LUNDSVRUIHdpdGggcG9seSBvZiAweDEwMjENCisNCisgIEBwYXJhbVtpbl0gIERhdGEgICAgICAg ICAgICAgIFRoZSB0YXJnZXQgZGF0YS4NCisgIEBwYXJhbVtpbl0gIERhdGFTaXplICAgICAgICAg IFRoZSB0YXJnZXQgZGF0YSBzaXplLg0KKw0KKyAgQHJldHVybiBVSU5UMTYgICAgIFRoZSBDUkMx NiB2YWx1ZS4NCisNCisqKi8NCitVSU5UMTYNCitDYWxjdWxhdGVDcmMxNiAoDQorICBJTiBVSU5U OCAgKkRhdGEsDQorICBJTiBVSU5UTiAgRGF0YVNpemUNCisgICkNCit7DQorICBVSU5UTiAgICBJ bmRleDsNCisgIFVJTlROICAgIEJpdEluZGV4Ow0KKyAgVUlOVDE2ICAgQ3JjICAgICA9IDB4RkZG RjsNCisgIFVJTlQxNiAgIFBvbHkgICAgPSAweDEwMjE7DQorICBCT09MRUFOICBYb3JGbGFnID0g RkFMU0U7DQorDQorICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCAoRGF0YVNpemUgKyAyKTsgKytJ bmRleCkgew0KKyAgICBmb3IgKEJpdEluZGV4ID0gMDsgQml0SW5kZXggPCA4OyArK0JpdEluZGV4 KSB7DQorICAgICAgWG9yRmxhZyA9IChDcmMgJiAweDgwMDApID8gVFJVRSA6IEZBTFNFOw0KKyAg ICAgIENyYyAgIDw8PSAxOw0KKyAgICAgIGlmICgoSW5kZXggPCBEYXRhU2l6ZSkgJiYgKERhdGFb SW5kZXhdICYgKDEgPDwgKDcgLSBCaXRJbmRleCkpKSkgew0KKyAgICAgICAgQ3JjKys7DQorICAg ICAgfQ0KKw0KKyAgICAgIGlmIChYb3JGbGFnID09IFRSVUUpIHsNCisgICAgICAgIENyYyBePSBQ b2x5Ow0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKw0KKyAjaWYgQkxPQl9UUkFOU0ZFUl9ERUJV Rw0KKyAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IENSQy0xNi1DQ0lUVCAleFxuIiwgX19GVU5D VElPTl9fLCBDcmMpKTsNCisgI2VuZGlmDQorDQorICByZXR1cm4gQ3JjOw0KK30NCisNCitFRklf U1RBVFVTDQorSXBtaUJsb2JUcmFuc2ZlclNlbmRJcG1pICgNCisgIElOICBVSU5UOCAgIFN1YkNv bW1hbmQsDQorICBJTiAgVUlOVDggICAqU2VuZERhdGEsDQorICBJTiAgVUlOVDMyICBTZW5kRGF0 YVNpemUsDQorICBPVVQgVUlOVDggICAqUmVzcG9uc2VEYXRhLA0KKyAgT1VUIFVJTlQzMiAgKlJl c3BvbnNlRGF0YVNpemUNCisgICkNCit7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICBT dGF0dXM7DQorICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICBDb21wbGV0aW9uQ29kZTsNCisg IFVJTlQxNiAgICAgICAgICAgICAgICAgICAgIENyYzsNCisgIFVJTlQ4ICAgICAgICAgICAgICAg ICAgICAgIE9lblszXTsNCisgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICpJcG1pU2VuZERh dGE7DQorICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICBJcG1pU2VuZERhdGFTaXplOw0KKyAg VUlOVDggICAgICAgICAgICAgICAgICAgICAgKklwbWlSZXNwb25zZURhdGE7DQorICBVSU5UOCAg ICAgICAgICAgICAgICAgICAgICAqTW9kaWZpZWRSZXNwb25zZURhdGE7DQorICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgICBJcG1pUmVzcG9uc2VEYXRhU2l6ZTsNCisgIElQTUlfQkxPQl9UUkFO U0ZFUl9IRUFERVIgIEhlYWRlcjsNCisNCisgIENyYyA9IDA7DQorDQorICAvLw0KKyAgLy8gUHJl cGVuZCB0aGUgcHJvcGVyIGhlYWRlciB0byB0aGUgU2VuZERhdGENCisgIC8vDQorICBJcG1pU2Vu ZERhdGFTaXplID0gKHNpemVvZiAoSVBNSV9CTE9CX1RSQU5TRkVSX0hFQURFUikpOw0KKyAgaWYg KFNlbmREYXRhU2l6ZSkgew0KKyAgICBJcG1pU2VuZERhdGFTaXplICs9IHNpemVvZiAoQ3JjKSAr IChzaXplb2YgKFVJTlQ4KSAqIFNlbmREYXRhU2l6ZSk7DQorICB9DQorDQorICBJcG1pU2VuZERh dGEgPSBBbGxvY2F0ZVplcm9Qb29sIChJcG1pU2VuZERhdGFTaXplKTsNCisgIGlmIChJcG1pU2Vu ZERhdGEgPT0gTlVMTCkgew0KKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICB9 DQorDQorICBIZWFkZXIuT0VOWzBdICAgICA9IE9wZW5CbWNPZW5bMF07DQorICBIZWFkZXIuT0VO WzFdICAgICA9IE9wZW5CbWNPZW5bMV07DQorICBIZWFkZXIuT0VOWzJdICAgICA9IE9wZW5CbWNP ZW5bMl07DQorICBIZWFkZXIuU3ViQ29tbWFuZCA9IFN1YkNvbW1hbmQ7DQorICBDb3B5TWVtIChJ cG1pU2VuZERhdGEsICZIZWFkZXIsIHNpemVvZiAoSVBNSV9CTE9CX1RSQU5TRkVSX0hFQURFUikp Ow0KKyAgaWYgKFNlbmREYXRhU2l6ZSkgew0KKyAgICAvLw0KKyAgICAvLyBDYWxjdWxhdGUgdGhl IENyYyBvZiB0aGUgc2VuZCBkYXRhDQorICAgIC8vDQorICAgIENyYyA9IENhbGN1bGF0ZUNyYzE2 IChTZW5kRGF0YSwgU2VuZERhdGFTaXplKTsNCisgICAgQ29weU1lbSAoSXBtaVNlbmREYXRhICsg c2l6ZW9mIChJUE1JX0JMT0JfVFJBTlNGRVJfSEVBREVSKSwgJkNyYywgc2l6ZW9mIChVSU5UMTYp KTsNCisgICAgQ29weU1lbSAoSXBtaVNlbmREYXRhICsgc2l6ZW9mIChJUE1JX0JMT0JfVFJBTlNG RVJfSEVBREVSKSArIHNpemVvZiAoVUlOVDE2KSwgU2VuZERhdGEsIFNlbmREYXRhU2l6ZSk7DQor ICB9DQorDQorICNpZiBCTE9CX1RSQU5TRkVSX0RFQlVHDQorICBERUJVRyAoKERFQlVHX0lORk8s ICIlYTogSW5wdXRzOlxuIiwgX19GVU5DVElPTl9fKSk7DQorICBERUJVRyAoKERFQlVHX0lORk8s ICIlYTogU2VuZERhdGFTaXplOiAlMDJ4XG5EYXRhOiAiLCBfX0ZVTkNUSU9OX18sIFNlbmREYXRh U2l6ZSkpOw0KKyAgVUlOVDggIGk7DQorICBmb3IgKGkgPSAwOyBpIDwgU2VuZERhdGFTaXplOyBp KyspIHsNCisgICAgREVCVUcgKChERUJVR19JTkZPLCAiJTAyeCIsICooKFVJTlQ4ICopU2VuZERh dGEgKyBpKSkpOw0KKyAgfQ0KKw0KKyAgREVCVUcgKChERUJVR19JTkZPLCAiXG4iKSk7DQorICBE RUJVRyAoKERFQlVHX0lORk8sICIlYTogSXBtaVNlbmREYXRhU2l6ZTogJTAyeFxuRGF0YTogIiwg X19GVU5DVElPTl9fLCBJcG1pU2VuZERhdGFTaXplKSk7DQorICBmb3IgKGkgPSAwOyBpIDwgSXBt aVNlbmREYXRhU2l6ZTsgaSsrKSB7DQorICAgIERFQlVHICgoREVCVUdfSU5GTywgIiUwMngiLCAq KChVSU5UOCAqKUlwbWlTZW5kRGF0YSArIGkpKSk7DQorICB9DQorDQorICBERUJVRyAoKERFQlVH X0lORk8sICJcbiIpKTsNCisgI2VuZGlmDQorDQorICBJcG1pUmVzcG9uc2VEYXRhU2l6ZSA9ICgq UmVzcG9uc2VEYXRhU2l6ZSArIFBST1RPQ09MX1JFU1BPTlNFX09WRVJIRUFEKTsNCisgIC8vDQor ICAvLyBJZiBleHBlY3RpbmcgZGF0YSB0byBiZSByZXR1cm5lZCwgd2UgaGF2ZSB0byBhbHNvIGFj Y291bnQgZm9yIHRoZSAxNiBiaXQgQ1JDDQorICAvLw0KKyAgaWYgKCpSZXNwb25zZURhdGFTaXpl KSB7DQorICAgIElwbWlSZXNwb25zZURhdGFTaXplICs9IHNpemVvZiAoQ3JjKTsNCisgIH0NCisN CisgIElwbWlSZXNwb25zZURhdGEgPSBBbGxvY2F0ZVplcm9Qb29sIChJcG1pUmVzcG9uc2VEYXRh U2l6ZSk7DQorICBpZiAoSXBtaVJlc3BvbnNlRGF0YSA9PSBOVUxMKSB7DQorICAgIHJldHVybiBF RklfT1VUX09GX1JFU09VUkNFUzsNCisgIH0NCisNCisgIFN0YXR1cyA9IElwbWlTdWJtaXRDb21t YW5kICgNCisgICAgICAgICAgICAgSVBNSV9ORVRGTl9PRU0sDQorICAgICAgICAgICAgIElQTUlf T0VNX0JMT0JfVFJBTlNGRVJfQ01ELA0KKyAgICAgICAgICAgICAoVk9JRCAqKUlwbWlTZW5kRGF0 YSwNCisgICAgICAgICAgICAgSXBtaVNlbmREYXRhU2l6ZSwNCisgICAgICAgICAgICAgKFZPSUQg KilJcG1pUmVzcG9uc2VEYXRhLA0KKyAgICAgICAgICAgICAmSXBtaVJlc3BvbnNlRGF0YVNpemUN CisgICAgICAgICAgICAgKTsNCisNCisgIEZyZWVQb29sIChJcG1pU2VuZERhdGEpOw0KKyAgTW9k aWZpZWRSZXNwb25zZURhdGEgPSBJcG1pUmVzcG9uc2VEYXRhOw0KKw0KKyAjaWYgQkxPQl9UUkFO U0ZFUl9ERUJVRw0KKyAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IElQTUkgUmVzcG9uc2U6XG4i LCBfX0ZVTkNUSU9OX18pKTsNCisgIERFQlVHICgoREVCVUdfSU5GTywgIiVhOiBSZXNwb25zZURh dGFTaXplOiAlMDJ4XG5EYXRhOiAiLCBfX0ZVTkNUSU9OX18sIElwbWlSZXNwb25zZURhdGFTaXpl KSk7DQorICBmb3IgKGkgPSAwOyBpIDwgSXBtaVJlc3BvbnNlRGF0YVNpemU7IGkrKykgew0KKyAg ICBERUJVRyAoKERFQlVHX0lORk8sICIlMDJ4IiwgKihNb2RpZmllZFJlc3BvbnNlRGF0YSArIGkp KSk7DQorICB9DQorDQorICBERUJVRyAoKERFQlVHX0lORk8sICJcbiIpKTsNCisgI2VuZGlmDQor DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9 DQorDQorICBDb21wbGV0aW9uQ29kZSA9ICpNb2RpZmllZFJlc3BvbnNlRGF0YTsNCisgIGlmIChD b21wbGV0aW9uQ29kZSAhPSBJUE1JX0NPTVBfQ09ERV9OT1JNQUwpIHsNCisgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIiVhOiBSZXR1cm5pbmcgYmVjYXVzZSBDb21wbGV0aW9uQ29kZSA9IDB4JXhc biIsIF9fRlVOQ1RJT05fXywgQ29tcGxldGlvbkNvZGUpKTsNCisgICAgRnJlZVBvb2wgKElwbWlS ZXNwb25zZURhdGEpOw0KKyAgICByZXR1cm4gRUZJX1BST1RPQ09MX0VSUk9SOw0KKyAgfQ0KKw0K KyAgLy8gU3RyaXAgY29tcGxldGlvbiBjb2RlLCB3ZSBhcmUgZG9uZSB3aXRoIGl0DQorICBNb2Rp ZmllZFJlc3BvbnNlRGF0YSAgPSBNb2RpZmllZFJlc3BvbnNlRGF0YSArIHNpemVvZiAoQ29tcGxl dGlvbkNvZGUpOw0KKyAgSXBtaVJlc3BvbnNlRGF0YVNpemUgLT0gc2l6ZW9mIChDb21wbGV0aW9u Q29kZSk7DQorDQorICAvLyBDaGVjayBPRU4gY29kZSBhbmQgdmVyaWZ5IGl0IG1hdGNoZXMgdGhl IE9wZW5CTUMgT0VODQorICBDb3B5TWVtIChPZW4sIE1vZGlmaWVkUmVzcG9uc2VEYXRhLCBzaXpl b2YgKE9wZW5CbWNPZW4pKTsNCisgIGlmIChDb21wYXJlTWVtIChPZW4sIE9wZW5CbWNPZW4sIHNp emVvZiAoT3BlbkJtY09lbikpICE9IDApIHsNCisgICAgRnJlZVBvb2wgKElwbWlSZXNwb25zZURh dGEpOw0KKyAgICByZXR1cm4gRUZJX1BST1RPQ09MX0VSUk9SOw0KKyAgfQ0KKw0KKyAgaWYgKElw bWlSZXNwb25zZURhdGFTaXplID09IHNpemVvZiAoT3BlbkJtY09lbikpIHsNCisgICAgLy8NCisg ICAgLy8gSW4gdGhpcyBjYXNlLCB0aGVyZSB3YXMgbm8gcmVzcG9uc2UgZGF0YSBzZW50LiBUaGlz IGlzIG5vdCBhbiBlcnJvci4NCisgICAgLy8gU29tZSBtZXNzYWdlcyBkbyBub3QgcmVxdWlyZSBh IHJlc3BvbnNlLg0KKyAgICAvLw0KKyAgICAqUmVzcG9uc2VEYXRhU2l6ZSA9IDA7DQorICAgIEZy ZWVQb29sIChJcG1pUmVzcG9uc2VEYXRhKTsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgICAgLy8g Tm93IHdlIG5lZWQgdG8gdmFsaWRhdGUgdGhlIENSQyB0aGVuIHNlbmQgdGhlIFJlc3BvbnNlIGJv ZHkgYmFjaw0KKyAgfSBlbHNlIHsNCisgICAgLy8gU3RyaXAgdGhlIE9FTiwgd2UgYXJlIGRvbmUg d2l0aCBpdCBub3cNCisgICAgTW9kaWZpZWRSZXNwb25zZURhdGEgID0gTW9kaWZpZWRSZXNwb25z ZURhdGEgKyBzaXplb2YgKE9lbik7DQorICAgIElwbWlSZXNwb25zZURhdGFTaXplIC09IHNpemVv ZiAoT2VuKTsNCisgICAgLy8gVGhlbiB2YWxpZGF0ZSB0aGUgQ3JjDQorICAgIENvcHlNZW0gKCZD cmMsIE1vZGlmaWVkUmVzcG9uc2VEYXRhLCBzaXplb2YgKENyYykpOw0KKyAgICBNb2RpZmllZFJl c3BvbnNlRGF0YSAgPSBNb2RpZmllZFJlc3BvbnNlRGF0YSArIHNpemVvZiAoQ3JjKTsNCisgICAg SXBtaVJlc3BvbnNlRGF0YVNpemUgLT0gc2l6ZW9mIChDcmMpOw0KKw0KKyAgICBpZiAoQ3JjID09 IENhbGN1bGF0ZUNyYzE2IChNb2RpZmllZFJlc3BvbnNlRGF0YSwgSXBtaVJlc3BvbnNlRGF0YVNp emUpKSB7DQorICAgICAgQ29weU1lbSAoUmVzcG9uc2VEYXRhLCBNb2RpZmllZFJlc3BvbnNlRGF0 YSwgSXBtaVJlc3BvbnNlRGF0YVNpemUpOw0KKyAgICAgIENvcHlNZW0gKFJlc3BvbnNlRGF0YVNp emUsICZJcG1pUmVzcG9uc2VEYXRhU2l6ZSwgc2l6ZW9mIChJcG1pUmVzcG9uc2VEYXRhU2l6ZSkp Ow0KKyAgICAgIEZyZWVQb29sIChJcG1pUmVzcG9uc2VEYXRhKTsNCisgICAgICByZXR1cm4gRUZJ X1NVQ0NFU1M7DQorICAgIH0gZWxzZSB7DQorICAgICAgRnJlZVBvb2wgKElwbWlSZXNwb25zZURh dGEpOw0KKyAgICAgIHJldHVybiBFRklfQ1JDX0VSUk9SOw0KKyAgICB9DQorICB9DQorfQ0KKw0K Ky8qKg0KKyAgQHBhcmFtW291dF0gICAgICAgIENvdW50ICAgICAgIFRoZSBudW1iZXIgb2YgYWN0 aXZlIGJsb2JzDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgVGhlIGNvbW1h bmQgYnl0ZSBzdHJlYW0gd2FzIHN1Y2Nlc3NmdWxseSBzdWJtaXQgdG8gdGhlIGRldmljZSBhbmQg YSByZXNwb25zZSB3YXMgc3VjY2Vzc2Z1bGx5IHJlY2VpdmVkLg0KKyAgQHJldHZhbCBFRklfUFJP VE9DT0xfRVJST1IgICAgIFRoZSBJcG1pIGNvbW1hbmQgZmFpbGVkDQorICBAcmV0dmFsIEVGSV9D UkNfRVJST1IgICAgICAgICAgVGhlIElwbWkgY29tbWFuZCByZXR1cm5lZCBhIGJhZCBjaGVja3N1 bQ0KKyoqLw0KK0VGSV9TVEFUVVMNCitJcG1pQmxvYlRyYW5zZmVyR2V0Q291bnQgKA0KKyAgT1VU IFVJTlQzMiAgKkNvdW50DQorICApDQorew0KDQpQbGVhc2UgYWRkIHRoZSBhcmd1bWVudCB2YWxp ZGF0aW9uIGZvciBmdW5jdGlvbnMgd2hpY2ggZXhwb3NlIGZvciBvdGhlciBkcml2ZXJzDQoNCg0K KyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKyAgVUlOVDggICAgICAgKlJlc3BvbnNlRGF0YTsNCisg IFVJTlQzMiAgICAgIFJlc3BvbnNlRGF0YVNpemU7DQorDQorICBSZXNwb25zZURhdGFTaXplID0g c2l6ZW9mIChJUE1JX0JMT0JfVFJBTlNGRVJfR0VUX0NPVU5UX1JFU1BPTlNFKTsNCisgIFJlc3Bv bnNlRGF0YSAgICAgPSBBbGxvY2F0ZVplcm9Qb29sIChSZXNwb25zZURhdGFTaXplKTsNCisgIGlm IChSZXNwb25zZURhdGEgPT0gTlVMTCkgew0KKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJD RVM7DQorICB9DQorDQorICBTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKElwbWlC bG9iVHJhbnNmZXJTdWJjb21tYW5kR2V0Q291bnQsIE5VTEwsIDAsIChVSU5UOCAqKVJlc3BvbnNl RGF0YSwgJlJlc3BvbnNlRGF0YVNpemUpOw0KKyAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsN CisgICAgKkNvdW50ID0gKChJUE1JX0JMT0JfVFJBTlNGRVJfR0VUX0NPVU5UX1JFU1BPTlNFICop UmVzcG9uc2VEYXRhKS0+QmxvYkNvdW50Ow0KKyAgfQ0KKw0KKyAgRnJlZVBvb2wgKFJlc3BvbnNl RGF0YSk7DQorICByZXR1cm4gU3RhdHVzOw0KK30NCisNCisvKioNCisgIEBwYXJhbVtpbl0gICAg ICAgICBCbG9iSW5kZXggICAgICAgVGhlIDAtYmFzZWQgSW5kZXggb2YgdGhlIGJsb2IgdG8gZW51 bWVyYXRlDQorICBAcGFyYW1bb3V0XSAgICAgICAgQmxvYklkICAgICAgICAgIFRoZSBJRCBvZiB0 aGUgYmxvYg0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICBTdWNjZXNz ZnVsbHkgZW51bWVyYXRlZCB0aGUgYmxvYi4NCisgIEByZXR2YWwgT3RoZXIgICAgICAgICAgICAg ICAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQNCisqKi8NCitFRklfU1RBVFVTDQorSXBtaUJsb2JU cmFuc2ZlckVudW1lcmF0ZSAoDQorICBJTiAgVUlOVDMyICBCbG9iSW5kZXgsDQorICBPVVQgQ0hB UjggICAqQmxvYklkDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKw0KKyAgVUlO VDggICAqU2VuZERhdGE7DQorICBVSU5UOCAgICpSZXNwb25zZURhdGE7DQorICBVSU5UMzIgIFNl bmREYXRhU2l6ZTsNCisgIFVJTlQzMiAgUmVzcG9uc2VEYXRhU2l6ZTsNCisNCisgIGlmIChCbG9i SWQgPT0gTlVMTCkgew0KKyAgICBBU1NFUlQgKEZBTFNFKTsNCisgICAgcmV0dXJuIEVGSV9BQk9S VEVEOw0KKyAgfQ0KKw0KKyAgUmVzcG9uc2VEYXRhU2l6ZSA9IHNpemVvZiAoSVBNSV9CTE9CX1RS QU5TRkVSX0JMT0JfRU5VTUVSQVRFX1JFU1BPTlNFKTsNCisgIFJlc3BvbnNlRGF0YSAgICAgPSBB bGxvY2F0ZVplcm9Qb29sIChSZXNwb25zZURhdGFTaXplKTsNCisgIGlmIChSZXNwb25zZURhdGEg PT0gTlVMTCkgew0KKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICB9DQorDQor ICAvLw0KKyAgLy8gRm9ybWF0IHNlbmQgZGF0YQ0KKyAgLy8NCisgIFNlbmREYXRhU2l6ZSA9IHNp emVvZiAoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfRU5VTUVSQVRFX1NFTkRfREFUQSk7DQorICBT ZW5kRGF0YSAgICAgPSBBbGxvY2F0ZVplcm9Qb29sIChTZW5kRGF0YVNpemUpOw0KKyAgaWYgKFNl bmREYXRhID09IE5VTEwpIHsNCisgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAg fQ0KKw0KKyAgKChJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9FTlVNRVJBVEVfU0VORF9EQVRBICop U2VuZERhdGEpLT5CbG9iSW5kZXggPSBCbG9iSW5kZXg7DQorDQorICBTdGF0dXMgPSBJcG1pQmxv YlRyYW5zZmVyU2VuZElwbWkgKElwbWlCbG9iVHJhbnNmZXJTdWJjb21tYW5kRW51bWVyYXRlLCBT ZW5kRGF0YSwgU2VuZERhdGFTaXplLCAoVUlOVDggKilSZXNwb25zZURhdGEsICZSZXNwb25zZURh dGFTaXplKTsNCisgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIEFzY2lpU3RyQ3B5 UyAoQmxvYklkLCBSZXNwb25zZURhdGFTaXplLCAoQ0hBUjggKilSZXNwb25zZURhdGEpOw0KKyAg fQ0KKw0KKyAgRnJlZVBvb2wgKFJlc3BvbnNlRGF0YSk7DQorICByZXR1cm4gU3RhdHVzOw0KK30N CisNCisvKioNCisgIEBwYXJhbVtpbl0gICAgICAgICBCbG9iSWQgICAgICAgICAgVGhlIElEIG9m IHRoZSBibG9iIHRvIG9wZW4NCisgIEBwYXJhbVtpbl0gICAgICAgICBGbGFncyAgICAgICAgICAg RmxhZ3MgdG8gY29udHJvbCBob3cgdGhlIGJsb2IgaXMgb3BlbmVkDQorICBAcGFyYW1bb3V0XSAg ICAgICAgU2Vzc2lvbklkICAgICAgIEEgdW5pcXVlIHNlc3Npb24gaWRlbnRpZmllcg0KKw0KKyAg QHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICBTdWNjZXNzZnVsbHkgb3BlbmVkIHRo ZSBibG9iLg0KKyAgQHJldHZhbCBPdGhlciAgICAgICAgICAgICAgICAgICAgICBBbiBlcnJvciBv Y2N1cnJlZA0KKyoqLw0KK0VGSV9TVEFUVVMNCitJcG1pQmxvYlRyYW5zZmVyT3BlbiAoDQorICBJ TiAgQ0hBUjggICAqQmxvYklkLA0KKyAgSU4gIFVJTlQxNiAgRmxhZ3MsDQorICBPVVQgVUlOVDE2 ICAqU2Vzc2lvbklkDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKyAgVUlOVDgg ICAgICAgKlNlbmREYXRhOw0KKyAgVUlOVDggICAgICAgKlJlc3BvbnNlRGF0YTsNCisgIFVJTlQz MiAgICAgIFNlbmREYXRhU2l6ZTsNCisgIFVJTlQzMiAgICAgIFJlc3BvbnNlRGF0YVNpemU7DQor ICBDSEFSOCAgICAgICAqQmxvYlNlYXJjaDsNCisgIFVJTlQzMiAgICAgIE51bUJsb2JzOw0KKyAg VUlOVDE2ICAgICAgSW5kZXg7DQorICBCT09MRUFOICAgICBCbG9iRm91bmQ7DQorDQorICAvLw0K KyAgLy8gQmVmb3JlIG9wZW5pbmcgYSBibG9iLCBuZWVkIHRvIGNoZWNrIGlmIGl0IGV4aXN0cw0K KyAgLy8NCisgIFN0YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJHZXRDb3VudCAoJk51bUJsb2JzKTsN Cg0KSSB0aGluayBpdCBzaG91bGQgYmUgcmVtb3ZlZCBhcyB0aGF0IHdpbGwgZHVwbGljYXRlIHdv cmsNCg0KVGhlIGRyaXZlcnMgdXNpbmcgSVBNSSBibG9iIHByb3RvY29sIHdpbGwgICJnZXQgY291 bnQiIHRoZW1zZWx2ZXMuDQoNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykgfHwgKE51bUJsb2Jz ID09IDApKSB7DQorICAgIGlmIChTdGF0dXMgPT0gRUZJX1VOU1VQUE9SVEVEKSB7DQorICAgICAg cmV0dXJuIFN0YXR1czsNCisgICAgfQ0KKw0KKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6 IENvdWxkIG5vdCBmaW5kIGFueSBibG9iczogJXJcbiIsIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7 DQorICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KKyAgfQ0KKw0KKyAgQmxvYlNlYXJjaCA9IEFs bG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoQ0hBUjgpICogSVBNSV9PRU1fQkxPQl9NQVhfREFUQV9Q RVJfUEFDS0VUKTsNCisgIGlmIChCbG9iU2VhcmNoID09IE5VTEwpIHsNCisgICAgcmV0dXJuIEVG SV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAgfQ0KKw0KKyAgQmxvYkZvdW5kID0gRkFMU0U7DQorICBm b3IgKEluZGV4ID0gMDsgSW5kZXggPCBOdW1CbG9iczsgSW5kZXgrKykgew0KKyAgICBTdGF0dXMg PSBJcG1pQmxvYlRyYW5zZmVyRW51bWVyYXRlIChJbmRleCwgQmxvYlNlYXJjaCk7DQp0aGUgc2Ft ZSBoZXJlDQorICAgIGlmICgoIUVGSV9FUlJPUiAoU3RhdHVzKSkgJiYgKEFzY2lpU3RyQ21wIChC bG9iU2VhcmNoLCBCbG9iSWQpID09IDApKSB7DQorICAgICAgQmxvYkZvdW5kID0gVFJVRTsNCisg ICAgICBicmVhazsNCisgICAgfSBlbHNlIHsNCisgICAgICBjb250aW51ZTsNCisgICAgfQ0KKyAg fQ0KKw0KKyAgaWYgKCFCbG9iRm91bmQpIHsNCisgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVh OiBDb3VsZCBub3QgZmluZCBhIGJsb2IgdGhhdCBtYXRjaGVzICVzXG4iLCBfX0ZVTkNUSU9OX18s IEJsb2JJZCkpOw0KKyAgICBGcmVlUG9vbCAoQmxvYlNlYXJjaCk7DQorICAgIHJldHVybiBFRklf Tk9UX0ZPVU5EOw0KKyAgfQ0KKw0KKyAgUmVzcG9uc2VEYXRhU2l6ZSA9IHNpemVvZiAoSVBNSV9C TE9CX1RSQU5TRkVSX0JMT0JfT1BFTl9SRVNQT05TRSk7DQorICBSZXNwb25zZURhdGEgICAgID0g QWxsb2NhdGVaZXJvUG9vbCAoUmVzcG9uc2VEYXRhU2l6ZSk7DQorICBpZiAoUmVzcG9uc2VEYXRh ID09IE5VTEwpIHsNCisgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAgfQ0KKw0K KyAgLy8NCisgIC8vIEZvcm1hdCBzZW5kIGRhdGENCisgIC8vDQorICBTZW5kRGF0YVNpemUgPSBz aXplb2YgKCgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfT1BFTl9TRU5EX0RBVEEgKilTZW5kRGF0 YSktPkZsYWdzKSArICgoQXNjaWlTdHJMZW4gKEJsb2JJZCkpICogc2l6ZW9mIChDSEFSOCkpICsg c2l6ZW9mIChDSEFSOCk7DQorICBTZW5kRGF0YSAgICAgPSBBbGxvY2F0ZVplcm9Qb29sIChTZW5k RGF0YVNpemUpOw0KKyAgaWYgKFNlbmREYXRhID09IE5VTEwpIHsNCisgICAgcmV0dXJuIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTOw0KKyAgfQ0KKw0KKyAgQXNjaWlTdHJDcHlTICgoKElQTUlfQkxPQl9U UkFOU0ZFUl9CTE9CX09QRU5fU0VORF9EQVRBICopU2VuZERhdGEpLT5CbG9iSWQsIEFzY2lpU3Ry U2l6ZSAoQmxvYklkKSAvIHNpemVvZiAoQ0hBUjgpLCBCbG9iSWQpOw0KKyAgKChJUE1JX0JMT0Jf VFJBTlNGRVJfQkxPQl9PUEVOX1NFTkRfREFUQSAqKVNlbmREYXRhKS0+RmxhZ3MgPSBGbGFnczsN CisgIC8vIGFwcGVuZCBudWxsIGNoYXIgdG8gU2VuZERhdGENCisgIFNlbmREYXRhW1NlbmREYXRh U2l6ZS0xXSA9IDA7DQorDQorICBTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKElw bWlCbG9iVHJhbnNmZXJTdWJjb21tYW5kT3BlbiwgU2VuZERhdGEsIFNlbmREYXRhU2l6ZSwgKFVJ TlQ4ICopUmVzcG9uc2VEYXRhLCAmUmVzcG9uc2VEYXRhU2l6ZSk7DQorICBpZiAoIUVGSV9FUlJP UiAoU3RhdHVzKSkgew0KKyAgICAqU2Vzc2lvbklkID0gKChJUE1JX0JMT0JfVFJBTlNGRVJfQkxP Ql9PUEVOX1JFU1BPTlNFICopUmVzcG9uc2VEYXRhKS0+U2Vzc2lvbklkOw0KKyAgfQ0KKw0KKyAg RnJlZVBvb2wgKFJlc3BvbnNlRGF0YSk7DQorICBGcmVlUG9vbCAoU2VuZERhdGEpOw0KKyAgRnJl ZVBvb2wgKEJsb2JTZWFyY2gpOw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQorLyoqDQorICBA cGFyYW1baW5dICAgICAgICAgU2Vzc2lvbklkICAgICAgIFRoZSBzZXNzaW9uIElEIHJldHVybmVk IGZyb20gYSBjYWxsIHRvIEJsb2JPcGVuDQorICBAcGFyYW1baW5dICAgICAgICAgT2Zmc2V0ICAg ICAgICAgIFRoZSBvZmZzZXQgb2YgdGhlIGJsb2IgZnJvbSB3aGljaCB0byBzdGFydCByZWFkaW5n DQorICBAcGFyYW1baW5dICAgICAgICAgUmVxdWVzdGVkU2l6ZSAgIFRoZSBsZW5ndGggb2YgZGF0 YSB0byByZWFkDQorICBAcGFyYW1bb3V0XSAgICAgICAgRGF0YSAgICAgICAgICAgIERhdGEgcmVh ZCBmcm9tIHRoZSBibG9iDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAg IFN1Y2Nlc3NmdWxseSByZWFkIGZyb20gdGhlIGJsb2IuDQorICBAcmV0dmFsIE90aGVyICAgICAg ICAgICAgICAgICAgICAgIEFuIGVycm9yIG9jY3VycmVkDQorKiovDQorRUZJX1NUQVRVUw0KK0lw bWlCbG9iVHJhbnNmZXJSZWFkICgNCisgIElOICBVSU5UMTYgIFNlc3Npb25JZCwNCisgIElOICBV SU5UMzIgIE9mZnNldCwNCisgIElOICBVSU5UMzIgIFJlcXVlc3RlZFNpemUsDQorICBPVVQgVUlO VDggICAqRGF0YQ0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisgIFVJTlQ4ICAg ICAgICpTZW5kRGF0YTsNCisgIFVJTlQ4ICAgICAgICpSZXNwb25zZURhdGE7DQorICBVSU5UMzIg ICAgICBTZW5kRGF0YVNpemU7DQorICBVSU5UMzIgICAgICBSZXNwb25zZURhdGFTaXplOw0KKw0K KyAgaWYgKERhdGEgPT0gTlVMTCkgew0KKyAgICBBU1NFUlQgKEZBTFNFKTsNCisgICAgcmV0dXJu IEVGSV9BQk9SVEVEOw0KKyAgfQ0KKw0KKyAgUmVzcG9uc2VEYXRhU2l6ZSA9IFJlcXVlc3RlZFNp emUgKiBzaXplb2YgKFVJTlQ4KTsNCisgIFJlc3BvbnNlRGF0YSAgICAgPSBBbGxvY2F0ZVplcm9Q b29sIChSZXNwb25zZURhdGFTaXplKTsNCisgIGlmIChSZXNwb25zZURhdGEgPT0gTlVMTCkgew0K KyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICB9DQorDQorICAvLw0KKyAgLy8g Rm9ybWF0IHNlbmQgZGF0YQ0KKyAgLy8NCisgIFNlbmREYXRhU2l6ZSA9IHNpemVvZiAoSVBNSV9C TE9CX1RSQU5TRkVSX0JMT0JfUkVBRF9TRU5EX0RBVEEpOw0KKyAgU2VuZERhdGEgICAgID0gQWxs b2NhdGVaZXJvUG9vbCAoU2VuZERhdGFTaXplKTsNCisgIGlmIChTZW5kRGF0YSA9PSBOVUxMKSB7 DQorICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCisgIH0NCisNCisgICgoSVBNSV9C TE9CX1RSQU5TRkVSX0JMT0JfUkVBRF9TRU5EX0RBVEEgKilTZW5kRGF0YSktPlNlc3Npb25JZCAg ICAgPSBTZXNzaW9uSWQ7DQorICAoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1JFQURfU0VORF9E QVRBICopU2VuZERhdGEpLT5PZmZzZXQgICAgICAgID0gT2Zmc2V0Ow0KKyAgKChJUE1JX0JMT0Jf VFJBTlNGRVJfQkxPQl9SRUFEX1NFTkRfREFUQSAqKVNlbmREYXRhKS0+UmVxdWVzdGVkU2l6ZSA9 IFJlcXVlc3RlZFNpemU7DQorDQorICBTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkg KElwbWlCbG9iVHJhbnNmZXJTdWJjb21tYW5kUmVhZCwgU2VuZERhdGEsIFNlbmREYXRhU2l6ZSwg KFVJTlQ4ICopUmVzcG9uc2VEYXRhLCAmUmVzcG9uc2VEYXRhU2l6ZSk7DQorICBpZiAoIUVGSV9F UlJPUiAoU3RhdHVzKSkgew0KKyAgICBDb3B5TWVtIChEYXRhLCAoKElQTUlfQkxPQl9UUkFOU0ZF Ul9CTE9CX1JFQURfUkVTUE9OU0UgKilSZXNwb25zZURhdGEpLT5EYXRhLCBSZXNwb25zZURhdGFT aXplICogc2l6ZW9mIChVSU5UOCkpOw0KKyAgfQ0KKw0KKyAgRnJlZVBvb2wgKFJlc3BvbnNlRGF0 YSk7DQorICBGcmVlUG9vbCAoU2VuZERhdGEpOw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQor LyoqDQorICBAcGFyYW1baW5dICAgICAgICAgU2Vzc2lvbklkICAgICAgIFRoZSBzZXNzaW9uIElE IHJldHVybmVkIGZyb20gYSBjYWxsIHRvIEJsb2JPcGVuDQorICBAcGFyYW1baW5dICAgICAgICAg T2Zmc2V0ICAgICAgICAgIFRoZSBvZmZzZXQgb2YgdGhlIGJsb2IgZnJvbSB3aGljaCB0byBzdGFy dCB3cml0aW5nDQorICBAcGFyYW1baW5dICAgICAgICAgRGF0YSAgICAgICAgICAgIEEgcG9pbnRl ciB0byB0aGUgZGF0YSB0byB3cml0ZQ0KKw0KKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgICAgICBTdWNjZXNzZnVsbHkgd3JvdGUgdG8gdGhlIGJsb2IuDQorICBAcmV0dmFsIE90aGVy ICAgICAgICAgICAgICAgICAgICAgIEFuIGVycm9yIG9jY3VycmVkDQorKiovDQorRUZJX1NUQVRV Uw0KK0lwbWlCbG9iVHJhbnNmZXJXcml0ZSAoDQorICBJTiAgVUlOVDE2ICBTZXNzaW9uSWQsDQor ICBJTiAgVUlOVDMyICBPZmZzZXQsDQorICBJTiAgVUlOVDggICAqRGF0YSwNCisgIElOICBVSU5U MzIgIFdyaXRlTGVuZ3RoDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKyAgVUlO VDggICAgICAgKlNlbmREYXRhOw0KKyAgVUlOVDMyICAgICAgU2VuZERhdGFTaXplOw0KKyAgVUlO VDMyICAgICAgUmVzcG9uc2VEYXRhU2l6ZTsNCisNCisgIC8vDQorICAvLyBGb3JtYXQgc2VuZCBk YXRhDQorICAvLw0KKyAgU2VuZERhdGFTaXplID0gc2l6ZW9mIChTZXNzaW9uSWQpICsgc2l6ZW9m IChPZmZzZXQpICsgV3JpdGVMZW5ndGg7DQorICBTZW5kRGF0YSAgICAgPSBBbGxvY2F0ZVplcm9Q b29sIChTZW5kRGF0YVNpemUpOw0KKyAgaWYgKFNlbmREYXRhID09IE5VTEwpIHsNCisgICAgcmV0 dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAgfQ0KKw0KKyAgKChJUE1JX0JMT0JfVFJBTlNG RVJfQkxPQl9XUklURV9TRU5EX0RBVEEgKilTZW5kRGF0YSktPlNlc3Npb25JZCA9IFNlc3Npb25J ZDsNCisgICgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfV1JJVEVfU0VORF9EQVRBICopU2VuZERh dGEpLT5PZmZzZXQgICAgPSBPZmZzZXQ7DQorICBDb3B5TWVtICgoKElQTUlfQkxPQl9UUkFOU0ZF Ul9CTE9CX1dSSVRFX1NFTkRfREFUQSAqKVNlbmREYXRhKS0+RGF0YSwgRGF0YSwgc2l6ZW9mIChV SU5UOCkgKiBXcml0ZUxlbmd0aCk7DQorDQorICBSZXNwb25zZURhdGFTaXplID0gMDsNCisgIFN0 YXR1cyAgICAgICAgICAgPSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKElwbWlCbG9iVHJhbnNm ZXJTdWJjb21tYW5kV3JpdGUsIFNlbmREYXRhLCBTZW5kRGF0YVNpemUsIE5VTEwsICZSZXNwb25z ZURhdGFTaXplKTsNCisNCisgIEZyZWVQb29sIChTZW5kRGF0YSk7DQorICByZXR1cm4gU3RhdHVz Ow0KK30NCisNCisvKioNCisgIEBwYXJhbVtpbl0gICAgICAgICBTZXNzaW9uSWQgICAgICAgIFRo ZSBzZXNzaW9uIElEIHJldHVybmVkIGZyb20gYSBjYWxsIHRvIEJsb2JPcGVuDQorICBAcGFyYW1b aW5dICAgICAgICAgQ29tbWl0RGF0YUxlbmd0aCBUaGUgbGVuZ3RoIG9mIGRhdGEgdG8gY29tbWl0 IHRvIHRoZSBibG9iDQorICBAcGFyYW1baW5dICAgICAgICAgQ29tbWl0RGF0YSAgICAgICBBIHBv aW50ZXIgdG8gdGhlIGRhdGEgdG8gY29tbWl0DQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgICAgIFN1Y2Nlc3NmdWwgY29tbWl0IHRvIHRoZSBibG9iLg0KKyAgQHJldHZhbCBP dGhlciAgICAgICAgICAgICAgICAgICAgICBBbiBlcnJvciBvY2N1cnJlZA0KKyoqLw0KK0VGSV9T VEFUVVMNCitJcG1pQmxvYlRyYW5zZmVyQ29tbWl0ICgNCisgIElOICBVSU5UMTYgIFNlc3Npb25J ZCwNCisgIElOICBVSU5UOCAgIENvbW1pdERhdGFMZW5ndGgsDQorICBJTiAgVUlOVDggICAqQ29t bWl0RGF0YQ0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisgIFVJTlQ4ICAgICAg ICpTZW5kRGF0YTsNCisgIFVJTlQzMiAgICAgIFNlbmREYXRhU2l6ZTsNCisgIFVJTlQzMiAgICAg IFJlc3BvbnNlRGF0YVNpemU7DQorDQorICAvLw0KKyAgLy8gRm9ybWF0IHNlbmQgZGF0YQ0KKyAg Ly8NCisgIFNlbmREYXRhU2l6ZSA9IHNpemVvZiAoU2Vzc2lvbklkKSArIHNpemVvZiAoQ29tbWl0 RGF0YUxlbmd0aCkgKyBDb21taXREYXRhTGVuZ3RoOw0KKyAgU2VuZERhdGEgICAgID0gQWxsb2Nh dGVaZXJvUG9vbCAoU2VuZERhdGFTaXplKTsNCisgIGlmIChTZW5kRGF0YSA9PSBOVUxMKSB7DQor ICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCisgIH0NCisNCisgICgoSVBNSV9CTE9C X1RSQU5TRkVSX0JMT0JfQ09NTUlUX1NFTkRfREFUQSAqKVNlbmREYXRhKS0+U2Vzc2lvbklkICAg ICAgICA9IFNlc3Npb25JZDsNCisgICgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfQ09NTUlUX1NF TkRfREFUQSAqKVNlbmREYXRhKS0+Q29tbWl0RGF0YUxlbmd0aCA9IENvbW1pdERhdGFMZW5ndGg7 DQorICBDb3B5TWVtICgoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX0NPTU1JVF9TRU5EX0RBVEEg KilTZW5kRGF0YSktPkNvbW1pdERhdGEsIENvbW1pdERhdGEsIHNpemVvZiAoVUlOVDgpICogQ29t bWl0RGF0YUxlbmd0aCk7DQorDQorICBSZXNwb25zZURhdGFTaXplID0gMDsNCisNCisgIFN0YXR1 cyA9IElwbWlCbG9iVHJhbnNmZXJTZW5kSXBtaSAoSXBtaUJsb2JUcmFuc2ZlclN1YmNvbW1hbmRD b21taXQsIFNlbmREYXRhLCBTZW5kRGF0YVNpemUsIE5VTEwsICZSZXNwb25zZURhdGFTaXplKTsN CisNCisgIEZyZWVQb29sIChTZW5kRGF0YSk7DQorICByZXR1cm4gU3RhdHVzOw0KK30NCisNCisv KioNCisgIEBwYXJhbVtpbl0gICAgICAgICBTZXNzaW9uSWQgICAgICAgVGhlIHNlc3Npb24gSUQg cmV0dXJuZWQgZnJvbSBhIGNhbGwgdG8gQmxvYk9wZW4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NF U1MgICAgICAgICAgICAgICAgVGhlIGJsb2Igd2FzIGNsb3NlZC4NCisgIEByZXR2YWwgT3RoZXIg ICAgICAgICAgICAgICAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQNCisqKi8NCitFRklfU1RBVFVT DQorSXBtaUJsb2JUcmFuc2ZlckNsb3NlICgNCisgIElOICBVSU5UMTYgIFNlc3Npb25JZA0KKyAg KQ0KK3sNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisgIFVJTlQ4ICAgICAgICpTZW5kRGF0YTsN CisgIFVJTlQzMiAgICAgIFNlbmREYXRhU2l6ZTsNCisgIFVJTlQzMiAgICAgIFJlc3BvbnNlRGF0 YVNpemU7DQorDQorICAvLw0KKyAgLy8gRm9ybWF0IHNlbmQgZGF0YQ0KKyAgLy8NCisgIFNlbmRE YXRhU2l6ZSA9IHNpemVvZiAoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfQ0xPU0VfU0VORF9EQVRB KTsNCisgIFNlbmREYXRhICAgICA9IEFsbG9jYXRlWmVyb1Bvb2wgKFNlbmREYXRhU2l6ZSk7DQor ICBpZiAoU2VuZERhdGEgPT0gTlVMTCkgew0KKyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJD RVM7DQorICB9DQorDQorICAoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX0NMT1NFX1NFTkRfREFU QSAqKVNlbmREYXRhKS0+U2Vzc2lvbklkID0gU2Vzc2lvbklkOw0KKw0KKyAgUmVzcG9uc2VEYXRh U2l6ZSA9IDA7DQorDQorICBTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKElwbWlC bG9iVHJhbnNmZXJTdWJjb21tYW5kQ2xvc2UsIFNlbmREYXRhLCBTZW5kRGF0YVNpemUsIE5VTEws ICZSZXNwb25zZURhdGFTaXplKTsNCisNCisgIEZyZWVQb29sIChTZW5kRGF0YSk7DQorICByZXR1 cm4gU3RhdHVzOw0KK30NCisNCisvKioNCisgIEBwYXJhbVtpbl0gICAgICAgICBCbG9iSWQgICAg ICAgICAgVGhlIEJsb2JJZCB0byBiZSBkZWxldGVkDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgICAgICAgICAgIFRoZSBibG9iIHdhcyBkZWxldGVkLg0KKyAgQHJldHZhbCBPdGhlciAg ICAgICAgICAgICAgICAgICAgICBBbiBlcnJvciBvY2N1cnJlZA0KKyoqLw0KK0VGSV9TVEFUVVMN CitJcG1pQmxvYlRyYW5zZmVyRGVsZXRlICgNCisgIElOICBDSEFSOCAgKkJsb2JJZA0KKyAgKQ0K K3sNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisgIFVJTlQ4ICAgICAgICpTZW5kRGF0YTsNCisg IFVJTlQzMiAgICAgIFNlbmREYXRhU2l6ZTsNCisgIFVJTlQzMiAgICAgIFJlc3BvbnNlRGF0YVNp emU7DQorDQorICAvLw0KKyAgLy8gRm9ybWF0IHNlbmQgZGF0YQ0KKyAgLy8NCisgIFNlbmREYXRh U2l6ZSA9IHNpemVvZiAoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfREVMRVRFX1NFTkRfREFUQSk7 DQorICBTZW5kRGF0YSAgICAgPSBBbGxvY2F0ZVplcm9Qb29sIChTZW5kRGF0YVNpemUpOw0KKyAg aWYgKFNlbmREYXRhID09IE5VTEwpIHsNCisgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VT Ow0KKyAgfQ0KKw0KKyAgQXNjaWlTdHJDcHlTICgoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX0RF TEVURV9TRU5EX0RBVEEgKilTZW5kRGF0YSktPkJsb2JJZCwgQXNjaWlTdHJMZW4gKEJsb2JJZCks IEJsb2JJZCk7DQorDQorICBSZXNwb25zZURhdGFTaXplID0gMDsNCisNCisgIFN0YXR1cyA9IElw bWlCbG9iVHJhbnNmZXJTZW5kSXBtaSAoSXBtaUJsb2JUcmFuc2ZlclN1YmNvbW1hbmREZWxldGUs IFNlbmREYXRhLCBTZW5kRGF0YVNpemUsIE5VTEwsICZSZXNwb25zZURhdGFTaXplKTsNCisNCisg IEZyZWVQb29sIChTZW5kRGF0YSk7DQorICByZXR1cm4gU3RhdHVzOw0KK30NCisNCisvKioNCisg IEBwYXJhbVtpbl0gICAgICAgICBCbG9iSWQgICAgICAgICAgVGhlIEJsb2IgSUQgdG8gZ2F0aGVy IHN0YXRpc3RpY3MgZm9yDQorICBAcGFyYW1bb3V0XSAgICAgICAgQmxvYlN0YXRlICAgICAgIFRo ZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBibG9iDQorICBAcGFyYW1bb3V0XSAgICAgICAgU2l6ZSAg ICAgICAgICAgIFNpemUgaW4gYnl0ZXMgb2YgdGhlIGJsb2INCisgIEBwYXJhbVtvdXRdICAgICAg ICBNZXRhZGF0YUxlbmd0aCAgTGVuZ3RoIG9mIHRoZSBvcHRpb25hbCBtZXRhZGF0YQ0KKyAgQHBh cmFtW291dF0gICAgICAgIE1ldGFkYXRhICAgICAgICBPcHRpb25hbCBibG9iLXNwZWNpZmljIG1l dGFkYXRhDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgIFRoZSBibG9i IHN0YXRpc3RpY3Mgd2VyZSBzdWNjZXNzZnVsbHkgZ2F0aGVyZWQuDQorICBAcmV0dmFsIE90aGVy ICAgICAgICAgICAgICAgICAgICAgIEFuIGVycm9yIG9jY3VycmVkDQorKiovDQorRUZJX1NUQVRV Uw0KK0lwbWlCbG9iVHJhbnNmZXJTdGF0ICgNCisgIElOICBDSEFSOCAgICpCbG9iSWQsDQorICBP VVQgVUlOVDE2ICAqQmxvYlN0YXRlLA0KKyAgT1VUIFVJTlQzMiAgKlNpemUsDQorICBPVVQgVUlO VDggICAqTWV0YWRhdGFMZW5ndGgsDQorICBPVVQgVUlOVDggICAqTWV0YWRhdGENCisgICkNCit7 DQorICBFRklfU1RBVFVTICBTdGF0dXM7DQorICBVSU5UOCAgICAgICAqU2VuZERhdGE7DQorICBV SU5UOCAgICAgICAqUmVzcG9uc2VEYXRhOw0KKyAgVUlOVDMyICAgICAgU2VuZERhdGFTaXplOw0K KyAgVUlOVDMyICAgICAgUmVzcG9uc2VEYXRhU2l6ZTsNCisNCisgIGlmIChNZXRhZGF0YSA9PSBO VUxMKSB7DQorICAgIEFTU0VSVCAoRkFMU0UpOw0KKyAgICByZXR1cm4gRUZJX0FCT1JURUQ7DQor ICB9DQorDQorICBSZXNwb25zZURhdGFTaXplID0gc2l6ZW9mIChJUE1JX0JMT0JfVFJBTlNGRVJf QkxPQl9TVEFUX1JFU1BPTlNFKTsNCisgIFJlc3BvbnNlRGF0YSAgICAgPSBBbGxvY2F0ZVplcm9Q b29sIChSZXNwb25zZURhdGFTaXplKTsNCisgIGlmIChSZXNwb25zZURhdGEgPT0gTlVMTCkgew0K KyAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICB9DQorDQorICAvLw0KKyAgLy8g Rm9ybWF0IHNlbmQgZGF0YQ0KKyAgLy8NCisgIFNlbmREYXRhU2l6ZSA9IHNpemVvZiAoSVBNSV9C TE9CX1RSQU5TRkVSX0JMT0JfU1RBVF9TRU5EX0RBVEEpOw0KKyAgU2VuZERhdGEgICAgID0gQWxs b2NhdGVaZXJvUG9vbCAoU2VuZERhdGFTaXplKTsNCisgIGlmIChTZW5kRGF0YSA9PSBOVUxMKSB7 DQorICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCisgIH0NCisNCisgIEFzY2lpU3Ry Q3B5UyAoKChJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9TVEFUX1NFTkRfREFUQSAqKVNlbmREYXRh KS0+QmxvYklkLCBJUE1JX09FTV9CTE9CX01BWF9EQVRBX1BFUl9QQUNLRVQsIEJsb2JJZCk7DQor DQorICBTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKElwbWlCbG9iVHJhbnNmZXJT dWJjb21tYW5kU3RhdCwgU2VuZERhdGEsIFNlbmREYXRhU2l6ZSwgKFVJTlQ4ICopUmVzcG9uc2VE YXRhLCAmUmVzcG9uc2VEYXRhU2l6ZSk7DQorICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0K KyAgICAqQmxvYlN0YXRlICAgICAgPSAoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1NUQVRfUkVT UE9OU0UgKilSZXNwb25zZURhdGEpLT5CbG9iU3RhdGU7DQorICAgICpTaXplICAgICAgICAgICA9 ICgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfU1RBVF9SRVNQT05TRSAqKVJlc3BvbnNlRGF0YSkt PlNpemU7DQorICAgICpNZXRhZGF0YUxlbmd0aCA9ICgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0Jf U1RBVF9SRVNQT05TRSAqKVJlc3BvbnNlRGF0YSktPk1ldGFEYXRhTGVuOw0KKw0KKyAgICBDb3B5 TWVtICgmTWV0YWRhdGEsICYoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1NUQVRfUkVTUE9OU0Ug KilSZXNwb25zZURhdGEpLT5NZXRhRGF0YSwgc2l6ZW9mICgoKElQTUlfQkxPQl9UUkFOU0ZFUl9C TE9CX1NUQVRfUkVTUE9OU0UgKilSZXNwb25zZURhdGEpLT5NZXRhRGF0YSkpOw0KKyAgfQ0KKw0K KyAgRnJlZVBvb2wgKFJlc3BvbnNlRGF0YSk7DQorICBGcmVlUG9vbCAoU2VuZERhdGEpOw0KKyAg cmV0dXJuIFN0YXR1czsNCit9DQorDQorLyoqDQorICBAcGFyYW1baW5dICAgICAgICAgU2Vzc2lv bklkICAgICAgIFRoZSBJRCBvZiB0aGUgc2Vzc2lvbiB0byBnYXRoZXIgc3RhdGlzdGljcyBmb3IN CisgIEBwYXJhbVtvdXRdICAgICAgICBCbG9iU3RhdGUgICAgICAgVGhlIGN1cnJlbnQgc3RhdGUg b2YgdGhlIGJsb2INCisgIEBwYXJhbVtvdXRdICAgICAgICBTaXplICAgICAgICAgICAgU2l6ZSBp biBieXRlcyBvZiB0aGUgYmxvYg0KKyAgQHBhcmFtW291dF0gICAgICAgIE1ldGFkYXRhTGVuZ3Ro ICBMZW5ndGggb2YgdGhlIG9wdGlvbmFsIG1ldGFkYXRhDQorICBAcGFyYW1bb3V0XSAgICAgICAg TWV0YWRhdGEgICAgICAgIE9wdGlvbmFsIGJsb2Itc3BlY2lmaWMgbWV0YWRhdGENCisNCisgIEBy ZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgVGhlIGJsb2Igc3RhdGlzdGljcyB3ZXJl IHN1Y2Nlc3NmdWxseSBnYXRoZXJlZC4NCisgIEByZXR2YWwgT3RoZXIgICAgICAgICAgICAgICAg ICAgICAgQW4gZXJyb3Igb2NjdXJyZWQNCisqKi8NCitFRklfU1RBVFVTDQorSXBtaUJsb2JUcmFu c2ZlclNlc3Npb25TdGF0ICgNCisgIElOICBVSU5UMTYgIFNlc3Npb25JZCwNCisgIE9VVCBVSU5U MTYgICpCbG9iU3RhdGUsDQorICBPVVQgVUlOVDMyICAqU2l6ZSwNCisgIE9VVCBVSU5UOCAgICpN ZXRhZGF0YUxlbmd0aCwNCisgIE9VVCBVSU5UOCAgICpNZXRhZGF0YQ0KKyAgKQ0KK3sNCisgIEVG SV9TVEFUVVMgIFN0YXR1czsNCisgIFVJTlQ4ICAgICAgICpTZW5kRGF0YTsNCisgIFVJTlQ4ICAg ICAgICpSZXNwb25zZURhdGE7DQorICBVSU5UMzIgICAgICBTZW5kRGF0YVNpemU7DQorICBVSU5U MzIgICAgICBSZXNwb25zZURhdGFTaXplOw0KKw0KKyAgaWYgKChCbG9iU3RhdGUgPT0gTlVMTCkg fHwgKFNpemUgPT0gTlVMTCkgfHwgKE1ldGFkYXRhTGVuZ3RoID09IE5VTEwpIHx8IChNZXRhZGF0 YSA9PSBOVUxMKSkgew0KKyAgICBBU1NFUlQgKEZBTFNFKTsNCisgICAgcmV0dXJuIEVGSV9BQk9S VEVEOw0KKyAgfQ0KKw0KKyAgUmVzcG9uc2VEYXRhU2l6ZSA9IHNpemVvZiAoSVBNSV9CTE9CX1RS QU5TRkVSX0JMT0JfU1RBVF9SRVNQT05TRSk7DQorICBSZXNwb25zZURhdGEgICAgID0gQWxsb2Nh dGVaZXJvUG9vbCAoUmVzcG9uc2VEYXRhU2l6ZSk7DQorICBpZiAoUmVzcG9uc2VEYXRhID09IE5V TEwpIHsNCisgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KKyAgfQ0KKw0KKyAgLy8N CisgIC8vIEZvcm1hdCBzZW5kIGRhdGENCisgIC8vDQorICBTZW5kRGF0YVNpemUgPSBzaXplb2Yg KElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1NFU1NJT05fU1RBVF9TRU5EX0RBVEEpOw0KKyAgU2Vu ZERhdGEgICAgID0gQWxsb2NhdGVaZXJvUG9vbCAoU2VuZERhdGFTaXplKTsNCisgIGlmIChTZW5k RGF0YSA9PSBOVUxMKSB7DQorICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCisgIH0N CisNCisgICgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfU0VTU0lPTl9TVEFUX1NFTkRfREFUQSAq KVNlbmREYXRhKS0+U2Vzc2lvbklkID0gU2Vzc2lvbklkOw0KKw0KKyAgU3RhdHVzID0gSXBtaUJs b2JUcmFuc2ZlclNlbmRJcG1pIChJcG1pQmxvYlRyYW5zZmVyU3ViY29tbWFuZFNlc3Npb25TdGF0 LCBTZW5kRGF0YSwgU2VuZERhdGFTaXplLCAoVUlOVDggKilSZXNwb25zZURhdGEsICZSZXNwb25z ZURhdGFTaXplKTsNCisNCisgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgICpCbG9i U3RhdGUgICAgICA9ICgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfU0VTU0lPTl9TVEFUX1JFU1BP TlNFICopUmVzcG9uc2VEYXRhKS0+QmxvYlN0YXRlOw0KKyAgICAqU2l6ZSAgICAgICAgICAgPSAo KElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1NFU1NJT05fU1RBVF9SRVNQT05TRSAqKVJlc3BvbnNl RGF0YSktPlNpemU7DQorICAgICpNZXRhZGF0YUxlbmd0aCA9ICgoSVBNSV9CTE9CX1RSQU5TRkVS X0JMT0JfU0VTU0lPTl9TVEFUX1JFU1BPTlNFICopUmVzcG9uc2VEYXRhKS0+TWV0YURhdGFMZW47 DQorDQorICAgIENvcHlNZW0gKCZNZXRhZGF0YSwgJigoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0Jf U0VTU0lPTl9TVEFUX1JFU1BPTlNFICopUmVzcG9uc2VEYXRhKS0+TWV0YURhdGEsIHNpemVvZiAo KChJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9TRVNTSU9OX1NUQVRfUkVTUE9OU0UgKilSZXNwb25z ZURhdGEpLT5NZXRhRGF0YSkpOw0KKyAgfQ0KKw0KKyAgRnJlZVBvb2wgKFJlc3BvbnNlRGF0YSk7 DQorICBGcmVlUG9vbCAoU2VuZERhdGEpOw0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQorDQorLyoq DQorICBAcGFyYW1baW5dICAgICAgICAgU2Vzc2lvbklkICAgICAgIFRoZSBJRCBvZiB0aGUgc2Vz c2lvbiB0byB3cml0ZSBtZXRhZGF0YSBmb3INCisgIEBwYXJhbVtpbl0gICAgICAgICBPZmZzZXQg ICAgICAgICAgVGhlIG9mZnNldCBvZiB0aGUgbWV0YWRhdGEgdG8gd3JpdGUgdG8NCisgIEBwYXJh bVtpbl0gICAgICAgICBEYXRhICAgICAgICAgICAgVGhlIGRhdGEgdG8gd3JpdGUgdG8gdGhlIG1l dGFkYXRhDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgIFRoZSBibG9i IG1ldGFkYXRhIHdhcyBzdWNjZXNzZnVsbHkgd3JpdHRlbi4NCisgIEByZXR2YWwgT3RoZXIgICAg ICAgICAgICAgICAgICAgICAgQW4gZXJyb3Igb2NjdXJyZWQNCisqKi8NCitFRklfU1RBVFVTDQor SXBtaUJsb2JUcmFuc2ZlcldyaXRlTWV0YSAoDQorICBJTiAgVUlOVDE2ICBTZXNzaW9uSWQsDQor ICBJTiAgVUlOVDMyICBPZmZzZXQsDQorICBJTiAgVUlOVDggICAqRGF0YSwNCisgIElOICBVSU5U MzIgIFdyaXRlTGVuZ3RoDQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKyAgVUlO VDggICAgICAgKlNlbmREYXRhOw0KKyAgVUlOVDMyICAgICAgU2VuZERhdGFTaXplOw0KKyAgVUlO VDMyICAgICAgUmVzcG9uc2VEYXRhU2l6ZTsNCisNCisgIC8vDQorICAvLyBGb3JtYXQgc2VuZCBk YXRhDQorICAvLw0KKyAgU2VuZERhdGFTaXplID0gc2l6ZW9mIChJUE1JX0JMT0JfVFJBTlNGRVJf QkxPQl9XUklURV9TRU5EX0RBVEEpOw0KKyAgU2VuZERhdGEgICAgID0gQWxsb2NhdGVaZXJvUG9v bCAoU2VuZERhdGFTaXplKTsNCisgIGlmIChTZW5kRGF0YSA9PSBOVUxMKSB7DQorICAgIHJldHVy biBFRklfT1VUX09GX1JFU09VUkNFUzsNCisgIH0NCisNCisgICgoSVBNSV9CTE9CX1RSQU5TRkVS X0JMT0JfV1JJVEVfU0VORF9EQVRBICopU2VuZERhdGEpLT5TZXNzaW9uSWQgPSBTZXNzaW9uSWQ7 DQorICAoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1dSSVRFX1NFTkRfREFUQSAqKVNlbmREYXRh KS0+T2Zmc2V0ICAgID0gT2Zmc2V0Ow0KKyAgQ29weU1lbSAoKChJUE1JX0JMT0JfVFJBTlNGRVJf QkxPQl9XUklURV9TRU5EX0RBVEEgKilTZW5kRGF0YSktPkRhdGEsIERhdGEsIHNpemVvZiAoVUlO VDgpICogV3JpdGVMZW5ndGgpOw0KKw0KKyAgUmVzcG9uc2VEYXRhU2l6ZSA9IDA7DQorDQorICBT dGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKElwbWlCbG9iVHJhbnNmZXJTdWJjb21t YW5kV3JpdGVNZXRhLCBTZW5kRGF0YSwgU2VuZERhdGFTaXplLCBOVUxMLCAmUmVzcG9uc2VEYXRh U2l6ZSk7DQorDQorICBGcmVlUG9vbCAoU2VuZERhdGEpOw0KKyAgcmV0dXJuIFN0YXR1czsNCit9 DQorDQorLyoqDQorICBUaGlzIGlzIHRoZSBkZWNsYXJhdGlvbiBvZiBhbiBFRkkgaW1hZ2UgZW50 cnkgcG9pbnQuIFRoaXMgZW50cnkgcG9pbnQgaXMNCisgIHRoZSBzYW1lIGZvciBVRUZJIEFwcGxp Y2F0aW9ucywgVUVGSSBPUyBMb2FkZXJzLCBhbmQgVUVGSSBEcml2ZXJzIGluY2x1ZGluZw0KKyAg Ym90aCBkZXZpY2UgZHJpdmVycyBhbmQgYnVzIGRyaXZlcnMuDQorDQorICBAcGFyYW1baW5dICBJ bWFnZUhhbmRsZSAgICAgICBUaGUgZmlybXdhcmUgYWxsb2NhdGVkIGhhbmRsZSBmb3IgdGhlIFVF RkkgaW1hZ2UuDQorICBAcGFyYW1baW5dICBTeXN0ZW1UYWJsZSAgICAgICBBIHBvaW50ZXIgdG8g dGhlIEVGSSBTeXN0ZW0gVGFibGUuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAg ICBUaGUgb3BlcmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuDQorICBAcmV0dmFsIE90aGVy cyAgICAgICAgICAgICAgICBBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkLg0KKw0KKyoqLw0K K0VGSV9TVEFUVVMNCitFRklBUEkNCitJcG1pQmxvYlRyYW5zZmVyRHhlRHJpdmVyRW50cnlQb2lu dCAoDQorICBJTiBFRklfSEFORExFICAgICAgICBJbWFnZUhhbmRsZSwNCisgIElOIEVGSV9TWVNU RU1fVEFCTEUgICpTeXN0ZW1UYWJsZQ0KKyAgKQ0KK3sNCisgIHJldHVybiBnQlMtPkluc3RhbGxN dWx0aXBsZVByb3RvY29sSW50ZXJmYWNlcyAoDQorICAgICAgICAgICAgICAgICZJbWFnZUhhbmRs ZSwNCisgICAgICAgICAgICAgICAgJmdFZGtpaUlwbWlCbG9iVHJhbnNmZXJQcm90b2NvbEd1aWQs DQorICAgICAgICAgICAgICAgIChWT0lEICopJm1JcG1pQmxvYlRyYW5zZmVyLA0KKyAgICAgICAg ICAgICAgICBOVUxMDQorICAgICAgICAgICAgICAgICk7DQorfQ0KZGlmZiAtLWdpdCBhL0ZlYXR1 cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJEeGUvVW5pdFRl c3QvSXBtaUJsb2JUcmFuc2ZlclRlc3RVbml0VGVzdHMuYyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxp dHlQa2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJEeGUvVW5pdFRlc3QvSXBtaUJsb2JUcmFu c2ZlclRlc3RVbml0VGVzdHMuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAuLmYzMjY0Njc5MjINCi0tLSAvZGV2L251bGwNCisrKyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxp dHlQa2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJEeGUvVW5pdFRlc3QvSXBtaUJsb2JUcmFu c2ZlclRlc3RVbml0VGVzdHMuYw0KQEAgLTAsMCArMSwxMTEzIEBADQorLyoqIEBmaWxlDQorKg0K KyogIENvcHlyaWdodCAoYykgMjAyMiwgTlZJRElBIENPUlBPUkFUSU9OLiBBbGwgcmlnaHRzIHJl c2VydmVkLg0KMjAyMw0KKyoNCisqICBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiBDb3B5cmlnaHQg KGMpIDIwMjIgTlZJRElBIENPUlBPUkFUSU9OICYgQUZGSUxJQVRFUw0KKyogIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorKg0KKyoqLw0KKyNpbmNsdWRlIDxz dGRhcmcuaD4NCisjaW5jbHVkZSA8c3RkZGVmLmg+DQorI2luY2x1ZGUgPHNldGptcC5oPg0KKyNp bmNsdWRlIDxzdGRpbnQuaD4NCisjaW5jbHVkZSA8Y21vY2thLmg+DQorDQorI2luY2x1ZGUgPFVl ZmkuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQorI2luY2x1ZGUgPExp YnJhcnkvRGVidWdMaWIuaD4NCisjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGli Lmg+DQorI2luY2x1ZGUgPExpYnJhcnkvSG9zdEJhc2VkVGVzdFN0dWJMaWIvSXBtaVN0dWJMaWIu aD4NCisNCisjaW5jbHVkZSA8TGlicmFyeS9Vbml0VGVzdExpYi5oPg0KKyNpbmNsdWRlIDxQcm90 b2NvbC9JcG1pQmxvYlRyYW5zZmVyLmg+DQorI2luY2x1ZGUgIi4uL0ludGVybmFsSXBtaUJsb2JU cmFuc2Zlci5oIg0KKw0KKyNkZWZpbmUgVU5JVF9URVNUX05BTUUgICAgICJJUE1JIEJsb2IgVHJh bnNmZXIgVW5pdCBUZXN0cyINCisjZGVmaW5lIFVOSVRfVEVTVF9WRVJTSU9OICAiMS4wIg0KKw0K K1VJTlQ4ICBJbnZhbGlkQ29tcGxldGlvbltdID0gew0KKyAgMHhDMCwgICAgICAgICAgICAgLy8g Q29tcGxldGlvbkNvZGUNCisgIDB4Q0YsIDB4QzIsIDB4MDAsIC8vIE9wZW5CTUMgT0VODQorfTsN CisjZGVmaW5lIElOVkFMSURfQ09NUExFVElPTl9TSVpFICA0ICogc2l6ZW9mKFVJTlQ4KQ0KKw0K K1VJTlQ4ICBOb0RhdGFSZXNwb25zZVtdID0gew0KKyAgMHgwMCwgICAgICAgICAgICAgLy8gQ29t cGxldGlvbkNvZGUNCisgIDB4Q0YsIDB4QzIsIDB4MDAsIC8vIE9wZW5CTUMgT0VODQorfTsNCisj ZGVmaW5lIE5PX0RBVEFfUkVTUE9OU0VfU0laRSAgNCAqIHNpemVvZihVSU5UOCkNCisNCitVSU5U OCAgQmFkT2VuUmVzcG9uc2VbXSA9IHsNCisgIDB4MDAsICAgICAgICAgICAgIC8vIENvbXBsZXRp b25Db2RlDQorICAweEZGLCAweEMyLCAweDAwLCAvLyBXcm9uZyBPRU4NCit9Ow0KKyNkZWZpbmUg QkFEX09FTl9SRVNQT05TRV9TSVpFICA0ICogc2l6ZW9mKFVJTlQ4KQ0KKw0KK1VJTlQ4ICBCYWRD cmNSZXNwb25zZVtdID0gew0KKyAgMHgwMCwgICAgICAgICAgICAgICAgICAgLy8gQ29tcGxldGlv bkNvZGUNCisgIDB4Q0YsIDB4QzIsIDB4MDAsICAgICAgIC8vIE9wZW5CTUMgT0VODQorICAweDAw LCAweDAwLCAgICAgICAgICAgICAvLyBDUkMNCisgIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIC8v IERhdGENCit9Ow0KKyNkZWZpbmUgQkFEX0NSQ19SRVNQT05TRV9TSVpFICAxMCAqIHNpemVvZihV SU5UOCkNCisNCitVSU5UOCAgVmFsaWROb0RhdGFSZXNwb25zZVtdID0gew0KKyAgMHgwMCwgICAg ICAgICAgICAgLy8gQ29tcGxldGlvbkNvZGUNCisgIDB4Q0YsIDB4QzIsIDB4MDAsIC8vIE9wZW5C TUMgT0VODQorfTsNCisNCisjZGVmaW5lIFZBTElEX05PREFUQV9SRVNQT05TRV9TSVpFICA0ICog c2l6ZW9mKFVJTlQ4KQ0KKw0KKy8qKg0KKyAgQHBhcmFtW2luXSAgQ29udGV4dCAgICBbT3B0aW9u YWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGVuYWJsZXM6DQorICAgICAgICAgICAgICAg ICAgICAgICAgIDEpIHRlc3QtY2FzZSByZXVzZSB3aXRoIHZhcmllZCBwYXJhbWV0ZXJzIGFuZA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAyKSB0ZXN0LWNhc2UgcmUtZW50cnkgZm9yIFRhcmdl dCB0ZXN0cyB0aGF0IG5lZWQgYQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZWJvb3QuICBU aGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBpdCBpcyB0aGUNCisgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0 IHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBhcmUgd2VsbCB1bmRlcnN0 b29kIGJ5IGFsbCB0ZXN0IGNhc2VzIHRoYXQgbWF5DQorICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN1bWUgaXQuDQorICBAcmV0dmFsICBVTklUX1RFU1RfUEFTU0VEICAgICAgICAgICAgIFRo ZSBVbml0IHRlc3QgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRlc3QNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB3YXMgc3VjY2Vzc2Z1bC4NCisgIEByZXR2YWwg IFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRCAgQSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcyBm YWlsZWQuDQorKiovDQorVU5JVF9URVNUX1NUQVRVUw0KK0VGSUFQSQ0KK0dvb2RDcmMgKA0KKyAg SU4gVU5JVF9URVNUX0NPTlRFWFQgIENvbnRleHQNCisgICkNCit7DQorICBVSU5UOCAgIERhdGFb NV0gPSB7IDB4MTIsIDB4MzQsIDB4NTYsIDB4NzgsIDB4OTAgfTsNCisgIFVJTlROICAgRGF0YVNp emU7DQorICBVSU5UMTYgIENyYzsNCisNCisgIERhdGFTaXplID0gc2l6ZW9mIChEYXRhKTsNCisN CisgIENyYyA9IENhbGN1bGF0ZUNyYzE2IChEYXRhLCBEYXRhU2l6ZSk7DQorDQorICBVVF9BU1NF UlRfRVFVQUwgKENyYywgMHhCOTI4KTsNCisgIHJldHVybiBVTklUX1RFU1RfUEFTU0VEOw0KK30N CisNCisvKioNCisgIEBwYXJhbVtpbl0gIENvbnRleHQgICAgW09wdGlvbmFsXSBBbiBvcHRpb25h bCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAxKSB0 ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQNCisgICAgICAgICAgICAg ICAgICAgICAgICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVzdHMgdGhhdCBu ZWVkIGENCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVib290LiAgVGhpcyBwYXJhbWV0ZXIg aXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Bv bnNpYmlsaXR5IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0aGUNCisgICAgICAg ICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwgdGVz dCBjYXNlcyB0aGF0IG1heQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lIGl0Lg0K KyAgQHJldHZhbCAgVU5JVF9URVNUX1BBU1NFRCAgICAgICAgICAgICBUaGUgVW5pdCB0ZXN0IGhh cyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNhc2Ugd2FzIHN1Y2Nlc3NmdWwuDQorICBAcmV0dmFsICBVTklUX1RFU1RfRVJS T1JfVEVTVF9GQUlMRUQgIEEgdGVzdCBjYXNlIGFzc2VydGlvbiBoYXMgZmFpbGVkLg0KKyoqLw0K K1VOSVRfVEVTVF9TVEFUVVMNCitFRklBUEkNCitCYWRDcmMgKA0KKyAgSU4gVU5JVF9URVNUX0NP TlRFWFQgIENvbnRleHQNCisgICkNCit7DQorICBVSU5UOCAgIERhdGFbNV0gPSB7IDB4MTIsIDB4 MzQsIDB4NTYsIDB4NzgsIDB4OTAgfTsNCisgIFVJTlROICAgRGF0YVNpemU7DQorICBVSU5UMTYg IENyYzsNCisNCisgIERhdGFTaXplID0gc2l6ZW9mIChEYXRhKTsNCisNCisgIENyYyA9IENhbGN1 bGF0ZUNyYzE2IChEYXRhLCBEYXRhU2l6ZSk7DQorDQorICBVVF9BU1NFUlRfTk9UX0VRVUFMIChD cmMsIDB4MzQwOSk7DQorICByZXR1cm4gVU5JVF9URVNUX1BBU1NFRDsNCit9DQorDQorLyoqDQor ICBAcGFyYW1baW5dICBDb250ZXh0ICAgIFtPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1ldGVy IHRoYXQgZW5hYmxlczoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSkgdGVzdC1jYXNlIHJl dXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kDQorICAgICAgICAgICAgICAgICAgICAgICAg IDIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhDQorICAg ICAgICAgICAgICAgICAgICAgICAgIHJlYm9vdC4gIFRoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCog YW5kIGl0IGlzIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eSBv ZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlDQorICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnRlbnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRlc3QgY2FzZXMgdGhh dCBtYXkNCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZSBpdC4NCisgIEByZXR2YWwg IFVOSVRfVEVTVF9QQVNTRUQgICAgICAgICAgICAgVGhlIFVuaXQgdGVzdCBoYXMgY29tcGxldGVk IGFuZCB0aGUgdGVzdA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj YXNlIHdhcyBzdWNjZXNzZnVsLg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJ TEVEICBBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzIGZhaWxlZC4NCisqKi8NCitVTklUX1RFU1Rf U1RBVFVTDQorRUZJQVBJDQorU2VuZElwbWlCYWRDb21wbGV0aW9uICgNCisgIElOIFVOSVRfVEVT VF9DT05URVhUICBDb250ZXh0DQorICApDQorew0KKyAgVk9JRCAgICAgICAgKlJlc3BvbnNlRGF0 YTsNCisgIFVJTlQzMiAgICAgICpSZXNwb25zZURhdGFTaXplOw0KKyAgRUZJX1NUQVRVUyAgU3Rh dHVzOw0KKyAgVk9JRCAgICAgICAgKk1vY2tSZXNwb25zZVJlc3VsdHMgPSBOVUxMOw0KKw0KKyAg TW9ja1Jlc3BvbnNlUmVzdWx0cyA9IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKElOVkFMSURf Q09NUExFVElPTl9TSVpFKTsNCisgIFJlc3BvbnNlRGF0YVNpemUgICAgPSAoVUlOVDMyICopQWxs b2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChVSU5UMzIpKTsNCisgIENvcHlNZW0gKE1vY2tSZXNwb25z ZVJlc3VsdHMsICZJbnZhbGlkQ29tcGxldGlvbiwgSU5WQUxJRF9DT01QTEVUSU9OX1NJWkUpOw0K Kw0KKyAgTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRz LCBJTlZBTElEX0NPTVBMRVRJT05fU0laRSwgRUZJX1NVQ0NFU1MpOw0KKw0KKyAgUmVzcG9uc2VE YXRhID0gKFVJTlQ4ICopQWxsb2NhdGVaZXJvUG9vbCAoKlJlc3BvbnNlRGF0YVNpemUpOw0KKyAg U3RhdHVzICAgICAgID0gSXBtaUJsb2JUcmFuc2ZlclNlbmRJcG1pIChJcG1pQmxvYlRyYW5zZmVy U3ViY29tbWFuZEdldENvdW50LCBOVUxMLCAwLCBSZXNwb25zZURhdGEsIFJlc3BvbnNlRGF0YVNp emUpOw0KKw0KKyAgVVRfQVNTRVJUX1NUQVRVU19FUVVBTCAoU3RhdHVzLCBFRklfUFJPVE9DT0xf RVJST1IpOw0KKyAgRnJlZVBvb2wgKE1vY2tSZXNwb25zZVJlc3VsdHMpOw0KKyAgRnJlZVBvb2wg KFJlc3BvbnNlRGF0YVNpemUpOw0KKyAgRnJlZVBvb2wgKFJlc3BvbnNlRGF0YSk7DQorICByZXR1 cm4gVU5JVF9URVNUX1BBU1NFRDsNCit9DQorDQorLyoqDQorICBAcGFyYW1baW5dICBDb250ZXh0 ICAgIFtPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgZW5hYmxlczoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgMSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFt ZXRlcnMgYW5kDQorICAgICAgICAgICAgICAgICAgICAgICAgIDIpIHRlc3QtY2FzZSByZS1lbnRy eSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhDQorICAgICAgICAgICAgICAgICAgICAgICAg IHJlYm9vdC4gIFRoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRoZQ0KKyAgICAg ICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8g ZW5zdXJlIHRoYXQgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIGFyZSB3 ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRlc3QgY2FzZXMgdGhhdCBtYXkNCisgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3VtZSBpdC4NCisgIEByZXR2YWwgIFVOSVRfVEVTVF9QQVNTRUQgICAg ICAgICAgICAgVGhlIFVuaXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGVzdA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHdhcyBzdWNjZXNzZnVsLg0K KyAgQHJldHZhbCAgVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICBBIHRlc3QgY2FzZSBhc3Nl cnRpb24gaGFzIGZhaWxlZC4NCisqKi8NCitVTklUX1RFU1RfU1RBVFVTDQorRUZJQVBJDQorU2Vu ZElwbWlOb0RhdGFSZXNwb25zZSAoDQorICBJTiBVTklUX1RFU1RfQ09OVEVYVCAgQ29udGV4dA0K KyAgKQ0KK3sNCisgIFZPSUQgICAgICAgICpSZXNwb25zZURhdGE7DQorICBVSU5UMzIgICAgICAq UmVzcG9uc2VEYXRhU2l6ZTsNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisgIFZPSUQgICAgICAg ICpNb2NrUmVzcG9uc2VSZXN1bHRzID0gTlVMTDsNCisNCisgIE1vY2tSZXNwb25zZVJlc3VsdHMg PSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChOT19EQVRBX1JFU1BPTlNFX1NJWkUpOw0KKyAg UmVzcG9uc2VEYXRhU2l6ZSAgICA9IChVSU5UMzIgKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2Yg KFVJTlQzMikpOw0KKyAgQ29weU1lbSAoTW9ja1Jlc3BvbnNlUmVzdWx0cywgJk5vRGF0YVJlc3Bv bnNlLCBOT19EQVRBX1JFU1BPTlNFX1NJWkUpOw0KKw0KKyAgU3RhdHVzID0gTW9ja0lwbWlTdWJt aXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRzLCBOT19EQVRBX1JFU1BPTlNF X1NJWkUsIEVGSV9TVUNDRVNTKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAg cmV0dXJuIFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRDsNCisgIH0NCisNCisgIFJlc3BvbnNl RGF0YSA9IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoTm9EYXRhUmVzcG9uc2Up KTsNCisgIFN0YXR1cyAgICAgICA9IElwbWlCbG9iVHJhbnNmZXJTZW5kSXBtaSAoSXBtaUJsb2JU cmFuc2ZlclN1YmNvbW1hbmRHZXRDb3VudCwgTlVMTCwgMCwgUmVzcG9uc2VEYXRhLCBSZXNwb25z ZURhdGFTaXplKTsNCisNCisgIFVUX0FTU0VSVF9TVEFUVVNfRVFVQUwgKFN0YXR1cywgRUZJX1NV Q0NFU1MpOw0KKyAgVVRfQVNTRVJUX0VRVUFMICgqUmVzcG9uc2VEYXRhU2l6ZSwgMCk7DQorICBG cmVlUG9vbCAoTW9ja1Jlc3BvbnNlUmVzdWx0cyk7DQorICBGcmVlUG9vbCAoUmVzcG9uc2VEYXRh U2l6ZSk7DQorICBGcmVlUG9vbCAoUmVzcG9uc2VEYXRhKTsNCisgIHJldHVybiBVTklUX1RFU1Rf UEFTU0VEOw0KK30NCisNCisvKioNCisgIEBwYXJhbVtpbl0gIENvbnRleHQgICAgW09wdGlvbmFs XSBBbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQNCisg ICAgICAgICAgICAgICAgICAgICAgICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQg dGVzdHMgdGhhdCBuZWVkIGENCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVib290LiAgVGhp cyBwYXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlDQorICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0 aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9v ZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdW1lIGl0Lg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX1BBU1NFRCAgICAgICAgICAgICBUaGUg VW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0DQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNhc2Ugd2FzIHN1Y2Nlc3NmdWwuDQorICBAcmV0dmFsICBV TklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgIEEgdGVzdCBjYXNlIGFzc2VydGlvbiBoYXMgZmFp bGVkLg0KKyoqLw0KK1VOSVRfVEVTVF9TVEFUVVMNCitFRklBUEkNCitTZW5kSXBtaUJhZE9lblJl c3BvbnNlICgNCisgIElOIFVOSVRfVEVTVF9DT05URVhUICBDb250ZXh0DQorICApDQorew0KKyAg Vk9JRCAgICAgICAgKlJlc3BvbnNlRGF0YTsNCisgIFVJTlQzMiAgICAgICpSZXNwb25zZURhdGFT aXplOw0KKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKyAgVk9JRCAgICAgICAgKk1vY2tSZXNwb25z ZVJlc3VsdHMgPSBOVUxMOw0KKw0KKyAgTW9ja1Jlc3BvbnNlUmVzdWx0cyA9IChVSU5UOCAqKUFs bG9jYXRlWmVyb1Bvb2wgKEJBRF9PRU5fUkVTUE9OU0VfU0laRSk7DQorICBSZXNwb25zZURhdGFT aXplICAgID0gKFVJTlQzMiAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVUlOVDMyKSk7DQor ICBDb3B5TWVtIChNb2NrUmVzcG9uc2VSZXN1bHRzLCAmQmFkT2VuUmVzcG9uc2UsIEJBRF9PRU5f UkVTUE9OU0VfU0laRSk7DQorDQorICBTdGF0dXMgPSBNb2NrSXBtaVN1Ym1pdENvbW1hbmQgKChV SU5UOCAqKU1vY2tSZXNwb25zZVJlc3VsdHMsIEJBRF9PRU5fUkVTUE9OU0VfU0laRSwgRUZJX1NV Q0NFU1MpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICByZXR1cm4gVU5JVF9U RVNUX0VSUk9SX1RFU1RfRkFJTEVEOw0KKyAgfQ0KKw0KKyAgUmVzcG9uc2VEYXRhID0gKFVJTlQ4 ICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChCYWRPZW5SZXNwb25zZSkpOw0KKyAgU3RhdHVz ICAgICAgID0gSXBtaUJsb2JUcmFuc2ZlclNlbmRJcG1pIChJcG1pQmxvYlRyYW5zZmVyU3ViY29t bWFuZEdldENvdW50LCBOVUxMLCAwLCBSZXNwb25zZURhdGEsIFJlc3BvbnNlRGF0YVNpemUpOw0K Kw0KKyAgVVRfQVNTRVJUX1NUQVRVU19FUVVBTCAoU3RhdHVzLCBFRklfUFJPVE9DT0xfRVJST1Ip Ow0KKyAgRnJlZVBvb2wgKE1vY2tSZXNwb25zZVJlc3VsdHMpOw0KKyAgRnJlZVBvb2wgKFJlc3Bv bnNlRGF0YVNpemUpOw0KKyAgRnJlZVBvb2wgKFJlc3BvbnNlRGF0YSk7DQorICByZXR1cm4gVU5J VF9URVNUX1BBU1NFRDsNCit9DQorDQorLyoqDQorICBAcGFyYW1baW5dICBDb250ZXh0ICAgIFtP cHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgZW5hYmxlczoNCisgICAgICAgICAg ICAgICAgICAgICAgICAgMSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMg YW5kDQorICAgICAgICAgICAgICAgICAgICAgICAgIDIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3Ig VGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhDQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlYm9v dC4gIFRoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRoZQ0KKyAgICAgICAgICAg ICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJl IHRoYXQgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIGFyZSB3ZWxsIHVu ZGVyc3Rvb2QgYnkgYWxsIHRlc3QgY2FzZXMgdGhhdCBtYXkNCisgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3VtZSBpdC4NCisgIEByZXR2YWwgIFVOSVRfVEVTVF9QQVNTRUQgICAgICAgICAg ICAgVGhlIFVuaXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGVzdA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHdhcyBzdWNjZXNzZnVsLg0KKyAgQHJl dHZhbCAgVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICBBIHRlc3QgY2FzZSBhc3NlcnRpb24g aGFzIGZhaWxlZC4NCisqKi8NCitVTklUX1RFU1RfU1RBVFVTDQorRUZJQVBJDQorU2VuZElwbWlC YWRDcmNSZXNwb25zZSAoDQorICBJTiBVTklUX1RFU1RfQ09OVEVYVCAgQ29udGV4dA0KKyAgKQ0K K3sNCisgIFZPSUQgICAgICAgICpSZXNwb25zZURhdGE7DQorICBVSU5UMzIgICAgICAqUmVzcG9u c2VEYXRhU2l6ZTsNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisgIFZPSUQgICAgICAgICpNb2Nr UmVzcG9uc2VSZXN1bHRzID0gTlVMTDsNCisNCisgIE1vY2tSZXNwb25zZVJlc3VsdHMgPSAoVUlO VDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKEJBRF9DUkNfUkVTUE9OU0VfU0laRSkpOw0K KyAgUmVzcG9uc2VEYXRhU2l6ZSAgICA9IChVSU5UMzIgKilBbGxvY2F0ZVplcm9Qb29sIChzaXpl b2YgKFVJTlQzMikpOw0KKyAgQ29weU1lbSAoTW9ja1Jlc3BvbnNlUmVzdWx0cywgJkJhZENyY1Jl c3BvbnNlLCBCQURfQ1JDX1JFU1BPTlNFX1NJWkUpOw0KKw0KKyAgU3RhdHVzID0gTW9ja0lwbWlT dWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRzLCBCQURfQ1JDX1JFU1BP TlNFX1NJWkUsIEVGSV9TVUNDRVNTKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisg ICAgcmV0dXJuIFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRDsNCisgIH0NCisNCisgIFJlc3Bv bnNlRGF0YSA9IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoQmFkQ3JjUmVzcG9u c2UpKTsNCisgIFN0YXR1cyAgICAgICA9IElwbWlCbG9iVHJhbnNmZXJTZW5kSXBtaSAoSXBtaUJs b2JUcmFuc2ZlclN1YmNvbW1hbmRHZXRDb3VudCwgTlVMTCwgMCwgUmVzcG9uc2VEYXRhLCBSZXNw b25zZURhdGFTaXplKTsNCisNCisgIFVUX0FTU0VSVF9TVEFUVVNfRVFVQUwgKFN0YXR1cywgRUZJ X0NSQ19FUlJPUik7DQorICBGcmVlUG9vbCAoTW9ja1Jlc3BvbnNlUmVzdWx0cyk7DQorICBGcmVl UG9vbCAoUmVzcG9uc2VEYXRhU2l6ZSk7DQorICBGcmVlUG9vbCAoUmVzcG9uc2VEYXRhKTsNCisg IHJldHVybiBVTklUX1RFU1RfUEFTU0VEOw0KK30NCisNCitVSU5UOCAgVmFsaWRHZXRDb3VudFJl c3BvbnNlW10gPSB7DQorICAweDAwLCAgICAgICAgICAgICAgICAgICAvLyBDb21wbGV0aW9uQ29k ZQ0KKyAgMHhDRiwgMHhDMiwgMHgwMCwgICAgICAgLy8gT3BlbkJNQyBPRU4NCisgIDB4QTQsIDB4 NzgsICAgICAgICAgICAgIC8vIENSQw0KKyAgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgLy8gRGF0 YQ0KK307DQorI2RlZmluZSBWQUxJRF9HRVRfQ09VTlRfUkVTUE9OU0VfU0laRSAgMTAgKiBzaXpl b2YoVUlOVDgpDQorDQorLyoqDQorICBAcGFyYW1baW5dICBDb250ZXh0ICAgIFtPcHRpb25hbF0g QW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgZW5hYmxlczoNCisgICAgICAgICAgICAgICAgICAg ICAgICAgMSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kDQorICAg ICAgICAgICAgICAgICAgICAgICAgIDIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRl c3RzIHRoYXQgbmVlZCBhDQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlYm9vdC4gIFRoaXMg cGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAg ICAgICByZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJlIHRoYXQgdGhl DQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2Qg YnkgYWxsIHRlc3QgY2FzZXMgdGhhdCBtYXkNCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3VtZSBpdC4NCisgIEByZXR2YWwgIFVOSVRfVEVTVF9QQVNTRUQgICAgICAgICAgICAgVGhlIFVu aXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGVzdA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYXNlIHdhcyBzdWNjZXNzZnVsLg0KKyAgQHJldHZhbCAgVU5J VF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICBBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzIGZhaWxl ZC4NCisqKi8NCitVTklUX1RFU1RfU1RBVFVTDQorRUZJQVBJDQorU2VuZElwbWlWYWxpZENvdW50 UmVzcG9uc2UgKA0KKyAgSU4gVU5JVF9URVNUX0NPTlRFWFQgIENvbnRleHQNCisgICkNCit7DQor ICBVSU5UOCAgICAgICAqUmVzcG9uc2VEYXRhOw0KKyAgVUlOVDMyICAgICAgKlJlc3BvbnNlRGF0 YVNpemU7DQorICBFRklfU1RBVFVTICBTdGF0dXM7DQorICBWT0lEICAgICAgICAqTW9ja1Jlc3Bv bnNlUmVzdWx0cyA9IE5VTEw7DQorDQorICBNb2NrUmVzcG9uc2VSZXN1bHRzID0gKFVJTlQ4ICop QWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChWQUxJRF9HRVRfQ09VTlRfUkVTUE9OU0VfU0laRSkp Ow0KKyAgUmVzcG9uc2VEYXRhU2l6ZSAgICA9IChVSU5UMzIgKilBbGxvY2F0ZVplcm9Qb29sIChz aXplb2YgKFVJTlQzMikpOw0KKyAgQ29weU1lbSAoTW9ja1Jlc3BvbnNlUmVzdWx0cywgJlZhbGlk R2V0Q291bnRSZXNwb25zZSwgVkFMSURfR0VUX0NPVU5UX1JFU1BPTlNFX1NJWkUpOw0KKw0KKyAg U3RhdHVzID0gTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1 bHRzLCBWQUxJRF9HRVRfQ09VTlRfUkVTUE9OU0VfU0laRSwgRUZJX1NVQ0NFU1MpOw0KKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICByZXR1cm4gVU5JVF9URVNUX0VSUk9SX1RFU1Rf RkFJTEVEOw0KKyAgfQ0KKw0KKyAgUmVzcG9uc2VEYXRhID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6 ZW9mIChWYWxpZEdldENvdW50UmVzcG9uc2UpKTsNCisgIFN0YXR1cyAgICAgICA9IElwbWlCbG9i VHJhbnNmZXJTZW5kSXBtaSAoSXBtaUJsb2JUcmFuc2ZlclN1YmNvbW1hbmRHZXRDb3VudCwgTlVM TCwgMCwgUmVzcG9uc2VEYXRhLCBSZXNwb25zZURhdGFTaXplKTsNCisNCisgIFVUX0FTU0VSVF9T VEFUVVNfRVFVQUwgKFN0YXR1cywgRUZJX1NVQ0NFU1MpOw0KKyAgRnJlZVBvb2wgKE1vY2tSZXNw b25zZVJlc3VsdHMpOw0KKyAgRnJlZVBvb2wgKFJlc3BvbnNlRGF0YVNpemUpOw0KKyAgRnJlZVBv b2wgKFJlc3BvbnNlRGF0YSk7DQorICByZXR1cm4gVU5JVF9URVNUX1BBU1NFRDsNCit9DQorDQor LyoqDQorICBAcGFyYW1baW5dICBDb250ZXh0ICAgIFtPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFy YW1ldGVyIHRoYXQgZW5hYmxlczoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSkgdGVzdC1j YXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kDQorICAgICAgICAgICAgICAgICAg ICAgICAgIDIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBh DQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlYm9vdC4gIFRoaXMgcGFyYW1ldGVyIGlzIGEg Vk9JRCogYW5kIGl0IGlzIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJp bGl0eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlDQorICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRlbnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRlc3QgY2Fz ZXMgdGhhdCBtYXkNCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZSBpdC4NCisgIEBy ZXR2YWwgIFVOSVRfVEVTVF9QQVNTRUQgICAgICAgICAgICAgVGhlIFVuaXQgdGVzdCBoYXMgY29t cGxldGVkIGFuZCB0aGUgdGVzdA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjYXNlIHdhcyBzdWNjZXNzZnVsLg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX0VSUk9SX1RF U1RfRkFJTEVEICBBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzIGZhaWxlZC4NCisqKi8NCitVTklU X1RFU1RfU1RBVFVTDQorRUZJQVBJDQorR2V0Q291bnRWYWxpZENvdW50UmVzcG9uc2UgKA0KKyAg SU4gVU5JVF9URVNUX0NPTlRFWFQgIENvbnRleHQNCisgICkNCit7DQorICBFRklfU1RBVFVTICBT dGF0dXM7DQorICBVSU5UMzIgICAgICBDb3VudDsNCisgIFZPSUQgICAgICAgICpNb2NrUmVzcG9u c2VSZXN1bHRzID0gTlVMTDsNCisNCisgIENvdW50ID0gMDsNCisNCisgIE1vY2tSZXNwb25zZVJl c3VsdHMgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFZBTElEX0dFVF9DT1VO VF9SRVNQT05TRV9TSVpFKSk7DQorICBDb3B5TWVtIChNb2NrUmVzcG9uc2VSZXN1bHRzLCAmVmFs aWRHZXRDb3VudFJlc3BvbnNlLCBWQUxJRF9HRVRfQ09VTlRfUkVTUE9OU0VfU0laRSk7DQorDQor ICBTdGF0dXMgPSBNb2NrSXBtaVN1Ym1pdENvbW1hbmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJl c3VsdHMsIFZBTElEX0dFVF9DT1VOVF9SRVNQT05TRV9TSVpFLCBFRklfU1VDQ0VTUyk7DQorICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBVTklUX1RFU1RfRVJST1JfVEVT VF9GQUlMRUQ7DQorICB9DQorDQorICBTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyR2V0Q291bnQg KCZDb3VudCk7DQorDQorICBVVF9BU1NFUlRfU1RBVFVTX0VRVUFMIChTdGF0dXMsIEVGSV9TVUND RVNTKTsNCisgIFVUX0FTU0VSVF9FUVVBTCAoQ291bnQsIDEpOw0KKyAgRnJlZVBvb2wgKE1vY2tS ZXNwb25zZVJlc3VsdHMpOw0KKyAgcmV0dXJuIFVOSVRfVEVTVF9QQVNTRUQ7DQorfQ0KKw0KK1VJ TlQ4ICBWYWxpZEVudW1lcmF0ZVJlc3BvbnNlW10gPSB7DQorICAweDAwLCAgICAgICAgICAgICAg ICAgICAvLyBDb21wbGV0aW9uQ29kZQ0KKyAgMHhDRiwgMHhDMiwgMHgwMCwgICAgICAgLy8gT3Bl bkJNQyBPRU4NCisgIDB4ODEsIDB4MTMsICAgICAgICAgICAgIC8vIENSQw0KKyAgMHgyRiwgMHg3 MywgMHg2RCwgMHg2MiwgLy8gRGF0YSA9ICIvc21iaW9zIg0KKyAgMHg2OSwgMHg2RiwgMHg3Mywg MHgwMCwNCit9Ow0KKyNkZWZpbmUgVkFMSURfRU5VTUVSQVRFX1JFU1BPTlNFX1NJWkUgIDE0ICog c2l6ZW9mKFVJTlQ4KQ0KKw0KKy8qKg0KKyAgQHBhcmFtW2luXSAgQ29udGV4dCAgICBbT3B0aW9u YWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGVuYWJsZXM6DQorICAgICAgICAgICAgICAg ICAgICAgICAgIDEpIHRlc3QtY2FzZSByZXVzZSB3aXRoIHZhcmllZCBwYXJhbWV0ZXJzIGFuZA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAyKSB0ZXN0LWNhc2UgcmUtZW50cnkgZm9yIFRhcmdl dCB0ZXN0cyB0aGF0IG5lZWQgYQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZWJvb3QuICBU aGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBpdCBpcyB0aGUNCisgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0 IHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBhcmUgd2VsbCB1bmRlcnN0 b29kIGJ5IGFsbCB0ZXN0IGNhc2VzIHRoYXQgbWF5DQorICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN1bWUgaXQuDQorICBAcmV0dmFsICBVTklUX1RFU1RfUEFTU0VEICAgICAgICAgICAgIFRo ZSBVbml0IHRlc3QgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRlc3QNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB3YXMgc3VjY2Vzc2Z1bC4NCisgIEByZXR2YWwg IFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRCAgQSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcyBm YWlsZWQuDQorKiovDQorVU5JVF9URVNUX1NUQVRVUw0KK0VGSUFQSQ0KK0VudW1lcmF0ZVZhbGlk UmVzcG9uc2UgKA0KKyAgSU4gVU5JVF9URVNUX0NPTlRFWFQgIENvbnRleHQNCisgICkNCit7DQor ICBFRklfU1RBVFVTICBTdGF0dXM7DQorICBDSEFSOCAgICAgICAqQmxvYklkOw0KKyAgVk9JRCAg ICAgICAgKk1vY2tSZXNwb25zZVJlc3VsdHMgPSBOVUxMOw0KKw0KKyAgTW9ja1Jlc3BvbnNlUmVz dWx0cyA9IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVkFMSURfRU5VTUVSQVRF X1JFU1BPTlNFX1NJWkUpKTsNCisgIENvcHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZWYWxp ZEVudW1lcmF0ZVJlc3BvbnNlLCBWQUxJRF9FTlVNRVJBVEVfUkVTUE9OU0VfU0laRSk7DQorDQor ICBTdGF0dXMgPSBNb2NrSXBtaVN1Ym1pdENvbW1hbmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJl c3VsdHMsIFZBTElEX0VOVU1FUkFURV9SRVNQT05TRV9TSVpFLCBFRklfU1VDQ0VTUyk7DQorICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBVTklUX1RFU1RfRVJST1JfVEVT VF9GQUlMRUQ7DQorICB9DQorDQorICBCbG9iSWQgPSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2Yg KENIQVI4KSAqIElQTUlfT0VNX0JMT0JfTUFYX0RBVEFfUEVSX1BBQ0tFVCk7DQorDQorICBTdGF0 dXMgPSBJcG1pQmxvYlRyYW5zZmVyRW51bWVyYXRlICgwLCBCbG9iSWQpOw0KKw0KKyAgVVRfQVNT RVJUX1NUQVRVU19FUVVBTCAoU3RhdHVzLCBFRklfU1VDQ0VTUyk7DQorICBVVF9BU1NFUlRfTUVN X0VRVUFMIChCbG9iSWQsICIvc21iaW9zIiwgNyk7DQorICBGcmVlUG9vbCAoTW9ja1Jlc3BvbnNl UmVzdWx0cyk7DQorICBGcmVlUG9vbCAoQmxvYklkKTsNCisgIHJldHVybiBVTklUX1RFU1RfUEFT U0VEOw0KK30NCisNCisvKioNCisgIEBwYXJhbVtpbl0gIENvbnRleHQgICAgW09wdGlvbmFsXSBB biBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQNCisgICAg ICAgICAgICAgICAgICAgICAgICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVz dHMgdGhhdCBuZWVkIGENCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVib290LiAgVGhpcyBw YXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlDQorICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0aGUN CisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBi eSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dW1lIGl0Lg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX1BBU1NFRCAgICAgICAgICAgICBUaGUgVW5p dCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0DQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhc2Ugd2FzIHN1Y2Nlc3NmdWwuDQorICBAcmV0dmFsICBVTklU X1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgIEEgdGVzdCBjYXNlIGFzc2VydGlvbiBoYXMgZmFpbGVk Lg0KKyoqLw0KK1VOSVRfVEVTVF9TVEFUVVMNCitFRklBUEkNCitFbnVtZXJhdGVJbnZhbGlkQnVm ZmVyICgNCisgIElOIFVOSVRfVEVTVF9DT05URVhUICBDb250ZXh0DQorICApDQorew0KKyAgQ0hB UjggICAgICAgKkJsb2JJZDsNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisgIFZPSUQgICAgICAg ICpNb2NrUmVzcG9uc2VSZXN1bHRzID0gTlVMTDsNCisNCisgIE1vY2tSZXNwb25zZVJlc3VsdHMg PSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFZBTElEX0VOVU1FUkFURV9SRVNQ T05TRV9TSVpFKSk7DQorICBDb3B5TWVtIChNb2NrUmVzcG9uc2VSZXN1bHRzLCAmVmFsaWRFbnVt ZXJhdGVSZXNwb25zZSwgVkFMSURfRU5VTUVSQVRFX1JFU1BPTlNFX1NJWkUpOw0KKw0KKyAgU3Rh dHVzID0gTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRz LCBWQUxJRF9FTlVNRVJBVEVfUkVTUE9OU0VfU0laRSwgRUZJX1NVQ0NFU1MpOw0KKyAgaWYgKEVG SV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICByZXR1cm4gVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJ TEVEOw0KKyAgfQ0KKw0KKyAgQmxvYklkID0gTlVMTDsNCisNCisgIFVUX0VYUEVDVF9BU1NFUlRf RkFJTFVSRSAoSXBtaUJsb2JUcmFuc2ZlckVudW1lcmF0ZSAoMCwgQmxvYklkKSwgTlVMTCk7DQor DQorICBGcmVlUG9vbCAoTW9ja1Jlc3BvbnNlUmVzdWx0cyk7DQorICByZXR1cm4gVU5JVF9URVNU X1BBU1NFRDsNCit9DQorDQorVUlOVDggIFZhbGlkT3BlblJlc3BvbnNlW10gPSB7DQorICAweDAw LCAgICAgICAgICAgICAvLyBDb21wbGV0aW9uQ29kZQ0KKyAgMHhDRiwgMHhDMiwgMHgwMCwgLy8g T3BlbkJNQyBPRU4NCisgIDB4OTMsIDB4RDEsICAgICAgIC8vIENSQw0KKyAgMHgwMywgMHgwMCwg ICAgICAgLy8gU2Vzc2lvbklkID0gMw0KK307DQorI2RlZmluZSBWQUxJRF9PUEVOX1JFU1BPTlNF X1NJWkUgIDggKiBzaXplb2YoVUlOVDgpDQorDQorLyoqDQorICBAcGFyYW1baW5dICBDb250ZXh0 ICAgIFtPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgZW5hYmxlczoNCisgICAg ICAgICAgICAgICAgICAgICAgICAgMSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFt ZXRlcnMgYW5kDQorICAgICAgICAgICAgICAgICAgICAgICAgIDIpIHRlc3QtY2FzZSByZS1lbnRy eSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhDQorICAgICAgICAgICAgICAgICAgICAgICAg IHJlYm9vdC4gIFRoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRoZQ0KKyAgICAg ICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8g ZW5zdXJlIHRoYXQgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzIGFyZSB3 ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRlc3QgY2FzZXMgdGhhdCBtYXkNCisgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3VtZSBpdC4NCisgIEByZXR2YWwgIFVOSVRfVEVTVF9QQVNTRUQgICAg ICAgICAgICAgVGhlIFVuaXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGVzdA0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHdhcyBzdWNjZXNzZnVsLg0K KyAgQHJldHZhbCAgVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICBBIHRlc3QgY2FzZSBhc3Nl cnRpb24gaGFzIGZhaWxlZC4NCisqKi8NCitVTklUX1RFU1RfU1RBVFVTDQorRUZJQVBJDQorT3Bl blZhbGlkUmVzcG9uc2UgKA0KKyAgSU4gVU5JVF9URVNUX0NPTlRFWFQgIENvbnRleHQNCisgICkN Cit7DQorICBFRklfU1RBVFVTICBTdGF0dXM7DQorICBDSEFSOCAgICAgICAqQmxvYklkOw0KKyAg VUlOVDE2ICAgICAgRmxhZ3M7DQorICBVSU5UMTYgICAgICBTZXNzaW9uSWQ7DQorICBWT0lEICAg ICAgICAqTW9ja1Jlc3BvbnNlUmVzdWx0cyAgPSBOVUxMOw0KKyAgVk9JRCAgICAgICAgKk1vY2tS ZXNwb25zZVJlc3VsdHMyID0gTlVMTDsNCisgIFZPSUQgICAgICAgICpNb2NrUmVzcG9uc2VSZXN1 bHRzMyA9IE5VTEw7DQorDQorICBGbGFncyA9IEJMT0JfVFJBTlNGRVJfU1RBVF9PUEVOX1c7DQor DQorICAvLw0KKyAgLy8gQW4gb3BlbiBjYWxsIGVmZmVjdGl2ZWx5IGxlYWRzIHRvIHRocmVlIElQ TUkgY29tbWFuZHMNCisgIC8vIDEuIEdldENvdW50IG9mIGJsb2JzDQorICAvLyAyLiBFbnVtZXJh dGUgdGhlIHJlcXVlc3RlZCBibG9iDQorICAvLyAzLiBPcGVuIHRoZSByZXF1ZXN0ZWQgYmxvYg0K KyAgLy8NCisgIC8vIFNvIHdlJ2xsIHB1c2ggdGhyZWUgSXBtaSByZXNwb25zZXMgaW4gdGhpcyBj YXNlDQorICAvLw0KKw0KKyAgTW9ja1Jlc3BvbnNlUmVzdWx0cyA9IChVSU5UOCAqKUFsbG9jYXRl WmVyb1Bvb2wgKHNpemVvZiAoVkFMSURfT1BFTl9SRVNQT05TRV9TSVpFKSk7DQorDQorICBDb3B5 TWVtIChNb2NrUmVzcG9uc2VSZXN1bHRzLCAmVmFsaWRPcGVuUmVzcG9uc2UsIFZBTElEX09QRU5f UkVTUE9OU0VfU0laRSk7DQorICBTdGF0dXMgPSBNb2NrSXBtaVN1Ym1pdENvbW1hbmQgKChVSU5U OCAqKU1vY2tSZXNwb25zZVJlc3VsdHMsIFZBTElEX09QRU5fUkVTUE9OU0VfU0laRSwgRUZJX1NV Q0NFU1MpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICByZXR1cm4gVU5JVF9U RVNUX0VSUk9SX1RFU1RfRkFJTEVEOw0KKyAgfQ0KKw0KKyAgTW9ja1Jlc3BvbnNlUmVzdWx0czIg PSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFZBTElEX0VOVU1FUkFURV9SRVNQ T05TRV9TSVpFKSk7DQorICBDb3B5TWVtIChNb2NrUmVzcG9uc2VSZXN1bHRzMiwgJlZhbGlkRW51 bWVyYXRlUmVzcG9uc2UsIFZBTElEX0VOVU1FUkFURV9SRVNQT05TRV9TSVpFKTsNCisgIFN0YXR1 cyA9IE1vY2tJcG1pU3VibWl0Q29tbWFuZCAoKFVJTlQ4ICopTW9ja1Jlc3BvbnNlUmVzdWx0czIs IFZBTElEX0VOVU1FUkFURV9SRVNQT05TRV9TSVpFLCBFRklfU1VDQ0VTUyk7DQorICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlM RUQ7DQorICB9DQorDQorICBNb2NrUmVzcG9uc2VSZXN1bHRzMyA9IChVSU5UOCAqKUFsbG9jYXRl WmVyb1Bvb2wgKHNpemVvZiAoVkFMSURfR0VUX0NPVU5UX1JFU1BPTlNFX1NJWkUpKTsNCisgIENv cHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMzLCAmVmFsaWRHZXRDb3VudFJlc3BvbnNlLCBWQUxJ RF9HRVRfQ09VTlRfUkVTUE9OU0VfU0laRSk7DQorICBTdGF0dXMgPSBNb2NrSXBtaVN1Ym1pdENv bW1hbmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJlc3VsdHMzLCBWQUxJRF9HRVRfQ09VTlRfUkVT UE9OU0VfU0laRSwgRUZJX1NVQ0NFU1MpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K KyAgICByZXR1cm4gVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEOw0KKyAgfQ0KKw0KKyAgQmxv YklkID0gIi9zbWJpb3MiOw0KKw0KKyAgU3RhdHVzID0gSXBtaUJsb2JUcmFuc2Zlck9wZW4gKEJs b2JJZCwgRmxhZ3MsICZTZXNzaW9uSWQpOw0KKw0KKyAgVVRfQVNTRVJUX1NUQVRVU19FUVVBTCAo U3RhdHVzLCBFRklfU1VDQ0VTUyk7DQorICBVVF9BU1NFUlRfRVFVQUwgKFNlc3Npb25JZCwgMyk7 DQorICBGcmVlUG9vbCAoTW9ja1Jlc3BvbnNlUmVzdWx0cyk7DQorICByZXR1cm4gVU5JVF9URVNU X1BBU1NFRDsNCit9DQorDQorVUlOVDggIFZhbGlkUmVhZFJlc3BvbnNlW10gPSB7DQorICAweDAw LCAgICAgICAgICAgICAgICAgICAvLyBDb21wbGV0aW9uQ29kZQ0KKyAgMHhDRiwgMHhDMiwgMHgw MCwgICAgICAgLy8gT3BlbkJNQyBPRU4NCisgIDB4MjEsIDB4NkYsICAgICAgICAgICAgIC8vIENS Qw0KKyAgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgLy8gRGF0YSB0byByZWFkDQorfTsNCisNCisj ZGVmaW5lIFZBTElEX1JFQURfUkVTUE9OU0VfU0laRSAgMTAgKiBzaXplb2YoVUlOVDgpDQorDQor LyoqDQorICBAcGFyYW1baW5dICBDb250ZXh0ICAgIFtPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFy YW1ldGVyIHRoYXQgZW5hYmxlczoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSkgdGVzdC1j YXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kDQorICAgICAgICAgICAgICAgICAg ICAgICAgIDIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBh DQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlYm9vdC4gIFRoaXMgcGFyYW1ldGVyIGlzIGEg Vk9JRCogYW5kIGl0IGlzIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJp bGl0eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlDQorICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRlbnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRlc3QgY2Fz ZXMgdGhhdCBtYXkNCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZSBpdC4NCisgIEBy ZXR2YWwgIFVOSVRfVEVTVF9QQVNTRUQgICAgICAgICAgICAgVGhlIFVuaXQgdGVzdCBoYXMgY29t cGxldGVkIGFuZCB0aGUgdGVzdA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjYXNlIHdhcyBzdWNjZXNzZnVsLg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX0VSUk9SX1RF U1RfRkFJTEVEICBBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzIGZhaWxlZC4NCisqKi8NCitVTklU X1RFU1RfU1RBVFVTDQorRUZJQVBJDQorUmVhZFZhbGlkUmVzcG9uc2UgKA0KKyAgSU4gVU5JVF9U RVNUX0NPTlRFWFQgIENvbnRleHQNCisgICkNCit7DQorICBFRklfU1RBVFVTICBTdGF0dXM7DQor ICBVSU5UOCAgICAgICAqUmVzcG9uc2VEYXRhOw0KKyAgVUlOVDggICAgICAgRXhwZWN0ZWREYXRh UmVzcG9uc2VbNF0gPSB7IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMgfTsNCisgIFZPSUQgICAgICAg ICpNb2NrUmVzcG9uc2VSZXN1bHRzICAgID0gTlVMTDsNCisNCisgIE1vY2tSZXNwb25zZVJlc3Vs dHMgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFZBTElEX1JFQURfUkVTUE9O U0VfU0laRSkpOw0KKyAgQ29weU1lbSAoTW9ja1Jlc3BvbnNlUmVzdWx0cywgJlZhbGlkUmVhZFJl c3BvbnNlLCBWQUxJRF9SRUFEX1JFU1BPTlNFX1NJWkUpOw0KKyAgUmVzcG9uc2VEYXRhID0gQWxs b2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChWYWxpZFJlYWRSZXNwb25zZSkpOw0KKw0KKyAgU3RhdHVz ID0gTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRzLCBW QUxJRF9SRUFEX1JFU1BPTlNFX1NJWkUsIEVGSV9TVUNDRVNTKTsNCisgIGlmIChFRklfRVJST1Ig KFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRDsNCisg IH0NCisNCisgIFN0YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJSZWFkICgwLCAwLCA0LCBSZXNwb25z ZURhdGEpOw0KKw0KKyAgVVRfQVNTRVJUX1NUQVRVU19FUVVBTCAoU3RhdHVzLCBFRklfU1VDQ0VT Uyk7DQorICBVVF9BU1NFUlRfTUVNX0VRVUFMIChSZXNwb25zZURhdGEsIEV4cGVjdGVkRGF0YVJl c3BvbnNlLCA0KTsNCisgIEZyZWVQb29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTsNCisgIEZyZWVQ b29sIChSZXNwb25zZURhdGEpOw0KKyAgcmV0dXJuIFVOSVRfVEVTVF9QQVNTRUQ7DQorfQ0KKw0K Ky8qKg0KKyAgQHBhcmFtW2luXSAgQ29udGV4dCAgICBbT3B0aW9uYWxdIEFuIG9wdGlvbmFsIHBh cmFtZXRlciB0aGF0IGVuYWJsZXM6DQorICAgICAgICAgICAgICAgICAgICAgICAgIDEpIHRlc3Qt Y2FzZSByZXVzZSB3aXRoIHZhcmllZCBwYXJhbWV0ZXJzIGFuZA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAyKSB0ZXN0LWNhc2UgcmUtZW50cnkgZm9yIFRhcmdldCB0ZXN0cyB0aGF0IG5lZWQg YQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZWJvb3QuICBUaGlzIHBhcmFtZXRlciBpcyBh IFZPSUQqIGFuZCBpdCBpcyB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2li aWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0IHRoZQ0KKyAgICAgICAgICAg ICAgICAgICAgICAgICBjb250ZW50cyBhcmUgd2VsbCB1bmRlcnN0b29kIGJ5IGFsbCB0ZXN0IGNh c2VzIHRoYXQgbWF5DQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUgaXQuDQorICBA cmV0dmFsICBVTklUX1RFU1RfUEFTU0VEICAgICAgICAgICAgIFRoZSBVbml0IHRlc3QgaGFzIGNv bXBsZXRlZCBhbmQgdGhlIHRlc3QNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2FzZSB3YXMgc3VjY2Vzc2Z1bC4NCisgIEByZXR2YWwgIFVOSVRfVEVTVF9FUlJPUl9U RVNUX0ZBSUxFRCAgQSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcyBmYWlsZWQuDQorKiovDQorVU5J VF9URVNUX1NUQVRVUw0KK0VGSUFQSQ0KK1JlYWRJbnZhbGlkQnVmZmVyICgNCisgIElOIFVOSVRf VEVTVF9DT05URVhUICBDb250ZXh0DQorICApDQorew0KKyAgVUlOVDggICAgICAgKlJlc3BvbnNl RGF0YTsNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisgIFZPSUQgICAgICAgICpNb2NrUmVzcG9u c2VSZXN1bHRzID0gTlVMTDsNCisNCisgIE1vY2tSZXNwb25zZVJlc3VsdHMgPSAoVUlOVDggKilB bGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFZBTElEX1JFQURfUkVTUE9OU0VfU0laRSkpOw0KKyAg Q29weU1lbSAoTW9ja1Jlc3BvbnNlUmVzdWx0cywgJlZhbGlkUmVhZFJlc3BvbnNlLCBWQUxJRF9S RUFEX1JFU1BPTlNFX1NJWkUpOw0KKyAgUmVzcG9uc2VEYXRhID0gTlVMTDsNCisNCisgIFN0YXR1 cyA9IE1vY2tJcG1pU3VibWl0Q29tbWFuZCAoKFVJTlQ4ICopTW9ja1Jlc3BvbnNlUmVzdWx0cywg VkFMSURfUkVBRF9SRVNQT05TRV9TSVpFLCBFRklfU1VDQ0VTUyk7DQorICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQorICAgIHJldHVybiBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQ7DQor ICB9DQorDQorICBVVF9FWFBFQ1RfQVNTRVJUX0ZBSUxVUkUgKElwbWlCbG9iVHJhbnNmZXJSZWFk ICgwLCAwLCA0LCBSZXNwb25zZURhdGEpLCBOVUxMKTsNCisNCisgIEZyZWVQb29sIChNb2NrUmVz cG9uc2VSZXN1bHRzKTsNCisgIHJldHVybiBVTklUX1RFU1RfUEFTU0VEOw0KK30NCisNCisvKioN CisgIEBwYXJhbVtpbl0gIENvbnRleHQgICAgW09wdGlvbmFsXSBBbiBvcHRpb25hbCBwYXJhbWV0 ZXIgdGhhdCBlbmFibGVzOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAxKSB0ZXN0LWNhc2Ug cmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQNCisgICAgICAgICAgICAgICAgICAgICAg ICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVzdHMgdGhhdCBuZWVkIGENCisg ICAgICAgICAgICAgICAgICAgICAgICAgcmVib290LiAgVGhpcyBwYXJhbWV0ZXIgaXMgYSBWT0lE KiBhbmQgaXQgaXMgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5 IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0aGUNCisgICAgICAgICAgICAgICAg ICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwgdGVzdCBjYXNlcyB0 aGF0IG1heQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lIGl0Lg0KKyAgQHJldHZh bCAgVU5JVF9URVNUX1BBU1NFRCAgICAgICAgICAgICBUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0 ZWQgYW5kIHRoZSB0ZXN0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNhc2Ugd2FzIHN1Y2Nlc3NmdWwuDQorICBAcmV0dmFsICBVTklUX1RFU1RfRVJST1JfVEVTVF9G QUlMRUQgIEEgdGVzdCBjYXNlIGFzc2VydGlvbiBoYXMgZmFpbGVkLg0KKyoqLw0KK1VOSVRfVEVT VF9TVEFUVVMNCitFRklBUEkNCitXcml0ZVZhbGlkUmVzcG9uc2UgKA0KKyAgSU4gVU5JVF9URVNU X0NPTlRFWFQgIENvbnRleHQNCisgICkNCit7DQorICBFRklfU1RBVFVTICBTdGF0dXM7DQorICBV SU5UOCAgICAgICBTZW5kRGF0YVs0XSAgICAgICAgICA9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgw MyB9Ow0KKyAgVk9JRCAgICAgICAgKk1vY2tSZXNwb25zZVJlc3VsdHMgPSBOVUxMOw0KKw0KKyAg TW9ja1Jlc3BvbnNlUmVzdWx0cyA9IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAo VkFMSURfTk9EQVRBX1JFU1BPTlNFX1NJWkUpKTsNCisgIENvcHlNZW0gKE1vY2tSZXNwb25zZVJl c3VsdHMsICZWYWxpZE5vRGF0YVJlc3BvbnNlLCBWQUxJRF9OT0RBVEFfUkVTUE9OU0VfU0laRSk7 DQorDQorICBTdGF0dXMgPSBNb2NrSXBtaVN1Ym1pdENvbW1hbmQgKChVSU5UOCAqKU1vY2tSZXNw b25zZVJlc3VsdHMsIFZBTElEX05PREFUQV9SRVNQT05TRV9TSVpFLCBFRklfU1VDQ0VTUyk7DQor ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBVTklUX1RFU1RfRVJST1Jf VEVTVF9GQUlMRUQ7DQorICB9DQorDQorICBTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyV3JpdGUg KDAsIDAsIFNlbmREYXRhLCA0KTsNCisNCisgIFVUX0FTU0VSVF9TVEFUVVNfRVFVQUwgKFN0YXR1 cywgRUZJX1NVQ0NFU1MpOw0KKyAgRnJlZVBvb2wgKE1vY2tSZXNwb25zZVJlc3VsdHMpOw0KKyAg cmV0dXJuIFVOSVRfVEVTVF9QQVNTRUQ7DQorfQ0KKw0KKy8qKg0KKyAgQHBhcmFtW2luXSAgQ29u dGV4dCAgICBbT3B0aW9uYWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGVuYWJsZXM6DQor ICAgICAgICAgICAgICAgICAgICAgICAgIDEpIHRlc3QtY2FzZSByZXVzZSB3aXRoIHZhcmllZCBw YXJhbWV0ZXJzIGFuZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAyKSB0ZXN0LWNhc2UgcmUt ZW50cnkgZm9yIFRhcmdldCB0ZXN0cyB0aGF0IG5lZWQgYQ0KKyAgICAgICAgICAgICAgICAgICAg ICAgICByZWJvb3QuICBUaGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBpdCBpcyB0aGUNCisg ICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9y IHRvIGVuc3VyZSB0aGF0IHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyBh cmUgd2VsbCB1bmRlcnN0b29kIGJ5IGFsbCB0ZXN0IGNhc2VzIHRoYXQgbWF5DQorICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN1bWUgaXQuDQorICBAcmV0dmFsICBVTklUX1RFU1RfUEFTU0VE ICAgICAgICAgICAgIFRoZSBVbml0IHRlc3QgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRlc3QNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSB3YXMgc3VjY2Vzc2Z1 bC4NCisgIEByZXR2YWwgIFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRCAgQSB0ZXN0IGNhc2Ug YXNzZXJ0aW9uIGhhcyBmYWlsZWQuDQorKiovDQorVU5JVF9URVNUX1NUQVRVUw0KK0VGSUFQSQ0K K0NvbW1pdFZhbGlkUmVzcG9uc2UgKA0KKyAgSU4gVU5JVF9URVNUX0NPTlRFWFQgIENvbnRleHQN CisgICkNCit7DQorICBFRklfU1RBVFVTICBTdGF0dXM7DQorICBVSU5UOCAgICAgICBTZW5kRGF0 YVs0XSAgICAgICAgICA9IHsgMHgwMCwgMHgwMSwgMHgwMiwgMHgwMyB9Ow0KKyAgVk9JRCAgICAg ICAgKk1vY2tSZXNwb25zZVJlc3VsdHMgPSBOVUxMOw0KKw0KKyAgTW9ja1Jlc3BvbnNlUmVzdWx0 cyA9IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVkFMSURfTk9EQVRBX1JFU1BP TlNFX1NJWkUpKTsNCisgIENvcHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZWYWxpZE5vRGF0 YVJlc3BvbnNlLCBWQUxJRF9OT0RBVEFfUkVTUE9OU0VfU0laRSk7DQorDQorICBTdGF0dXMgPSBN b2NrSXBtaVN1Ym1pdENvbW1hbmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJlc3VsdHMsIFZBTElE X05PREFUQV9SRVNQT05TRV9TSVpFLCBFRklfU1VDQ0VTUyk7DQorICBpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7DQorICAgIHJldHVybiBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQ7DQorICB9 DQorDQorICBTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyQ29tbWl0ICgwLCA0LCBTZW5kRGF0YSk7 DQorDQorICBVVF9BU1NFUlRfU1RBVFVTX0VRVUFMIChTdGF0dXMsIEVGSV9TVUNDRVNTKTsNCisg IEZyZWVQb29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTsNCisgIHJldHVybiBVTklUX1RFU1RfUEFT U0VEOw0KK30NCisNCisvKioNCisgIEBwYXJhbVtpbl0gIENvbnRleHQgICAgW09wdGlvbmFsXSBB biBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQNCisgICAg ICAgICAgICAgICAgICAgICAgICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVz dHMgdGhhdCBuZWVkIGENCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVib290LiAgVGhpcyBw YXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlDQorICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0aGUN CisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBi eSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dW1lIGl0Lg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX1BBU1NFRCAgICAgICAgICAgICBUaGUgVW5p dCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0DQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhc2Ugd2FzIHN1Y2Nlc3NmdWwuDQorICBAcmV0dmFsICBVTklU X1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgIEEgdGVzdCBjYXNlIGFzc2VydGlvbiBoYXMgZmFpbGVk Lg0KKyoqLw0KK1VOSVRfVEVTVF9TVEFUVVMNCitFRklBUEkNCitDbG9zZVZhbGlkUmVzcG9uc2Ug KA0KKyAgSU4gVU5JVF9URVNUX0NPTlRFWFQgIENvbnRleHQNCisgICkNCit7DQorICBFRklfU1RB VFVTICBTdGF0dXM7DQorICBWT0lEICAgICAgICAqTW9ja1Jlc3BvbnNlUmVzdWx0cyA9IE5VTEw7 DQorDQorICBNb2NrUmVzcG9uc2VSZXN1bHRzID0gKFVJTlQ4ICopQWxsb2NhdGVaZXJvUG9vbCAo c2l6ZW9mIChWQUxJRF9OT0RBVEFfUkVTUE9OU0VfU0laRSkpOw0KKyAgQ29weU1lbSAoTW9ja1Jl c3BvbnNlUmVzdWx0cywgJlZhbGlkTm9EYXRhUmVzcG9uc2UsIFZBTElEX05PREFUQV9SRVNQT05T RV9TSVpFKTsNCisNCisgIFN0YXR1cyA9IE1vY2tJcG1pU3VibWl0Q29tbWFuZCAoKFVJTlQ4ICop TW9ja1Jlc3BvbnNlUmVzdWx0cywgVkFMSURfTk9EQVRBX1JFU1BPTlNFX1NJWkUsIEVGSV9TVUND RVNTKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFVOSVRfVEVT VF9FUlJPUl9URVNUX0ZBSUxFRDsNCisgIH0NCisNCisgIFN0YXR1cyA9IElwbWlCbG9iVHJhbnNm ZXJDbG9zZSAoMSk7DQorDQorICBVVF9BU1NFUlRfU1RBVFVTX0VRVUFMIChTdGF0dXMsIEVGSV9T VUNDRVNTKTsNCisgIEZyZWVQb29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTsNCisgIHJldHVybiBV TklUX1RFU1RfUEFTU0VEOw0KK30NCisNCisvKioNCisgIEBwYXJhbVtpbl0gIENvbnRleHQgICAg W09wdGlvbmFsXSBBbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOg0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVy cyBhbmQNCisgICAgICAgICAgICAgICAgICAgICAgICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZv ciBUYXJnZXQgdGVzdHMgdGhhdCBuZWVkIGENCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVi b290LiAgVGhpcyBwYXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlDQorICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1 cmUgdGhhdCB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwg dW5kZXJzdG9vZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heQ0KKyAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdW1lIGl0Lg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX1BBU1NFRCAgICAgICAg ICAgICBUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0DQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ugd2FzIHN1Y2Nlc3NmdWwuDQorICBA cmV0dmFsICBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgIEEgdGVzdCBjYXNlIGFzc2VydGlv biBoYXMgZmFpbGVkLg0KKyoqLw0KK1VOSVRfVEVTVF9TVEFUVVMNCitFRklBUEkNCitEZWxldGVW YWxpZFJlc3BvbnNlICgNCisgIElOIFVOSVRfVEVTVF9DT05URVhUICBDb250ZXh0DQorICApDQor ew0KKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKyAgVk9JRCAgICAgICAgKk1vY2tSZXNwb25zZVJl c3VsdHMgPSBOVUxMOw0KKw0KKyAgTW9ja1Jlc3BvbnNlUmVzdWx0cyA9IChVSU5UOCAqKUFsbG9j YXRlWmVyb1Bvb2wgKHNpemVvZiAoVkFMSURfTk9EQVRBX1JFU1BPTlNFX1NJWkUpKTsNCisgIENv cHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZWYWxpZE5vRGF0YVJlc3BvbnNlLCBWQUxJRF9O T0RBVEFfUkVTUE9OU0VfU0laRSk7DQorDQorICBTdGF0dXMgPSBNb2NrSXBtaVN1Ym1pdENvbW1h bmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJlc3VsdHMsIFZBTElEX05PREFUQV9SRVNQT05TRV9T SVpFLCBFRklfU1VDQ0VTUyk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJl dHVybiBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQ7DQorICB9DQorDQorICBTdGF0dXMgPSBJ cG1pQmxvYlRyYW5zZmVyRGVsZXRlICgiL3NtYmlvcyIpOw0KKw0KKyAgVVRfQVNTRVJUX1NUQVRV U19FUVVBTCAoU3RhdHVzLCBFRklfU1VDQ0VTUyk7DQorICBGcmVlUG9vbCAoTW9ja1Jlc3BvbnNl UmVzdWx0cyk7DQorICByZXR1cm4gVU5JVF9URVNUX1BBU1NFRDsNCit9DQorDQorVUlOVDggIFZh bGlkQmxvYlN0YXRSZXNwb25zZVtdID0gew0KKyAgMHgwMCwgICAgICAgICAgICAgICAgICAgLy8g Q29tcGxldGlvbkNvZGUNCisgIDB4Q0YsIDB4QzIsIDB4MDAsICAgICAgIC8vIE9wZW5CTUMgT0VO DQorICAweDFGLCAweDRGLCAgICAgICAgICAgICAvLyBDcmMNCisgIDB4MDEsIDB4MDAsICAgICAg ICAgICAgIC8vIEJsb2JTdGF0ZQ0KKyAgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgLy8gQmxvYlNp emUNCisgIDB4MDQsICAgICAgICAgICAgICAgICAgIC8vIE1ldGFEYXRhTGVuDQorICAweDA2LCAw eDA3LCAweDA4LCAweDA5LCAvLyBNZXRhRGF0YQ0KK307DQorDQorI2RlZmluZSBWQUxJRF9CTE9C X1NUQVRfUkVTUE9OU0VfU0laRSAgMTcgKiBzaXplb2YoVUlOVDgpDQorDQorLyoqDQorICBAcGFy YW1baW5dICBDb250ZXh0ICAgIFtPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQg ZW5hYmxlczoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSkgdGVzdC1jYXNlIHJldXNlIHdp dGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kDQorICAgICAgICAgICAgICAgICAgICAgICAgIDIpIHRl c3QtY2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhDQorICAgICAgICAg ICAgICAgICAgICAgICAgIHJlYm9vdC4gIFRoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0 IGlzIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eSBvZiB0aGUg dGVzdCBhdXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnRlbnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRlc3QgY2FzZXMgdGhhdCBtYXkN CisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZSBpdC4NCisgIEByZXR2YWwgIFVOSVRf VEVTVF9QQVNTRUQgICAgICAgICAgICAgVGhlIFVuaXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0 aGUgdGVzdA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHdh cyBzdWNjZXNzZnVsLg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICBB IHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzIGZhaWxlZC4NCisqKi8NCitVTklUX1RFU1RfU1RBVFVT DQorRUZJQVBJDQorQmxvYlN0YXRWYWxpZFJlc3BvbnNlICgNCisgIElOIFVOSVRfVEVTVF9DT05U RVhUICBDb250ZXh0DQorICApDQorew0KKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KKyAgVUlOVDE2 ICAgICAgKkJsb2JTdGF0ZTsNCisgIFVJTlQzMiAgICAgICpTaXplOw0KKyAgVUlOVDggICAgICAg Kk1ldGFkYXRhTGVuZ3RoOw0KKyAgVUlOVDggICAgICAgKk1ldGFkYXRhOw0KKyAgVUlOVDggICAg ICAgKkV4cGVjdGVkTWV0YWRhdGE7DQorICBDSEFSOCAgICAgICAqQmxvYklkOw0KKyAgVk9JRCAg ICAgICAgKk1vY2tSZXNwb25zZVJlc3VsdHMgPSBOVUxMOw0KKw0KKyAgQmxvYlN0YXRlICAgICAg ICA9IEFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVUlOVDE2KSk7DQorICBTaXplICAgICAgICAg ICAgID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChVSU5UMzIpKTsNCisgIEJsb2JJZCAgICAg ICAgICAgPSAiQmxvYklkIjsNCisgIE1ldGFkYXRhTGVuZ3RoICAgPSBBbGxvY2F0ZVplcm9Qb29s IChzaXplb2YgKFVJTlQ4KSk7DQorICBNZXRhZGF0YSAgICAgICAgID0gQWxsb2NhdGVaZXJvUG9v bCAoNCAqIHNpemVvZiAoVUlOVDgpKTsNCisgIEV4cGVjdGVkTWV0YWRhdGEgPSBBbGxvY2F0ZVpl cm9Qb29sICg0ICogc2l6ZW9mIChVSU5UOCkpOw0KKw0KKyAgTW9ja1Jlc3BvbnNlUmVzdWx0cyA9 IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVkFMSURfQkxPQl9TVEFUX1JFU1BP TlNFX1NJWkUpKTsNCisgIENvcHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZWYWxpZEJsb2JT dGF0UmVzcG9uc2UsIFZBTElEX0JMT0JfU1RBVF9SRVNQT05TRV9TSVpFKTsNCisNCisgIFN0YXR1 cyA9IE1vY2tJcG1pU3VibWl0Q29tbWFuZCAoKFVJTlQ4ICopTW9ja1Jlc3BvbnNlUmVzdWx0cywg VkFMSURfQkxPQl9TVEFUX1JFU1BPTlNFX1NJWkUsIEVGSV9TVUNDRVNTKTsNCisgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxF RDsNCisgIH0NCisNCisgIFN0YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJTdGF0IChCbG9iSWQsIEJs b2JTdGF0ZSwgU2l6ZSwgTWV0YWRhdGFMZW5ndGgsIE1ldGFkYXRhKTsNCisNCisgIFVUX0FTU0VS VF9TVEFUVVNfRVFVQUwgKFN0YXR1cywgRUZJX1NVQ0NFU1MpOw0KKyAgVVRfQVNTRVJUX0VRVUFM ICgqQmxvYlN0YXRlLCAxKTsNCisgIFVUX0FTU0VSVF9FUVVBTCAoKlNpemUsIDB4MDUwNDAzMDIp Ow0KKyAgVVRfQVNTRVJUX0VRVUFMICgqTWV0YWRhdGFMZW5ndGgsIDQpOw0KKyAgVVRfQVNTRVJU X01FTV9FUVVBTCAoTWV0YWRhdGEsIEV4cGVjdGVkTWV0YWRhdGEsIDQpOw0KKyAgRnJlZVBvb2wg KE1vY2tSZXNwb25zZVJlc3VsdHMpOw0KKyAgRnJlZVBvb2wgKEJsb2JTdGF0ZSk7DQorICBGcmVl UG9vbCAoU2l6ZSk7DQorICBGcmVlUG9vbCAoTWV0YWRhdGFMZW5ndGgpOw0KKyAgRnJlZVBvb2wg KE1ldGFkYXRhKTsNCisgIHJldHVybiBVTklUX1RFU1RfUEFTU0VEOw0KK30NCisNCisvKioNCisg IEBwYXJhbVtpbl0gIENvbnRleHQgICAgW09wdGlvbmFsXSBBbiBvcHRpb25hbCBwYXJhbWV0ZXIg dGhhdCBlbmFibGVzOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAxKSB0ZXN0LWNhc2UgcmV1 c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQNCisgICAgICAgICAgICAgICAgICAgICAgICAg MikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVzdHMgdGhhdCBuZWVkIGENCisgICAg ICAgICAgICAgICAgICAgICAgICAgcmVib290LiAgVGhpcyBwYXJhbWV0ZXIgaXMgYSBWT0lEKiBh bmQgaXQgaXMgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5IG9m IHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0aGUNCisgICAgICAgICAgICAgICAgICAg ICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0 IG1heQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lIGl0Lg0KKyAgQHJldHZhbCAg VU5JVF9URVNUX1BBU1NFRCAgICAgICAgICAgICBUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQg YW5kIHRoZSB0ZXN0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh c2Ugd2FzIHN1Y2Nlc3NmdWwuDQorICBAcmV0dmFsICBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlM RUQgIEEgdGVzdCBjYXNlIGFzc2VydGlvbiBoYXMgZmFpbGVkLg0KKyoqLw0KK1VOSVRfVEVTVF9T VEFUVVMNCitFRklBUEkNCitCbG9iU3RhdEludmFsaWRCdWZmZXIgKA0KKyAgSU4gVU5JVF9URVNU X0NPTlRFWFQgIENvbnRleHQNCisgICkNCit7DQorICBVSU5UOCAgICAgICAqTWV0YWRhdGE7DQor ICBFRklfU1RBVFVTICBTdGF0dXM7DQorICBWT0lEICAgICAgICAqTW9ja1Jlc3BvbnNlUmVzdWx0 cyA9IE5VTEw7DQorDQorICBNZXRhZGF0YSA9IE5VTEw7DQorDQorICBNb2NrUmVzcG9uc2VSZXN1 bHRzID0gKFVJTlQ4ICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChWQUxJRF9CTE9CX1NUQVRf UkVTUE9OU0VfU0laRSkpOw0KKyAgQ29weU1lbSAoTW9ja1Jlc3BvbnNlUmVzdWx0cywgJlZhbGlk QmxvYlN0YXRSZXNwb25zZSwgVkFMSURfQkxPQl9TVEFUX1JFU1BPTlNFX1NJWkUpOw0KKw0KKyAg U3RhdHVzID0gTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1 bHRzLCBWQUxJRF9CTE9CX1NUQVRfUkVTUE9OU0VfU0laRSwgRUZJX1NVQ0NFU1MpOw0KKyAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICByZXR1cm4gVU5JVF9URVNUX0VSUk9SX1RFU1Rf RkFJTEVEOw0KKyAgfQ0KKw0KKyAgVVRfRVhQRUNUX0FTU0VSVF9GQUlMVVJFIChJcG1pQmxvYlRy YW5zZmVyU3RhdCAoTlVMTCwgMCwgMCwgMCwgTWV0YWRhdGEpLCBOVUxMKTsNCisNCisgIEZyZWVQ b29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTsNCisgIHJldHVybiBVTklUX1RFU1RfUEFTU0VEOw0K K30NCisNCisvKioNCisgIEBwYXJhbVtpbl0gIENvbnRleHQgICAgW09wdGlvbmFsXSBBbiBvcHRp b25hbCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAx KSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQNCisgICAgICAgICAg ICAgICAgICAgICAgICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVzdHMgdGhh dCBuZWVkIGENCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVib290LiAgVGhpcyBwYXJhbWV0 ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgIHJl c3BvbnNpYmlsaXR5IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0aGUNCisgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwg dGVzdCBjYXNlcyB0aGF0IG1heQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lIGl0 Lg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX1BBU1NFRCAgICAgICAgICAgICBUaGUgVW5pdCB0ZXN0 IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNhc2Ugd2FzIHN1Y2Nlc3NmdWwuDQorICBAcmV0dmFsICBVTklUX1RFU1Rf RVJST1JfVEVTVF9GQUlMRUQgIEEgdGVzdCBjYXNlIGFzc2VydGlvbiBoYXMgZmFpbGVkLg0KKyoq Lw0KK1VOSVRfVEVTVF9TVEFUVVMNCitFRklBUEkNCitTZXNzaW9uU3RhdFZhbGlkUmVzcG9uc2Ug KA0KKyAgSU4gVU5JVF9URVNUX0NPTlRFWFQgIENvbnRleHQNCisgICkNCit7DQorICBFRklfU1RB VFVTICBTdGF0dXM7DQorICBVSU5UMTYgICAgICAqQmxvYlN0YXRlOw0KKyAgVUlOVDMyICAgICAg KlNpemU7DQorICBVSU5UOCAgICAgICAqTWV0YWRhdGFMZW5ndGg7DQorICBVSU5UOCAgICAgICAq TWV0YWRhdGE7DQorICBVSU5UOCAgICAgICAqRXhwZWN0ZWRNZXRhZGF0YTsNCisgIFZPSUQgICAg ICAgICpNb2NrUmVzcG9uc2VSZXN1bHRzID0gTlVMTDsNCisNCisgIEJsb2JTdGF0ZSAgICAgICAg PSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFVJTlQxNikpOw0KKyAgU2l6ZSAgICAgICAgICAg ICA9IEFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVUlOVDMyKSk7DQorICBNZXRhZGF0YUxlbmd0 aCAgID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChVSU5UOCkpOw0KKyAgTWV0YWRhdGEgICAg ICAgICA9IEFsbG9jYXRlWmVyb1Bvb2wgKDQgKiBzaXplb2YgKFVJTlQ4KSk7DQorICBFeHBlY3Rl ZE1ldGFkYXRhID0gQWxsb2NhdGVaZXJvUG9vbCAoNCAqIHNpemVvZiAoVUlOVDgpKTsNCisNCisg IE1vY2tSZXNwb25zZVJlc3VsdHMgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2Yg KFZBTElEX0JMT0JfU1RBVF9SRVNQT05TRV9TSVpFKSk7DQorICBDb3B5TWVtIChNb2NrUmVzcG9u c2VSZXN1bHRzLCAmVmFsaWRCbG9iU3RhdFJlc3BvbnNlLCBWQUxJRF9CTE9CX1NUQVRfUkVTUE9O U0VfU0laRSk7DQorDQorICBTdGF0dXMgPSBNb2NrSXBtaVN1Ym1pdENvbW1hbmQgKChVSU5UOCAq KU1vY2tSZXNwb25zZVJlc3VsdHMsIFZBTElEX0JMT0JfU1RBVF9SRVNQT05TRV9TSVpFLCBFRklf U1VDQ0VTUyk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBVTklU X1RFU1RfRVJST1JfVEVTVF9GQUlMRUQ7DQorICB9DQorDQorICBTdGF0dXMgPSBJcG1pQmxvYlRy YW5zZmVyU2Vzc2lvblN0YXQgKDAsIEJsb2JTdGF0ZSwgU2l6ZSwgTWV0YWRhdGFMZW5ndGgsIE1l dGFkYXRhKTsNCisNCisgIFVUX0FTU0VSVF9TVEFUVVNfRVFVQUwgKFN0YXR1cywgRUZJX1NVQ0NF U1MpOw0KKyAgVVRfQVNTRVJUX0VRVUFMICgqQmxvYlN0YXRlLCAxKTsNCisgIFVUX0FTU0VSVF9F UVVBTCAoKlNpemUsIDB4MDUwNDAzMDIpOw0KKyAgVVRfQVNTRVJUX0VRVUFMICgqTWV0YWRhdGFM ZW5ndGgsIDQpOw0KKyAgVVRfQVNTRVJUX01FTV9FUVVBTCAoTWV0YWRhdGEsIEV4cGVjdGVkTWV0 YWRhdGEsIDQpOw0KKyAgRnJlZVBvb2wgKE1vY2tSZXNwb25zZVJlc3VsdHMpOw0KKyAgRnJlZVBv b2wgKEJsb2JTdGF0ZSk7DQorICBGcmVlUG9vbCAoU2l6ZSk7DQorICBGcmVlUG9vbCAoTWV0YWRh dGFMZW5ndGgpOw0KKyAgRnJlZVBvb2wgKE1ldGFkYXRhKTsNCisgIHJldHVybiBVTklUX1RFU1Rf UEFTU0VEOw0KK30NCisNCisvKioNCisgIEBwYXJhbVtpbl0gIENvbnRleHQgICAgW09wdGlvbmFs XSBBbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOg0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQNCisg ICAgICAgICAgICAgICAgICAgICAgICAgMikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQg dGVzdHMgdGhhdCBuZWVkIGENCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVib290LiAgVGhp cyBwYXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlDQorICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0 aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9v ZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdW1lIGl0Lg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX1BBU1NFRCAgICAgICAgICAgICBUaGUg VW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0DQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNhc2Ugd2FzIHN1Y2Nlc3NmdWwuDQorICBAcmV0dmFsICBV TklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgIEEgdGVzdCBjYXNlIGFzc2VydGlvbiBoYXMgZmFp bGVkLg0KKyoqLw0KK1VOSVRfVEVTVF9TVEFUVVMNCitFRklBUEkNCitTZXNzaW9uU3RhdEludmFs aWRCdWZmZXIgKA0KKyAgSU4gVU5JVF9URVNUX0NPTlRFWFQgIENvbnRleHQNCisgICkNCit7DQor ICBVSU5UOCAgICAgICAqTWV0YWRhdGE7DQorICBFRklfU1RBVFVTICBTdGF0dXM7DQorICBWT0lE ICAgICAgICAqTW9ja1Jlc3BvbnNlUmVzdWx0cyA9IE5VTEw7DQorDQorICBNZXRhZGF0YSA9IE5V TEw7DQorDQorICBNb2NrUmVzcG9uc2VSZXN1bHRzID0gKFVJTlQ4ICopQWxsb2NhdGVaZXJvUG9v bCAoc2l6ZW9mIChWQUxJRF9CTE9CX1NUQVRfUkVTUE9OU0VfU0laRSkpOw0KKyAgQ29weU1lbSAo TW9ja1Jlc3BvbnNlUmVzdWx0cywgJlZhbGlkQmxvYlN0YXRSZXNwb25zZSwgVkFMSURfQkxPQl9T VEFUX1JFU1BPTlNFX1NJWkUpOw0KKw0KKyAgU3RhdHVzID0gTW9ja0lwbWlTdWJtaXRDb21tYW5k ICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRzLCBWQUxJRF9CTE9CX1NUQVRfUkVTUE9OU0Vf U0laRSwgRUZJX1NVQ0NFU1MpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBy ZXR1cm4gVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEOw0KKyAgfQ0KKw0KKyAgVVRfRVhQRUNU X0FTU0VSVF9GQUlMVVJFIChJcG1pQmxvYlRyYW5zZmVyU2Vzc2lvblN0YXQgKDAsIDAsIDAsIDAs IE1ldGFkYXRhKSwgTlVMTCk7DQorDQorICBGcmVlUG9vbCAoTW9ja1Jlc3BvbnNlUmVzdWx0cyk7 DQorICByZXR1cm4gVU5JVF9URVNUX1BBU1NFRDsNCit9DQorDQorLyoqDQorICBAcGFyYW1baW5d ICBDb250ZXh0ICAgIFtPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgZW5hYmxl czoNCisgICAgICAgICAgICAgICAgICAgICAgICAgMSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFy aWVkIHBhcmFtZXRlcnMgYW5kDQorICAgICAgICAgICAgICAgICAgICAgICAgIDIpIHRlc3QtY2Fz ZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhDQorICAgICAgICAgICAgICAg ICAgICAgICAgIHJlYm9vdC4gIFRoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRo ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVzdCBh dXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl bnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRlc3QgY2FzZXMgdGhhdCBtYXkNCisgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3VtZSBpdC4NCisgIEByZXR2YWwgIFVOSVRfVEVTVF9Q QVNTRUQgICAgICAgICAgICAgVGhlIFVuaXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGVz dA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHdhcyBzdWNj ZXNzZnVsLg0KKyAgQHJldHZhbCAgVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICBBIHRlc3Qg Y2FzZSBhc3NlcnRpb24gaGFzIGZhaWxlZC4NCisqKi8NCitVTklUX1RFU1RfU1RBVFVTDQorRUZJ QVBJDQorV3JpdGVNZXRhVmFsaWRSZXNwb25zZSAoDQorICBJTiBVTklUX1RFU1RfQ09OVEVYVCAg Q29udGV4dA0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgIFN0YXR1czsNCisgIFZPSUQgICAgICAg ICpNb2NrUmVzcG9uc2VSZXN1bHRzID0gTlVMTDsNCisNCisgIE1vY2tSZXNwb25zZVJlc3VsdHMg PSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFZBTElEX05PREFUQV9SRVNQT05T RV9TSVpFKSk7DQorICBDb3B5TWVtIChNb2NrUmVzcG9uc2VSZXN1bHRzLCAmVmFsaWROb0RhdGFS ZXNwb25zZSwgVkFMSURfTk9EQVRBX1JFU1BPTlNFX1NJWkUpOw0KKw0KKyAgU3RhdHVzID0gTW9j a0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRzLCBWQUxJRF9O T0RBVEFfUkVTUE9OU0VfU0laRSwgRUZJX1NVQ0NFU1MpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3Rh dHVzKSkgew0KKyAgICByZXR1cm4gVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEOw0KKyAgfQ0K Kw0KKyAgU3RhdHVzID0gSXBtaUJsb2JUcmFuc2ZlcldyaXRlTWV0YSAoMCwgMCwgTlVMTCwgMCk7 DQorDQorICBVVF9BU1NFUlRfU1RBVFVTX0VRVUFMIChTdGF0dXMsIEVGSV9TVUNDRVNTKTsNCisg IEZyZWVQb29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTsNCisgIHJldHVybiBVTklUX1RFU1RfUEFT U0VEOw0KK30NCisNCisvKioNCisgIEluaXRpYWxpemUgdGhlIHVuaXQgdGVzdCBmcmFtZXdvcmss IHN1aXRlLCBhbmQgdW5pdCB0ZXN0cyBmb3IgdGhlDQorICBzYW1wbGUgdW5pdCB0ZXN0cyBhbmQg cnVuIHRoZSB1bml0IHRlc3RzLg0KKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgICAgICAgICAgIEFs bCB0ZXN0IGNhc2VzIHdlcmUgZGlzcGF0Y2hlZC4NCisgIEByZXR2YWwgIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICBUaGVyZSBhcmUgbm90IGVub3VnaCByZXNvdXJjZXMgYXZhaWxhYmxlIHRvDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZSB0aGUgdW5pdCB0ZXN0cy4N CisqKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorU2V0dXBBbmRSdW5Vbml0VGVzdHMgKA0KKyAg Vk9JRA0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICBTdGF0dXM7DQor ICBVTklUX1RFU1RfRlJBTUVXT1JLX0hBTkRMRSAgRnJhbWV3b3JrOw0KKyAgVU5JVF9URVNUX1NV SVRFX0hBTkRMRSAgICAgIElwbWlCbG9iVHJhbnNmZXI7DQorDQorICBGcmFtZXdvcmsgPSBOVUxM Ow0KKyAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IHYlYVxuIiwgVU5JVF9URVNUX05BTUUsIFVO SVRfVEVTVF9WRVJTSU9OKSk7DQorDQorICBTdGF0dXMgPSBJbml0VW5pdFRlc3RGcmFtZXdvcmsg KCZGcmFtZXdvcmssIFVOSVRfVEVTVF9OQU1FLCBnRWZpQ2FsbGVyQmFzZU5hbWUsIFVOSVRfVEVT VF9WRVJTSU9OKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIkZhaWxlZCB0byBzZXR1cCBUZXN0IEZyYW1ld29yay4gRXhpdGluZyB3aXRo IHN0YXR1cyA9ICVyXG4iLCBTdGF0dXMpKTsNCisgICAgQVNTRVJUIChGQUxTRSk7DQorICAgIHJl dHVybiBTdGF0dXM7DQorICB9DQorDQorICAvLw0KKyAgLy8gUG9wdWxhdGUgdGhlIFVuaXQgVGVz dCBTdWl0ZS4NCisgIC8vDQorICBTdGF0dXMgPSBDcmVhdGVVbml0VGVzdFN1aXRlICgmSXBtaUJs b2JUcmFuc2ZlciwgRnJhbWV3b3JrLCAiSVBNSSBCbG9iIFRyYW5zZmVyIFRlc3RzIiwgIlVuaXRU ZXN0LklwbWlCbG9iVHJhbnNmZXJDQiIsIE5VTEwsIE5VTEwpOw0KKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRmFpbGVkIGluIENyZWF0ZVVu aXRUZXN0U3VpdGUgZm9yIElQTUkgQmxvYiBUcmFuc2ZlciBUZXN0c1xuIikpOw0KKyAgICBTdGF0 dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisN CisgIC8vIENhbGN1bGF0ZUNyYzE2DQorICBTdGF0dXMgPSBBZGRUZXN0Q2FzZSAoSXBtaUJsb2JU cmFuc2ZlciwgIlRlc3QgQ1JDIENhbGN1bGF0aW9uIiwgIkdvb2RDcmMiLCBHb29kQ3JjLCBOVUxM LCBOVUxMLCBOVUxMKTsNCisgIFN0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVy LCAiVGVzdCBCYWQgQ1JDIENhbGN1bGF0aW9uIiwgIkJhZENyYyIsIEJhZENyYywgTlVMTCwgTlVM TCwgTlVMTCk7DQorICAvLyBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkNCisgIFN0YXR1cyA9IEFk ZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAiU2VuZCBJUE1JIHJldHVybnMgYmFkIGNvbXBs ZXRpb24iLCAiU2VuZElwbWlCYWRDb21wbGV0aW9uIiwgU2VuZElwbWlCYWRDb21wbGV0aW9uLCBO VUxMLCBOVUxMLCBOVUxMKTsNCisgIFN0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5z ZmVyLCAiU2VuZCBJUE1JIHJldHVybnMgc3VjY2Vzc2Z1bGx5IHdpdGggbm8gZGF0YSIsICJTZW5k SXBtaU5vRGF0YVJlc3BvbnNlIiwgU2VuZElwbWlOb0RhdGFSZXNwb25zZSwgTlVMTCwgTlVMTCwg TlVMTCk7DQorICBTdGF0dXMgPSBBZGRUZXN0Q2FzZSAoSXBtaUJsb2JUcmFuc2ZlciwgIlNlbmQg SVBNSSByZXR1cm5zIHN1Y2Nlc3NmdWxseSB3aXRoIGJhZCBPRU4iLCAiU2VuZElwbWlCYWRPZW5S ZXNwb25zZSIsIFNlbmRJcG1pQmFkT2VuUmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOw0KKyAg U3RhdHVzID0gQWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICJTZW5kIElQTUkgcmV0dXJu cyBzdWNjZXNzZnVsbHkgd2l0aCBiYWQgQ1JDIiwgIlNlbmRJcG1pQmFkQ3JjUmVzcG9uc2UiLCBT ZW5kSXBtaUJhZENyY1Jlc3BvbnNlLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgIFN0YXR1cyA9IEFk ZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAiU2VuZCBJUE1JIHJldHVybnMgd2l0aCB2YWxp ZCBHZXRDb3VudCBkYXRhIiwgIlNlbmRJcG1pVmFsaWRDb3VudFJlc3BvbnNlIiwgU2VuZElwbWlW YWxpZENvdW50UmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOw0KKyAgLy8gSXBtaUJsb2JUcmFu c2ZlckdldENvdW50DQorICBTdGF0dXMgPSBBZGRUZXN0Q2FzZSAoSXBtaUJsb2JUcmFuc2Zlciwg IkdldENvdW50IGNhbGwgd2l0aCB2YWxpZCBkYXRhIiwgIkdldENvdW50VmFsaWRDb3VudFJlc3Bv bnNlIiwgR2V0Q291bnRWYWxpZENvdW50UmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOw0KKyAg Ly8gSXBtaUJsb2JUcmFuc2ZlckVudW1lcmF0ZQ0KKyAgU3RhdHVzID0gQWRkVGVzdENhc2UgKElw bWlCbG9iVHJhbnNmZXIsICJFbnVtZXJhdGUgY2FsbCB3aXRoIHZhbGlkIGRhdGEiLCAiRW51bWVy YXRlVmFsaWRSZXNwb25zZSIsIEVudW1lcmF0ZVZhbGlkUmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5V TEwpOw0KKyAgU3RhdHVzID0gQWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICJFbnVtZXJh dGUgY2FsbCB3aXRoIGludmFsaWQgb3V0cHV0IGJ1ZmZlciIsICJFbnVtZXJhdGVJbnZhbGlkQnVm ZmVyIiwgRW51bWVyYXRlSW52YWxpZEJ1ZmZlciwgTlVMTCwgTlVMTCwgTlVMTCk7DQorICAvLyBJ cG1pQmxvYlRyYW5zZmVyT3Blbg0KKyAgU3RhdHVzID0gQWRkVGVzdENhc2UgKElwbWlCbG9iVHJh bnNmZXIsICJPcGVuIGNhbGwgd2l0aCB2YWxpZCBkYXRhIiwgIk9wZW5WYWxpZFJlc3BvbnNlIiwg T3BlblZhbGlkUmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOw0KKyAgLy8gSXBtaUJsb2JUcmFu c2ZlclJlYWQNCisgIFN0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAiUmVh ZCBjYWxsIHdpdGggdmFsaWQgZGF0YSIsICJSZWFkVmFsaWRSZXNwb25zZSIsIFJlYWRWYWxpZFJl c3BvbnNlLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgIFN0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1p QmxvYlRyYW5zZmVyLCAiUmVhZCBjYWxsIHdpdGggaW52YWxpZCBidWZmZXIiLCAiUmVhZEludmFs aWRCdWZmZXIiLCBSZWFkSW52YWxpZEJ1ZmZlciwgTlVMTCwgTlVMTCwgTlVMTCk7DQorICAvLyBJ cG1pQmxvYlRyYW5zZmVyV3JpdGUNCisgIFN0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRy YW5zZmVyLCAiV3JpdGUgY2FsbCB3aXRoIHZhbGlkIGRhdGEiLCAiV3JpdGVWYWxpZFJlc3BvbnNl IiwgV3JpdGVWYWxpZFJlc3BvbnNlLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgIC8vIElwbWlCbG9i VHJhbnNmZXJDb21taXQNCisgIFN0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVy LCAiQ29tbWl0IGNhbGwgd2l0aCB2YWxpZCBkYXRhIiwgIkNvbW1pdFZhbGlkUmVzcG9uc2UiLCBD b21taXRWYWxpZFJlc3BvbnNlLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgIC8vIElwbWlCbG9iVHJh bnNmZXJDbG9zZQ0KKyAgU3RhdHVzID0gQWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICJD bG9zZSBjYWxsIHdpdGggdmFsaWQgZGF0YSIsICJDbG9zZVZhbGlkUmVzcG9uc2UiLCBDbG9zZVZh bGlkUmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOw0KKyAgLy8gSXBtaUJsb2JUcmFuc2ZlckRl bGV0ZQ0KKyAgU3RhdHVzID0gQWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICJEZWxldGUg Y2FsbCB3aXRoIHZhbGlkIGRhdGEiLCAiRGVsZXRlVmFsaWRSZXNwb25zZSIsIERlbGV0ZVZhbGlk UmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOw0KKyAgLy8gSXBtaUJsb2JUcmFuc2ZlclN0YXQN CisgIFN0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAiQmxvYiBTdGF0IGNh bGwgd2l0aCB2YWxpZCBkYXRhIiwgIkJsb2JTdGF0VmFsaWRSZXNwb25zZSIsIEJsb2JTdGF0VmFs aWRSZXNwb25zZSwgTlVMTCwgTlVMTCwgTlVMTCk7DQorICBTdGF0dXMgPSBBZGRUZXN0Q2FzZSAo SXBtaUJsb2JUcmFuc2ZlciwgIkJsb2IgU3RhdCBjYWxsIHdpdGggaW52YWxpZCBidWZmZXIiLCAi QmxvYlN0YXRJbnZhbGlkQnVmZmVyIiwgQmxvYlN0YXRJbnZhbGlkQnVmZmVyLCBOVUxMLCBOVUxM LCBOVUxMKTsNCisgIC8vIElwbWlCbG9iVHJhbnNmZXJTZXNzaW9uU3RhdA0KKyAgU3RhdHVzID0g QWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICJTZXNzaW9uIFN0YXQgY2FsbCB3aXRoIHZh bGlkIGRhdGEiLCAiU2Vzc2lvblN0YXRWYWxpZFJlc3BvbnNlIiwgU2Vzc2lvblN0YXRWYWxpZFJl c3BvbnNlLCBOVUxMLCBOVUxMLCBOVUxMKTsNCisgIFN0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1p QmxvYlRyYW5zZmVyLCAiU2Vzc2lvbiBTdGF0IGNhbGwgd2l0aCBpbnZhbGlkIGJ1ZmZlciIsICJT ZXNzaW9uU3RhdEludmFsaWRCdWZmZXIiLCBTZXNzaW9uU3RhdEludmFsaWRCdWZmZXIsIE5VTEws IE5VTEwsIE5VTEwpOw0KKyAgLy8gSXBtaUJsb2JUcmFuc2ZlcldyaXRlTWV0YQ0KKyAgU3RhdHVz ID0gQWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICJXcml0ZU1ldGEgY2FsbCB3aXRoIHZh bGlkIGRhdGEiLCAiV3JpdGVNZXRhVmFsaWRSZXNwb25zZSIsIFdyaXRlTWV0YVZhbGlkUmVzcG9u c2UsIE5VTEwsIE5VTEwsIE5VTEwpOw0KKw0KKyAgLy8gRXhlY3V0ZSB0aGUgdGVzdHMuDQorICBT dGF0dXMgPSBSdW5BbGxUZXN0U3VpdGVzIChGcmFtZXdvcmspOw0KKyAgcmV0dXJuIFN0YXR1czsN Cit9DQorDQorLyoqDQorICBTdGFuZGFyZCBVRUZJIGVudHJ5IHBvaW50IGZvciB0YXJnZXQgYmFz ZWQNCisgIHVuaXQgdGVzdCBleGVjdXRpb24gZnJvbSBVRUZJIFNoZWxsLg0KKyoqLw0KK0VGSV9T VEFUVVMNCitFRklBUEkNCitCYXNlTGliVW5pdFRlc3RBcHBFbnRyeSAoDQorICBJTiBFRklfSEFO RExFICAgICAgICBJbWFnZUhhbmRsZSwNCisgIElOIEVGSV9TWVNURU1fVEFCTEUgICpTeXN0ZW1U YWJsZQ0KKyAgKQ0KK3sNCisgIHJldHVybiBTZXR1cEFuZFJ1blVuaXRUZXN0cyAoKTsNCit9DQor DQorLyoqDQorICBTdGFuZGFyZCBQT1NJWCBDIGVudHJ5IHBvaW50IGZvciBob3N0IGJhc2VkIHVu aXQgdGVzdCBleGVjdXRpb24uDQorKiovDQoraW50DQorbWFpbiAoDQorICBpbnQgICBhcmdjLA0K KyAgY2hhciAgKmFyZ3ZbXQ0KKyAgKQ0KK3sNCisgIHJldHVybiBTZXR1cEFuZFJ1blVuaXRUZXN0 cyAoKTsNCit9DQpkaWZmIC0tZ2l0IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJz YWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9SZWFkbWUubWQgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5 UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVyRHhlL1JlYWRtZS5tZA0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAuLjQ3ODAwZjU4MDENCi0tLSAvZGV2L251bGwNCisr KyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJE eGUvUmVhZG1lLm1kDQpAQCAtMCwwICsxLDI0IEBADQorIyBJUE1JIEJsb2IgVHJhbnNmZXIgSW50 ZXJmYWNlIERyaXZlcg0KKw0KK1RoaXMgRFhFIG1vZHVsZSBpcyBhIFVFRkkgaW1wbGVtZW50YXRp b24gb2YgdGhlIFBob3JwaG9yIEJsb2IgVHJhbnNmZXIgSW50ZXJmYWNlIGRlZmluZWQgaW4gT3Bl bkJNQw0KK2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYm1jL3Bob3NwaG9yLWlwbWktYmxvYnMNCisN CisjIyBOVklESUEncyBPcGVuQk1DIGltcGxlbWVudHMgdGhpcyBpbnRlcmZhY2UgYXMgYSBwcm90 b2NvbCwgYWxsb3dpbmcgVUVGSSBhbmQgQk1DIHRvIHRyYW5zZmVyIGJsb2JzIG92ZXIgSVBNSS4N CisNCisjIyMgVXNhZ2U6DQorQW55IERYRSBtb2R1bGUgdGhhdCB3aXNoZXMgdG8gdXNlIHRoaXMg cHJvdG9jb2wgc2hvdWxkIGRvIHRoZSBmb2xsb3dpbmc6DQorMSkgVGhlIG1vZHVsZSBzaG91bGQg aGF2ZSBhIGRlcGVuZGVuY3kgb24gZ0Vka2lpSXBtaUJsb2JUcmFuc2ZlclByb3RvY29sR3VpZCBp biBpdHMgaW5mICJEZXBleCIgc2VjdGlvbg0KKzIpIFRoZSBtb2R1bGUgc2hvdWxkIGxpc3QgZ0Vk a2lpSXBtaUJsb2JUcmFuc2ZlclByb3RvY29sR3VpZCBpbiBpdHMgaW5mICJQcm90b2NvbCIgc2Vj dGlvbg0KKzMpIFRoZSBtb2R1bGUncyBlbnRyeSBwb2ludCBzaG91bGQgZG8gYSBMb2NhdGVQcm90 b2NvbCBvbiBnRWRraWlJcG1pQmxvYlRyYW5zZmVyUHJvdG9jb2xHdWlkDQorDQorIyMjIEEgc2Ft cGxlIGZsb3cgb2YgcHJvdG9jb2wgdXNhZ2UgaXMgYXMgZm9sbG93czoNCisxKSBBIGNhbGwgdG8g SXBtaUJsb2JUcmFuc2Zlck9wZW4gKCkNCisyKSBJdGVyYXRpdmUgY2FsbHMgdG8gSXBtaUJsb2JU cmFuc2ZlcldyaXRlDQorMykgQSBjYWxsIHRvIElwbWlCbG9iVHJhbnNmZXJDbG9zZSAoKQ0KKw0K KyMjIyBVbml0IFRlc3RzOg0KK0lwbWlCbG9iVHJhbnNmZXJEeGUvVW5pdFRlc3QvIGNvbnRhaW5z IGhvc3QgYmFzZWQgdW5pdCB0ZXN0cyBvZiB0aGlzIGltcGxlbWVudGF0aW9uLg0KK0FueSBjaGFu Z2VzIHRvIElwbWlCbG9iVHJhbnNmZXJEeGUgc2hvdWxkIGluY2x1ZGUgcHJvb2Ygb2Ygc3VjY2Vz c2Z1bCB1bml0IHRlc3RzLg0KKw0KKyMjIyBEZWJ1Z2dpbmcNCitUbyBhc3Npc3QgaW4gZGVidWdn aW5nIGFueSBpc3N1ZXMsIGNoYW5nZSBCTE9CX1RSQU5TRkVSX0RFQlVHIHRvIDENCi0tDQoyLjE3 LjENCg0KDQoNCg0KDQo= --_000_1EAC4DCEEC614E99B82AE11890D18BD7amperemailonmicrosoftco_ Content-Type: text/html; charset="utf-8" Content-ID: <079B00F85C4E154DAC94FB03BB6FFEE3@prod.exchangelabs.com> Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjwvaGVhZD4NCjxib2R5IHN0eWxlPSJvdmVyZmxv dy13cmFwOiBicmVhay13b3JkOyAtd2Via2l0LW5ic3AtbW9kZTogc3BhY2U7IGxpbmUtYnJlYWs6 IGFmdGVyLXdoaXRlLXNwYWNlOyI+DQo8YnI+DQo8ZGl2Pjxicj4NCjxibG9ja3F1b3RlIHR5cGU9 ImNpdGUiPg0KPGRpdj5PbiAxNiBBcHIgMjAyMywgYXQgMTc6MjgsIFRpbmggTmd1eWVuIHZpYSBn cm91cHMuaW8gJmx0O3RpbmhuZ3V5ZW49b3MuYW1wZXJlY29tcHV0aW5nLmNvbUBncm91cHMuaW8m Z3Q7IHdyb3RlOjwvZGl2Pg0KPGJyIGNsYXNzPSJBcHBsZS1pbnRlcmNoYW5nZS1uZXdsaW5lIj4N CjxkaXY+PHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5 OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZh cmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9y bWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRl eHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZmxvYXQ6IG5vbmU7 IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+SGkNCiBOaWNrbGUsPC9zcGFuPjxiciBzdHls ZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9u dC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246 IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3Bh Y2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6 IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQo8YnIgc3R5bGU9ImNhcmV0LWNvbG9yOiBy Z2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9u dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDog NDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRl bnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQt c3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3Jh dGlvbjogbm9uZTsiPg0KPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZv bnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFs OyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3Bh Y2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10 cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAt d2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZmxv YXQ6IG5vbmU7IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+UGxlYXNlDQogZmluZCBteSBp bmxpbmUgY29tbWVudHMgYmVsb3c8L3NwYW4+PGJyIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAs IDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5 bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsg bGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAw cHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNp bmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRpb246 IG5vbmU7Ij4NCjxiciBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1p bHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQt dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu b3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9y bTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQt dGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQo8c3BhbiBz dHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsg Zm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBu b3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxp Z246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUt c3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lk dGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmbG9hdDogbm9uZTsgZGlzcGxheTogaW5s aW5lICFpbXBvcnRhbnQ7Ij5Pbg0KIDQvMTIvMjAyMyAxMDoxNyBBTSwgTmlja2xlIFdhbmcgd3Jv dGU6PC9zcGFuPjxiciBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1p bHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQt dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu b3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9y bTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQt dGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQo8YmxvY2tx dW90ZSB0eXBlPSJjaXRlIiBzdHlsZT0iZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXpl OiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv bnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IGF1dG87IHRl eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg d2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiBhdXRvOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdl YmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij4NCltF WFRFUk5BTCBFTUFJTCBOT1RJQ0U6IFRoaXMgZW1haWwgb3JpZ2luYXRlZCBmcm9tIGFuIGV4dGVy bmFsIHNlbmRlci4gUGxlYXNlIGJlIG1pbmRmdWwgb2Ygc2FmZSBlbWFpbCBoYW5kbGluZyBhbmQg cHJvcHJpZXRhcnkgaW5mb3JtYXRpb24gcHJvdGVjdGlvbiBwcmFjdGljZXMuXTxicj4NCjxicj4N Cjxicj4NClRoaXMgY2hhbmdlIGltcGxlbWVudHMgdGhlIGJsb2IgdHJhbnNmZXIgcHJvdG9jb2wg dXNlZCBpbiBPcGVuQm1jPGJyPg0KZG9jdW1lbnRlZCBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20v b3BlbmJtYy9waG9zcGhvci1pcG1pLWJsb2JzPGJyPg0KPGJyPg0KU2lnbmVkLW9mZi1ieTogTmlj ayBSYW1pcmV6ICZsdDtucmFtaXJlekBudmlkaWEuY29tJmd0Ozxicj4NCkNjOiBBYm5lciBDaGFu ZyAmbHQ7YWJuZXIuY2hhbmdAYW1kLmNvbSZndDs8YnI+DQpDYzogSXNhYWMgT3JhbSAmbHQ7aXNh YWMudy5vcmFtQGludGVsLmNvbSZndDs8YnI+DQpDYzogQWJkdWwgTGF0ZWVmIEF0dGFyICZsdDtB YmR1bExhdGVlZi5BdHRhckBhbWQuY29tJmd0Ozxicj4NCkNjOiBOaWNrbGUgV2FuZyAmbHQ7bmlj a2xld0BudmlkaWEuY29tJmd0Ozxicj4NCkNjOiBUaW5oIE5ndXllbiAmbHQ7dGluaG5ndXllbkBh bXBlcmVtYWlsLm9ubWljcm9zb2Z0LmNvbSZndDs8YnI+DQotLS08YnI+DQombmJzcDsuLi4vTWFu YWdlYWJpbGl0eVBrZy9NYW5hZ2VhYmlsaXR5UGtnLmRlYyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDt8ICZuYnNwOyZuYnNwOyZuYnNwOzYgKzxicj4NCiZuYnNwOy4uLi9JbmNsdWRlL0RzYy9NYW5h Z2VhYmlsaXR5LmRzYyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDt8ICZuYnNwOyZuYnNwOyZuYnNwOzQgKy08YnI+ DQombmJzcDsuLi4vSXBtaUJsb2JUcmFuc2ZlckR4ZS5pbmYgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7fCAmbmJzcDsmbmJzcDszOSArPGJyPg0KJm5i c3A7Li4uL0lwbWlCbG9iVHJhbnNmZXJUZXN0VW5pdFRlc3RzSG9zdC5pbmYgJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7fCAmbmJzcDsmbmJzcDs0MCArPGJyPg0KJm5ic3A7Li4uL0luY2x1ZGUvUHJv dG9jb2wvSXBtaUJsb2JUcmFuc2Zlci5oICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwO3wgJm5ic3A7MTM2ICsrPGJyPg0KJm5ic3A7Li4uL0ludGVybmFsSXBtaUJsb2JUcmFuc2Zl ci5oICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3wgJm5ic3A7MzYzICsrKysrKzxi cj4NCiZuYnNwOy4uLi9JcG1pQmxvYlRyYW5zZmVyRHhlL0lwbWlCbG9iVHJhbnNmZXJEeGUuYyB8 ICZuYnNwOzc5OSArKysrKysrKysrKys8YnI+DQombmJzcDsuLi4vVW5pdFRlc3QvSXBtaUJsb2JU cmFuc2ZlclRlc3RVbml0VGVzdHMuYyAmbmJzcDt8IDExMTMgKysrKysrKysrKysrKysrKys8YnI+ DQombmJzcDsuLi4vVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJEeGUvUmVhZG1lLm1kICZuYnNw OyZuYnNwO3wgJm5ic3A7Jm5ic3A7MjQgKzxicj4NCiZuYnNwOzkgZmlsZXMgY2hhbmdlZCwgMjUy MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pPGJyPg0KJm5ic3A7Y3JlYXRlIG1vZGUgMTAw NjQ0IEZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJE eGUvSXBtaUJsb2JUcmFuc2ZlckR4ZS5pbmY8YnI+DQombmJzcDtjcmVhdGUgbW9kZSAxMDA2NDQg RmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9V bml0VGVzdC9JcG1pQmxvYlRyYW5zZmVyVGVzdFVuaXRUZXN0c0hvc3QuaW5mPGJyPg0KJm5ic3A7 Y3JlYXRlIG1vZGUgMTAwNjQ0IEZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvSW5jbHVkZS9Qcm90 b2NvbC9JcG1pQmxvYlRyYW5zZmVyLmg8YnI+DQombmJzcDtjcmVhdGUgbW9kZSAxMDA2NDQgRmVh dHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9JbnRl cm5hbElwbWlCbG9iVHJhbnNmZXIuaDxicj4NCiZuYnNwO2NyZWF0ZSBtb2RlIDEwMDY0NCBGZWF0 dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVyRHhlL0lwbWlC bG9iVHJhbnNmZXJEeGUuYzxicj4NCiZuYnNwO2NyZWF0ZSBtb2RlIDEwMDY0NCBGZWF0dXJlcy9N YW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVyRHhlL1VuaXRUZXN0L0lw bWlCbG9iVHJhbnNmZXJUZXN0VW5pdFRlc3RzLmM8YnI+DQombmJzcDtjcmVhdGUgbW9kZSAxMDA2 NDQgRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4 ZS9SZWFkbWUubWQ8YnI+DQo8YnI+DQpkaWZmIC0tZ2l0IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0 eVBrZy9NYW5hZ2VhYmlsaXR5UGtnLmRlYyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTWFu YWdlYWJpbGl0eVBrZy5kZWM8YnI+DQppbmRleCA5YTkzMGQzZTRiLi5lMmQ2Y2NjYzUwIDEwMDY0 NDxicj4NCi0tLSBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvTWFuYWdlYWJpbGl0eVBrZy5k ZWM8YnI+DQorKysgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL01hbmFnZWFiaWxpdHlQa2cu ZGVjPGJyPg0KQEAgLTQsNiArNCw3IEBAPGJyPg0KJm5ic3A7IyB0aG9zZSBhcmUgcmVsYXRlZCB0 byB0aGUgcGxhdGZvcm0gbWFuYWdlbWVudC48YnI+DQombmJzcDsjPGJyPg0KJm5ic3A7IyBDb3B5 cmlnaHQgKEMpIDIwMjMgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLiBBbGwgcmlnaHRzIHJl c2VydmVkLiZsdDtCUiZndDs8YnI+DQorIyBDb3B5cmlnaHQgKGMpIDIwMjMsIE5WSURJQSBDT1JQ T1JBVElPTiAmYW1wOyBBRkZJTElBVEVTLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxicj4NCiZuYnNw OyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQ8YnI+DQombmJz cDsjPGJyPg0KJm5ic3A7IyM8YnI+DQpAQCAtNDgsMyArNDksOCBAQDxicj4NCiZuYnNwOyZuYnNw OyZuYnNwO2dNYW5hZ2VhYmlsaXR5UHJvdG9jb2xNY3RwR3VpZCAmbmJzcDsmbmJzcDsmbmJzcDs9 IHsgMHg3NkZFRDhGMSwgMHgwQkU1LCAweDQyNjksIHsgMHhBMywgMHgxQSwgMHgzOCwgMHgwRiwg MHg1NCwgMHhGMSwgMHhBMSwgMHg4QSB9IH08YnI+DQombmJzcDsmbmJzcDsmbmJzcDsjIE1hbmFn ZWFiaWxpdHkgUHJvdG9jb2wgUExETTxicj4NCiZuYnNwOyZuYnNwOyZuYnNwO2dNYW5hZ2VhYmls aXR5UHJvdG9jb2xQbGRtR3VpZCAmbmJzcDsmbmJzcDsmbmJzcDs9IHsgMHgzOTU4MDkwRCwgMHg2 OURELCAweDQ4NjgsIHsgMHg5QywgMHg0MSwgMHhDOSwgMHhBQywgMHgzMSwgMHhCNSwgMHgyNSwg MHhDNSB9IH08YnI+DQorPGJyPg0KK1tQcm90b2NvbHNdPGJyPg0KKzxicj4NCisgJm5ic3A7IyMg SW5jbHVkZS9Qcm90b2NvbC9JcG1pQmxvYlRyYW5zZmVyLmg8YnI+DQorICZuYnNwO2dFZGtpaUlw bWlCbG9iVHJhbnNmZXJQcm90b2NvbEd1aWQgPSB7IDB4MDU4MzdjNzUsIDB4MWQ2NSwgMHg0Njhi LCB7IDB4YjEsIDB4YzIsIDB4ODEsIDB4YWYsIDB4OWEsIDB4MzEsIDB4NWIsIDB4MmMgfSB9PGJy Pg0KZGlmZiAtLWdpdCBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvSW5jbHVkZS9Ec2MvTWFu YWdlYWJpbGl0eS5kc2MgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvRHNjL01h bmFnZWFiaWxpdHkuZHNjPGJyPg0KaW5kZXggMGQ4NjhmZGY0YS4uMTExZDZiOTFkYyAxMDA2NDQ8 YnI+DQotLS0gYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvRHNjL01hbmFnZWFi aWxpdHkuZHNjPGJyPg0KKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL0Rz Yy9NYW5hZ2VhYmlsaXR5LmRzYzxicj4NCkBAIC0yLDExICsyLDEzIEBAPGJyPg0KJm5ic3A7IyBD b21tb24gbGlicmFyaWVzIGZvciBNYW5hZ2VhYmlsdHkgUGFja2FnZTxicj4NCiZuYnNwOyM8YnI+ DQombmJzcDsjIENvcHlyaWdodCAoQykgMjAyMyBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMu IEFsbCByaWdodHMgcmVzZXJ2ZWQuJmx0O0JSJmd0Ozxicj4NCisjIENvcHlyaWdodCAoYykgMjAy MywgTlZJRElBIENPUlBPUkFUSU9OICZhbXA7IEFGRklMSUFURVMuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPGJyPg0KJm5ic3A7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudDxicj4NCiZuYnNwOyM8YnI+DQombmJzcDsjIzxicj4NCiZuYnNwO1tMaWJyYXJ5Q2xhc3Nl c108YnI+DQombmJzcDsmbmJzcDsmbmJzcDtNYW5hZ2VhYmlsaXR5VHJhbnNwb3J0SGVscGVyTGli fE1hbmFnZWFiaWxpdHlQa2cvTGlicmFyeS9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBl ckxpYi9CYXNlTWFuYWdlYWJpbGl0eVRyYW5zcG9ydEhlbHBlci5pbmY8YnI+DQorICZuYnNwO0lw bWlMaWJ8TWRlTW9kdWxlUGtnL0xpYnJhcnkvRHhlSXBtaUxpYklwbWlQcm90b2NvbC9EeGVJcG1p TGliSXBtaVByb3RvY29sLmluZjxicj4NCjxicj4NCiZuYnNwO1tMaWJyYXJ5Q2xhc3Nlcy5BUk0s IExpYnJhcnlDbGFzc2VzLkFBUkNINjRdPGJyPg0KJm5ic3A7Jm5ic3A7Jm5ic3A7Izxicj4NCkBA IC0yMiw0ICsyNCw0IEBAPGJyPg0KJm5ic3A7W0NvbXBvbmVudHMuWDY0XTxicj4NCiZuYnNwOyZu YnNwOyZuYnNwO01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlQcm90b2NvbC9EeGUvSXBt aVByb3RvY29sRHhlLmluZjxicj4NCiZuYnNwOyZuYnNwOyZuYnNwO01hbmFnZWFiaWxpdHlQa2cv VW5pdmVyc2FsL0lwbWlQcm90b2NvbC9TbW0vSXBtaVByb3RvY29sU21tLmluZjxicj4NCi08YnI+ DQorICZuYnNwO01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJEeGUv SXBtaUJsb2JUcmFuc2ZlckR4ZS5pbmY8YnI+DQpkaWZmIC0tZ2l0IGEvRmVhdHVyZXMvTWFuYWdl YWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9JcG1pQmxvYlRyYW5zZmVy RHhlLmluZiBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJh bnNmZXJEeGUvSXBtaUJsb2JUcmFuc2ZlckR4ZS5pbmY8YnI+DQpuZXcgZmlsZSBtb2RlIDEwMDY0 NDxicj4NCmluZGV4IDAwMDAwMDAwMDAuLjI4ZTlkMjkzYzE8YnI+DQotLS0gL2Rldi9udWxsPGJy Pg0KKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFu c2ZlckR4ZS9JcG1pQmxvYlRyYW5zZmVyRHhlLmluZjxicj4NCkBAIC0wLDAgKzEsMzkgQEA8YnI+ DQorIyMgQGZpbGU8YnI+DQorIyBJUE1JIEJsb2IgVHJhbnNmZXIgUHJvdG9jb2wgRFhFIERyaXZl ci48YnI+DQorIzxicj4NCisjICZuYnNwO0NvcHlyaWdodCAoYykgMjAyMi0yMDIzLCBOVklESUEg Q09SUE9SQVRJT04gJmFtcDsgQUZGSUxJQVRFUy4gQWxsIHJpZ2h0cyByZXNlcnZlZC48YnI+DQor Izxicj4NCisjICZuYnNwO1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50PGJyPg0KKyM8YnI+DQorPGJyPg0KK1tEZWZpbmVzXTxicj4NCisgJm5ic3A7SU5GX1ZFUlNJ T04gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7PSAweDAwMDEwMDA1PGJyPg0KKyAmbmJzcDtCQVNFX05BTUUgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSBJcG1p QmxvYlRyYW5zZmVyRHhlPGJyPg0KKyAmbmJzcDtGSUxFX0dVSUQgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSA2MzU3 YzgwNC03OGJiLTRiMGMtYWJkZi1jNzVkZjk0MmYzMTk8YnI+DQorICZuYnNwO01PRFVMRV9UWVBF ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw Oz0gRFhFX0RSSVZFUjxicj4NCisgJm5ic3A7VkVSU0lPTl9TVFJJTkcgJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSAxLjA8YnI+DQorICZuYnNwO0VOVFJZX1BPSU5UICZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0g SXBtaUJsb2JUcmFuc2ZlckR4ZURyaXZlckVudHJ5UG9pbnQ8YnI+DQorPGJyPg0KK1tTb3VyY2Vz LmNvbW1vbl08YnI+DQorICZuYnNwO0lwbWlCbG9iVHJhbnNmZXJEeGUuYzxicj4NCis8YnI+DQor W0xpYnJhcnlDbGFzc2VzXTxicj4NCisgJm5ic3A7QmFzZUxpYjxicj4NCisgJm5ic3A7QmFzZU1l bW9yeUxpYjxicj4NCisgJm5ic3A7RGVidWdMaWI8YnI+DQorICZuYnNwO0lwbWlMaWI8YnI+DQor ICZuYnNwO01lbW9yeUFsbG9jYXRpb25MaWI8YnI+DQorICZuYnNwO1BjZExpYjxicj4NCisgJm5i c3A7VWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliPGJyPg0KKyAmbmJzcDtVZWZpRHJpdmVyRW50cnlQ b2ludDxicj4NCis8YnI+DQorW1BhY2thZ2VzXTxicj4NCisgJm5ic3A7TWRlUGtnL01kZVBrZy5k ZWM8YnI+DQorICZuYnNwO01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjPGJyPg0KKyAmbmJz cDtNYW5hZ2VhYmlsaXR5UGtnL01hbmFnZWFiaWxpdHlQa2cuZGVjPGJyPg0KKzxicj4NCitbUHJv dG9jb2xzXTxicj4NCisgJm5ic3A7Z0Vka2lpSXBtaUJsb2JUcmFuc2ZlclByb3RvY29sR3VpZDxi cj4NCis8YnI+DQorW0RlcGV4XTxicj4NCisgJm5ic3A7VFJVRTxicj4NCmRpZmYgLS1naXQgYS9G ZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVyRHhlL1Vu aXRUZXN0L0lwbWlCbG9iVHJhbnNmZXJUZXN0VW5pdFRlc3RzSG9zdC5pbmYgYi9GZWF0dXJlcy9N YW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVyRHhlL1VuaXRUZXN0L0lw bWlCbG9iVHJhbnNmZXJUZXN0VW5pdFRlc3RzSG9zdC5pbmY8YnI+DQpuZXcgZmlsZSBtb2RlIDEw MDY0NDxicj4NCmluZGV4IDAwMDAwMDAwMDAuLjFmMDcxYmJhZGM8YnI+DQotLS0gL2Rldi9udWxs PGJyPg0KKysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JU cmFuc2ZlckR4ZS9Vbml0VGVzdC9JcG1pQmxvYlRyYW5zZmVyVGVzdFVuaXRUZXN0c0hvc3QuaW5m PGJyPg0KQEAgLTAsMCArMSw0MCBAQDxicj4NCisjIyBAZmlsZTxicj4NCisjIFVuaXQgdGVzdHMg b2YgdGhlIElwbWkgYmxvYiB0cmFuc2ZlciBkcml2ZXIgdGhhdCBhcmUgcnVuIGZyb20gYSBob3N0 IGVudmlyb25tZW50Ljxicj4NCisjPGJyPg0KKyMgQ29weXJpZ2h0IChjKSAyMDIwLTIwMjMsIE5W SURJQSBDT1JQT1JBVElPTiAmYW1wOyBBRkZJTElBVEVTLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxi cj4NCisjPGJyPg0KKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQ8YnI+DQorIyM8YnI+DQorPGJyPg0KK1tEZWZpbmVzXTxicj4NCisgJm5ic3A7SU5GX1ZFUlNJ T04gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7PSAweDAwMDEwMDA2PGJyPg0KKyAmbmJzcDtCQVNFX05BTUUgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSBJcG1p QmxvYlRyYW5zZmVyRHhlVW5pdFRlc3RzSG9zdDxicj4NCisgJm5ic3A7RklMRV9HVUlEICZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOz0gMWY1ZDQwOTUtZWE1Mi00MzJjLWIwNzgtODYwOTdmZWY2MDA0PGJyPg0KKyAmbmJz cDtNT0RVTEVfVFlQRSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDs9IEhPU1RfQVBQTElDQVRJT048YnI+DQorICZuYnNwO1ZFUlNJT05fU1RS SU5HICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gMS4wPGJyPg0KKzxi cj4NCisjPGJyPg0KKyMgVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBmb3IgcmVmZXJlbmNl IG9ubHk8YnI+DQorIyBhbmQgbm90IHJlcXVpcmVkIGJ5IHRoZSBidWlsZCB0b29scy48YnI+DQor Izxicj4NCisjICZuYnNwO1ZBTElEX0FSQ0hJVEVDVFVSRVMgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSBYNjQ8YnI+DQorIzxicj4N Cis8YnI+DQorW1NvdXJjZXNdPGJyPg0KKyAmbmJzcDtJcG1pQmxvYlRyYW5zZmVyVGVzdFVuaXRU ZXN0cy5jPGJyPg0KKzxicj4NCitbUGFja2FnZXNdPGJyPg0KKyAmbmJzcDtNZGVQa2cvTWRlUGtn LmRlYzxicj4NCisgJm5ic3A7TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWM8YnI+DQorICZu YnNwO01hbmFnZWFiaWxpdHlQa2cvTWFuYWdlYWJpbGl0eVBrZy5kZWM8YnI+DQorICZuYnNwO1Vu aXRUZXN0RnJhbWV3b3JrUGtnL1VuaXRUZXN0RnJhbWV3b3JrUGtnLmRlYzxicj4NCis8YnI+DQor W0xpYnJhcnlDbGFzc2VzXTxicj4NCisgJm5ic3A7QmFzZUxpYjxicj4NCisgJm5ic3A7QmFzZU1l bW9yeUxpYjxicj4NCisgJm5ic3A7RGVidWdMaWI8YnI+DQorICZuYnNwO1VuaXRUZXN0TGliPGJy Pg0KKyAmbmJzcDtJcG1pTGliPGJyPg0KKzxicj4NCitbUHJvdG9jb2xzXTxicj4NCisgJm5ic3A7 Z0Vka2lpSXBtaUJsb2JUcmFuc2ZlclByb3RvY29sR3VpZDxicj4NCmRpZmYgLS1naXQgYS9GZWF0 dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL0luY2x1ZGUvUHJvdG9jb2wvSXBtaUJsb2JUcmFuc2Zlci5o IGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9JbmNsdWRlL1Byb3RvY29sL0lwbWlCbG9iVHJh bnNmZXIuaDxicj4NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0PGJyPg0KaW5kZXggMDAwMDAwMDAwMC4u OGVhNzFkODgxNjxicj4NCi0tLSAvZGV2L251bGw8YnI+DQorKysgYi9GZWF0dXJlcy9NYW5hZ2Vh YmlsaXR5UGtnL0luY2x1ZGUvUHJvdG9jb2wvSXBtaUJsb2JUcmFuc2Zlci5oPGJyPg0KQEAgLTAs MCArMSwxMzYgQEA8YnI+DQorLyoqIEBmaWxlPGJyPg0KKzxicj4NCisgJm5ic3A7SVBNSSBCbG9i IFRyYW5zZmVyIGRyaXZlcjxicj4NCis8YnI+DQorICZuYnNwO0NvcHlyaWdodCAoYykgMjAyMi0y MDIzLCBOVklESUEgQ09SUE9SQVRJT04gJmFtcDsgQUZGSUxJQVRFUy4gQWxsIHJpZ2h0cyByZXNl cnZlZC48YnI+DQorPGJyPg0KKyAmbmJzcDtTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudDxicj4NCis8YnI+DQorKiovPGJyPg0KKyNpbmNsdWRlICZsdDtMaWJyYXJ5 L0lwbWlMaWIuaCZndDs8YnI+DQorI2luY2x1ZGUgJmx0O0xpYnJhcnkvVWVmaUJvb3RTZXJ2aWNl c1RhYmxlTGliLmgmZ3Q7PGJyPg0KKyNpbmNsdWRlICZsdDtJbmR1c3RyeVN0YW5kYXJkL0lwbWku aCZndDs8YnI+DQorPGJyPg0KKyNkZWZpbmUgSVBNSV9ORVRGTl9PRU0gJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7MHgyRTxicj4N CisjZGVmaW5lIElQTUlfT0VNX0JMT0JfVFJBTlNGRVJfQ01EICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzB4ODA8YnI+DQorI2RlZmluZSBJUE1JX09FTV9C TE9CX01BWF9EQVRBX1BFUl9QQUNLRVQgJm5ic3A7NjQ8YnI+DQo8L2Jsb2NrcXVvdGU+DQo8YnIg c3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7 IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczog bm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFs aWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRl LXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdp ZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KPHNwYW4gc3R5bGU9ImNhcmV0LWNv bG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJw eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdl aWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7 IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQt ZGVjb3JhdGlvbjogbm9uZTsgZmxvYXQ6IG5vbmU7IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50 OyI+SXQNCiBpcyBiZXR0ZXIgdG8gYXZvaWQgZml4aW5nIHRoZSBwYWNrZXQgc2l6ZSBoZXJlLjwv c3Bhbj48YnIgc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBI ZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh bnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs OyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v bmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQt c3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KPGJyIHN0eWxlPSJj YXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBmb250LXNp emU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsg Zm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3Rh cnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTog bm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4 OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij4NCjxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdi KDAsIDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBmb250LXNpemU6IDEycHg7IGZvbnQt c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQw MDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50 OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNw YWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRp b246IG5vbmU7IGZsb2F0OiBub25lOyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPi0NCiBG b3Igc3NpZiwgZ2V0IGl0IGZyb20gJnF1b3Q7Z2V0IGNhcGFiaWxpdGllcyZxdW90OyBjb21tYW5k LiBJZiBCTUMgc3VwcG9ydHMgb25seSBzaW5nbGUtcGFydCByZWFkL3dyaXRlLCB0aGlzIHNpemUg ZXhjZWVkcyBCTUMgY2FwYWJpbGl0eTwvc3Bhbj48YnIgc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2Io MCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1z dHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAw OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6 IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3Bh Y2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlv bjogbm9uZTsiPg0KPGJyIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZh bWlseTogSGVsdmV0aWNhOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6 IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNm b3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtp dC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij4NCjxzcGFu IHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0aWNh OyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6 IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1h bGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0 ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13 aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZsb2F0OiBub25lOyBkaXNwbGF5OiBp bmxpbmUgIWltcG9ydGFudDsiPi0NCiBGb3Iga2NzLCBJIGRvbid0IHNlZSB0aGUgbGltaXRhdGlv bjwvc3Bhbj48YnIgc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5 OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZh cmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9y bWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRl eHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KPGJyIHN0eWxl PSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBmb250 LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1h bDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFj ZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDog MHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij4NCjxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjog cmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBmb250LXNpemU6IDEycHg7IGZv bnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6 IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5k ZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3Jk LXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29y YXRpb246IG5vbmU7IGZsb2F0OiBub25lOyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPkkN CiB0aGluayBsaW1pdGluZyB0aGUgc2l6ZSBoZXJlIGlzIHVuc3VpdGFibGUsIGFwcGxpY2F0aW9u cyB0aGF0IHVzZSB0aGlzIHByb3RvY29sIHNob3VsZCBjaGVjayB0aGUgc2l6ZSB0aGVtc2VsdmVz PC9zcGFuPjxiciBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6 IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFy aWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3Jt YWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog bm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4 dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQo8YnIgc3R5bGU9 ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQt c2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFs OyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBz dGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNl OiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAw cHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSIgc3R5 bGU9ImZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTog bm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0 ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiBhdXRvOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7 IHdpZG93czogYXV0bzsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lk dGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQorPGJyPg0KKyNkZWZpbmUgQkxPQl9U UkFOU0ZFUl9TVEFUX09QRU5fUiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtCSVQwPGJyPg0KKyNkZWZpbmUgQkxPQl9UUkFOU0ZFUl9TVEFUX09QRU5fVyAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtCSVQxPGJyPg0KKyNkZWZpbmUgQkxP Ql9UUkFOU0ZFUl9TVEFUX0NPTU1JVElORyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtCSVQyPGJy Pg0KKyNkZWZpbmUgQkxPQl9UUkFOU0ZFUl9TVEFUX0NPTU1JVFRFRCAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDtCSVQzPGJyPg0KKyNkZWZpbmUgQkxPQl9UUkFOU0ZFUl9TVEFUX0NPTU1JVF9FUlJP UiAmbmJzcDtCSVQ0PGJyPg0KKy8vIEJpdHMgNS03IGFyZSByZXNlcnZlZDxicj4NCisvLyBCaXRz IDgtMTUgYXJlIGJsb2Itc3BlY2lmaWMgZGVmaW5pdGlvbnM8YnI+DQorPGJyPg0KKy8vPGJyPg0K Ky8vICZuYnNwO0Jsb2IgVHJhbnNmZXIgRnVuY3Rpb24gUHJvdG90eXBlczxicj4NCisvLzxicj4N Cit0eXBlZGVmPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorKEVGSUFQSSAqSVBNSV9CTE9CX1RSQU5T RkVSX1BST1RPQ09MX0dFVF9DT1VOVCkoPGJyPg0KKyAmbmJzcDtPVVQgVUlOVDMyICpDb3VudDxi cj4NCisgJm5ic3A7KTs8YnI+DQorPGJyPg0KK3R5cGVkZWY8YnI+DQorRUZJX1NUQVRVUzxicj4N CisoRUZJQVBJICpJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfRU5VTUVSQVRFKSg8YnI+DQor ICZuYnNwO0lOICZuYnNwO1VJTlQzMiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtCbG9i SW5kZXgsPGJyPg0KKyAmbmJzcDtPVVQgQ0hBUjggKkJsb2JJZDxicj4NCisgJm5ic3A7KTs8YnI+ DQorPGJyPg0KK3R5cGVkZWY8YnI+DQorRUZJX1NUQVRVUzxicj4NCisoRUZJQVBJICpJUE1JX0JM T0JfVFJBTlNGRVJfUFJPVE9DT0xfT1BFTikoPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtDSEFSOCAq QmxvYklkLDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDE2ICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO0ZsYWdzLDxicj4NCisgJm5ic3A7T1VUIFVJTlQxNiAqU2Vzc2lvbklkPGJyPg0K KyAmbmJzcDspOzxicj4NCis8YnI+DQordHlwZWRlZjxicj4NCitFRklfU1RBVFVTPGJyPg0KKyhF RklBUEkgKklQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9SRUFEKSg8YnI+DQorICZuYnNwO0lO ICZuYnNwO1VJTlQxNiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXNzaW9uSWQsPGJy Pg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 T2Zmc2V0LDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDMyICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO1JlcXVlc3RlZFNpemUsPGJyPg0KKyAmbmJzcDtPVVQgVUlOVDggKkRhdGE8YnI+ DQorICZuYnNwOyk7PGJyPg0KKzxicj4NCit0eXBlZGVmPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQor KEVGSUFQSSAqSVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX1dSSVRFKSg8YnI+DQorICZuYnNw O0lOICZuYnNwO1VJTlQxNiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXNzaW9uSWQs PGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7T2Zmc2V0LDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDggKkRhdGEsPGJyPg0KKyAmbmJz cDtJTiAmbmJzcDtVSU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7V3JpdGVMZW5n dGg8YnI+DQorICZuYnNwOyk7PGJyPg0KKzxicj4NCit0eXBlZGVmPGJyPg0KK0VGSV9TVEFUVVM8 YnI+DQorKEVGSUFQSSAqSVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX0NPTU1JVCkoPGJyPg0K KyAmbmJzcDtJTiAmbmJzcDtVSU5UMTYgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2Vz c2lvbklkLDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Q29tbWl0RGF0YUxlbmd0aCw8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJ TlQ4ICpDb21taXREYXRhPGJyPg0KKyAmbmJzcDspOzxicj4NCis8YnI+DQordHlwZWRlZjxicj4N CitFRklfU1RBVFVTPGJyPg0KKyhFRklBUEkgKklQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9D TE9TRSkoPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5UMTYgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7U2Vzc2lvbklkPGJyPg0KKyAmbmJzcDspOzxicj4NCis8YnI+DQordHlwZWRlZjxi cj4NCitFRklfU1RBVFVTPGJyPg0KKyhFRklBUEkgKklQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NP TF9ERUxFVEUpKDxicj4NCisgJm5ic3A7SU4gJm5ic3A7Q0hBUjggKkJsb2JJZDxicj4NCisgJm5i c3A7KTs8YnI+DQorPGJyPg0KK3R5cGVkZWY8YnI+DQorRUZJX1NUQVRVUzxicj4NCisoRUZJQVBJ ICpJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfU1RBVCkoPGJyPg0KKyAmbmJzcDtJTiAmbmJz cDtDSEFSOCAqQmxvYklkLDxicj4NCisgJm5ic3A7T1VUIFVJTlQxNiAqQmxvYlN0YXRlLDxicj4N CisgJm5ic3A7T1VUIFVJTlQzMiAqU2l6ZSw8YnI+DQorICZuYnNwO09VVCBVSU5UOCAqTWV0YWRh dGFMZW5ndGgsPGJyPg0KKyAmbmJzcDtPVVQgVUlOVDggKk1ldGFkYXRhPGJyPg0KKyAmbmJzcDsp Ozxicj4NCis8YnI+DQordHlwZWRlZjxicj4NCitFRklfU1RBVFVTPGJyPg0KKyhFRklBUEkgKklQ TUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9TRVNTSU9OX1NUQVQpKDxicj4NCisgJm5ic3A7SU4g Jm5ic3A7VUlOVDE2ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Nlc3Npb25JZCw8YnI+ DQorICZuYnNwO09VVCBVSU5UMTYgKkJsb2JTdGF0ZSw8YnI+DQorICZuYnNwO09VVCBVSU5UMzIg KlNpemUsPGJyPg0KKyAmbmJzcDtPVVQgVUlOVDggKk1ldGFkYXRhTGVuZ3RoLDxicj4NCisgJm5i c3A7T1VUIFVJTlQ4ICpNZXRhZGF0YTxicj4NCisgJm5ic3A7KTs8YnI+DQorPGJyPg0KK3R5cGVk ZWY8YnI+DQorRUZJX1NUQVRVUzxicj4NCisoRUZJQVBJICpJUE1JX0JMT0JfVFJBTlNGRVJfUFJP VE9DT0xfV1JJVEVfTUVUQSkoPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5UMTYgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2Vzc2lvbklkLDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlO VDMyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO09mZnNldCw8YnI+DQorICZuYnNwO0lO ICZuYnNwO1VJTlQ4ICpEYXRhLDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDMyICZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwO1dyaXRlTGVuZ3RoPGJyPg0KKyAmbmJzcDspOzxicj4NCis8 YnI+DQorLy88YnI+DQorLy8gU3RydWN0dXJlIG9mIElQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NP TDxicj4NCisvLzxicj4NCitzdHJ1Y3QgX0lQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTCB7PGJy Pg0KKyAmbmJzcDtJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfR0VUX0NPVU5UICZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JHZXRDb3VudDs8YnI+DQorICZuYnNwO0lQ TUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9FTlVNRVJBVEUgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7QmxvYkVudW1lcmF0ZTs8YnI+DQorICZuYnNwO0lQTUlfQkxPQl9UUkFO U0ZFUl9QUk9UT0NPTF9PUEVOICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JPcGVuOzxicj4NCisgJm5ic3A7SVBNSV9C TE9CX1RSQU5TRkVSX1BST1RPQ09MX1JFQUQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QmxvYlJlYWQ7PGJyPg0KKyAmbmJz cDtJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfV1JJVEUgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QmxvYldyaXRlOzxicj4NCisg Jm5ic3A7SVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX0NPTU1JVCAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtCbG9iQ29tbWl0Ozxicj4NCisg Jm5ic3A7SVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX0NMT1NFICZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JDbG9zZTs8YnI+ DQorICZuYnNwO0lQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9ERUxFVEUgJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QmxvYkRlbGV0ZTs8YnI+ DQorICZuYnNwO0lQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9TVEFUICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JT dGF0Ozxicj4NCisgJm5ic3A7SVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX1NFU1NJT05fU1RB VCAmbmJzcDsmbmJzcDsmbmJzcDtCbG9iU2Vzc2lvblN0YXQ7PGJyPg0KKyAmbmJzcDtJUE1JX0JM T0JfVFJBTlNGRVJfUFJPVE9DT0xfV1JJVEVfTUVUQSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtCbG9iV3JpdGVNZXRhOzxicj4NCit9Ozxicj4NCis8YnI+DQordHlwZWRlZiBzdHJ1Y3Qg X0lQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTCBJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0w7 PGJyPg0KKzxicj4NCitleHRlcm4gRUZJX0dVSUQgJm5ic3A7Z0Vka2lpSXBtaUJsb2JUcmFuc2Zl clByb3RvY29sR3VpZDs8YnI+DQpkaWZmIC0tZ2l0IGEvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBr Zy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9JbnRlcm5hbElwbWlCbG9iVHJhbnNmZXIu aCBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJE eGUvSW50ZXJuYWxJcG1pQmxvYlRyYW5zZmVyLmg8YnI+DQpuZXcgZmlsZSBtb2RlIDEwMDY0NDxi cj4NCmluZGV4IDAwMDAwMDAwMDAuLjE0ZjBkYzAyYmM8YnI+DQotLS0gL2Rldi9udWxsPGJyPg0K KysrIGIvRmVhdHVyZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2Zl ckR4ZS9JbnRlcm5hbElwbWlCbG9iVHJhbnNmZXIuaDxicj4NCkBAIC0wLDAgKzEsMzYzIEBAPGJy Pg0KKy8qKiBAZmlsZTxicj4NCis8YnI+DQorICZuYnNwO0hlYWRlcnMgZm9yIElQTUkgQmxvYiBU cmFuc2ZlciBkcml2ZXI8YnI+DQorPGJyPg0KKyAmbmJzcDtDb3B5cmlnaHQgKGMpIDIwMjItMjAy MywgTlZJRElBIENPUlBPUkFUSU9OICZhbXA7IEFGRklMSUFURVMuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPGJyPg0KKzxicj4NCisgJm5ic3A7U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQ8YnI+DQorPGJyPg0KKyoqLzxicj4NCis8YnI+DQorI2luY2x1ZGUgJmx0O0xp YnJhcnkvQmFzZUxpYi5oJmd0Ozxicj4NCisjaW5jbHVkZSAmbHQ7TGlicmFyeS9CYXNlTWVtb3J5 TGliLmgmZ3Q7PGJyPg0KKyNpbmNsdWRlICZsdDtMaWJyYXJ5L0RlYnVnTGliLmgmZ3Q7PGJyPg0K KyNpbmNsdWRlICZsdDtMaWJyYXJ5L0lwbWlMaWIuaCZndDs8YnI+DQorI2luY2x1ZGUgJmx0O0xp YnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oJmd0Ozxicj4NCisjaW5jbHVkZSAmbHQ7TGlicmFy eS9QY2RMaWIuaCZndDs8YnI+DQorPGJyPg0KKyNkZWZpbmUgUFJPVE9DT0xfUkVTUE9OU0VfT1ZF UkhFQUQgJm5ic3A7KDQgKiBzaXplb2YoVUlOVDgpKSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsv LyAxIGJ5dGUgY29tcGxldGlvbiBjb2RlICsgMyBieXRlcyBPRU48YnI+DQorPGJyPg0KKy8vIFN1 YmNvbW1hbmRzIGZvciB0aGlzIHByb3RvY29sPGJyPg0KK3R5cGVkZWYgZW51bSB7PGJyPg0KKyAm bmJzcDtJcG1pQmxvYlRyYW5zZmVyU3ViY29tbWFuZEdldENvdW50ID0gMCw8YnI+DQorICZuYnNw O0lwbWlCbG9iVHJhbnNmZXJTdWJjb21tYW5kRW51bWVyYXRlLDxicj4NCisgJm5ic3A7SXBtaUJs b2JUcmFuc2ZlclN1YmNvbW1hbmRPcGVuLDxicj4NCisgJm5ic3A7SXBtaUJsb2JUcmFuc2ZlclN1 YmNvbW1hbmRSZWFkLDxicj4NCisgJm5ic3A7SXBtaUJsb2JUcmFuc2ZlclN1YmNvbW1hbmRXcml0 ZSw8YnI+DQorICZuYnNwO0lwbWlCbG9iVHJhbnNmZXJTdWJjb21tYW5kQ29tbWl0LDxicj4NCisg Jm5ic3A7SXBtaUJsb2JUcmFuc2ZlclN1YmNvbW1hbmRDbG9zZSw8YnI+DQorICZuYnNwO0lwbWlC bG9iVHJhbnNmZXJTdWJjb21tYW5kRGVsZXRlLDxicj4NCisgJm5ic3A7SXBtaUJsb2JUcmFuc2Zl clN1YmNvbW1hbmRTdGF0LDxicj4NCisgJm5ic3A7SXBtaUJsb2JUcmFuc2ZlclN1YmNvbW1hbmRT ZXNzaW9uU3RhdCw8YnI+DQorICZuYnNwO0lwbWlCbG9iVHJhbnNmZXJTdWJjb21tYW5kV3JpdGVN ZXRhLDxicj4NCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9TVUJDT01NQU5EUzs8YnI+DQorPGJyPg0K KyNwcmFnbWEgcGFjaygxKTxicj4NCis8YnI+DQordHlwZWRlZiBzdHJ1Y3Qgezxicj4NCisgJm5i c3A7VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7T0VOWzNdOzxicj4NCisgJm5ic3A7VUlOVDggJm5i c3A7Jm5ic3A7Jm5ic3A7U3ViQ29tbWFuZDs8YnI+DQorfSBJUE1JX0JMT0JfVFJBTlNGRVJfSEVB REVSOzxicj4NCis8YnI+DQorLy88YnI+DQorLy8gQ29tbWFuZCAwIC0gQm1jQmxvYkdldENvdW50 PGJyPg0KKy8vIFRoZSBCbWNCbG9iR2V0Q291bnQgY29tbWFuZCBleHBlY3RzIHRvIHJlY2VpdmUg YW4gZW1wdHkgYm9keS48YnI+DQorLy8gVGhlIEJNQyB3aWxsIHJldHVybiB0aGUgbnVtYmVyIG9m IGVudW1lcmFibGUgYmxvYnM8YnI+DQorLy88YnI+DQordHlwZWRlZiBzdHJ1Y3Qgezxicj4NCisg Jm5ic3A7VUlOVDMyICZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JDb3VudDs8YnI+DQorfSBJUE1JX0JM T0JfVFJBTlNGRVJfR0VUX0NPVU5UX1JFU1BPTlNFOzxicj4NCis8YnI+DQorLy88YnI+DQorLy8g Q29tbWFuZCAxIC0gQm1jQmxvYkVudW1lcmF0ZTxicj4NCisvLyBUaGUgQm1jQmxvYkVudW1lcmF0 ZSBjb21tYW5kIGV4cGVjdHMgdG8gcmVjZWl2ZSBhIGJvZHkgb2Y6PGJyPg0KKy8vPGJyPg0KK3R5 cGVkZWYgc3RydWN0IHs8YnI+DQorICZuYnNwO1VJTlQzMiAmbmJzcDsmbmJzcDsmbmJzcDtCbG9i SW5kZXg7IC8vIDAtYmFzZWQgaW5kZXggb2YgYmxvYiB0byByZWNlaXZlPGJyPg0KK30gSVBNSV9C TE9CX1RSQU5TRkVSX0JMT0JfRU5VTUVSQVRFX1NFTkRfREFUQTs8YnI+DQorPGJyPg0KK3R5cGVk ZWYgc3RydWN0IHs8YnI+DQorICZuYnNwO0NIQVI4ICZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JJZFtJ UE1JX09FTV9CTE9CX01BWF9EQVRBX1BFUl9QQUNLRVRdOzxicj4NCit9IElQTUlfQkxPQl9UUkFO U0ZFUl9CTE9CX0VOVU1FUkFURV9SRVNQT05TRTs8YnI+DQorPGJyPg0KKy8vPGJyPg0KKy8vIENv bW1hbmQgMiAtIEJtY0Jsb2JPcGVuPGJyPg0KKy8vIFRoZSBCbWNCbG9iT3BlbiBjb21tYW5kIGV4 cGVjdHMgdG8gcmVjZWl2ZSBhIGJvZHkgb2Y6PGJyPg0KKy8vPGJyPg0KK3R5cGVkZWYgc3RydWN0 IHs8YnI+DQorICZuYnNwO1VJTlQxNiAmbmJzcDsmbmJzcDsmbmJzcDtGbGFnczs8YnI+DQorICZu YnNwO0NIQVI4ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JJZFtJUE1JX09FTV9CTE9CX01B WF9EQVRBX1BFUl9QQUNLRVRdOzxicj4NCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX09QRU5f U0VORF9EQVRBOzxicj4NCis8YnI+DQorI2RlZmluZSBCTE9CX09QRU5fRkxBR19SRUFEICZuYnNw OyZuYnNwOzA8YnI+DQorI2RlZmluZSBCTE9CX09QRU5fRkxBR19XUklURSAmbmJzcDsxPGJyPg0K Ky8vIEJpdHMgMi03IGFyZSByZXNlcnZlZDxicj4NCisvLyBCaXRzIDgtMTUgYXJlIGJsb2Itc3Bl Y2lmaWMgZGVmaW5pdGlvbnM8YnI+DQorPGJyPg0KK3R5cGVkZWYgc3RydWN0IHs8YnI+DQorICZu YnNwO1VJTlQxNiAmbmJzcDsmbmJzcDsmbmJzcDtTZXNzaW9uSWQ7PGJyPg0KK30gSVBNSV9CTE9C X1RSQU5TRkVSX0JMT0JfT1BFTl9SRVNQT05TRTs8YnI+DQorPGJyPg0KKy8vPGJyPg0KKy8vIENv bW1hbmQgMyAtIEJtY0Jsb2JSZWFkPGJyPg0KKy8vIFRoZSBCbWNCbG9iUmVhZCBjb21tYW5kIGV4 cGVjdHMgdG8gcmVjZWl2ZSBhIGJvZHkgb2Y6PGJyPg0KKy8vPGJyPg0KK3R5cGVkZWYgc3RydWN0 IHs8YnI+DQorICZuYnNwO1VJTlQxNiAmbmJzcDsmbmJzcDsmbmJzcDtTZXNzaW9uSWQ7IC8vIFJl dHVybmVkIGZyb20gQmxvYk9wZW48YnI+DQorICZuYnNwO1VJTlQzMiAmbmJzcDsmbmJzcDsmbmJz cDtPZmZzZXQ7PGJyPg0KKyAmbmJzcDtVSU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7UmVxdWVzdGVk U2l6ZTs8YnI+DQorfSBJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9SRUFEX1NFTkRfREFUQTs8YnI+ DQorPGJyPg0KK3R5cGVkZWYgc3RydWN0IHs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNw OyZuYnNwO0RhdGFbSVBNSV9PRU1fQkxPQl9NQVhfREFUQV9QRVJfUEFDS0VUXTs8YnI+DQorfSBJ UE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9SRUFEX1JFU1BPTlNFOzxicj4NCis8YnI+DQorLy88YnI+ DQorLy8gQ29tbWFuZCA0IC0gQm1jQmxvYldyaXRlPGJyPg0KKy8vIFRoZSBCbWNCbG9iV3JpdGUg Y29tbWFuZCBleHBlY3RzIHRvIHJlY2VpdmUgYSBib2R5IG9mOjxicj4NCisvLzxicj4NCit0eXBl ZGVmIHN0cnVjdCB7PGJyPg0KKyAmbmJzcDtVSU5UMTYgJm5ic3A7Jm5ic3A7Jm5ic3A7U2Vzc2lv bklkOyAvLyBSZXR1cm5lZCBmcm9tIEJsb2JPcGVuPGJyPg0KKyAmbmJzcDtVSU5UMzIgJm5ic3A7 Jm5ic3A7Jm5ic3A7T2Zmc2V0Ozxicj4NCisgJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7RGF0YVtJUE1JX09FTV9CTE9CX01BWF9EQVRBX1BFUl9QQUNLRVRdOzxicj4NCit9IElQ TUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1dSSVRFX1NFTkRfREFUQTs8YnI+DQorPGJyPg0KKy8vPGJy Pg0KKy8vIENvbW1hbmQgNSAtIEJtY0Jsb2JDb21taXQ8YnI+DQorLy8gVGhlIEJtY0Jsb2JDb21t aXQgY29tbWFuZCBleHBlY3RzIHRvIHJlY2VpdmUgYSBib2R5IG9mOjxicj4NCisvLzxicj4NCit0 eXBlZGVmIHN0cnVjdCB7PGJyPg0KKyAmbmJzcDtVSU5UMTYgJm5ic3A7Jm5ic3A7Jm5ic3A7U2Vz c2lvbklkOyAvLyBSZXR1cm5lZCBmcm9tIEJsb2JPcGVuPGJyPg0KKyAmbmJzcDtVSU5UOCAmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDtDb21taXREYXRhTGVuZ3RoOzxicj4NCisgJm5ic3A7VUlOVDgg Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29tbWl0RGF0YVtJUE1JX09FTV9CTE9CX01BWF9EQVRB X1BFUl9QQUNLRVRdOzxicj4NCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX0NPTU1JVF9TRU5E X0RBVEE7PGJyPg0KKzxicj4NCisvLzxicj4NCisvLyBDb21tYW5kIDYgLSBCbWNCbG9iQ2xvc2U8 YnI+DQorLy8gVGhlIEJtY0Jsb2JDbG9zZSBjb21tYW5kIGV4cGVjdHMgdG8gcmVjZWl2ZSBhIGJv ZHkgb2Y6PGJyPg0KKy8vPGJyPg0KK3R5cGVkZWYgc3RydWN0IHs8YnI+DQorICZuYnNwO1VJTlQx NiAmbmJzcDsmbmJzcDsmbmJzcDtTZXNzaW9uSWQ7IC8vIFJldHVybmVkIGZyb20gQmxvYk9wZW48 YnI+DQorfSBJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9DTE9TRV9TRU5EX0RBVEE7PGJyPg0KKzxi cj4NCisvLzxicj4NCisvLyBDb21tYW5kIDcgLSBCbWNCbG9iRGVsZXRlPGJyPg0KKy8vIE5PVEU6 IFRoaXMgY29tbWFuZCB3aWxsIGZhaWwgaWYgdGhlcmUgYXJlIG9wZW4gc2Vzc2lvbnMgZm9yIHRo aXMgYmxvYjxicj4NCisvLyBUaGUgQm1jQmxvYkRlbGV0ZSBjb21tYW5kIGV4cGVjdHMgdG8gcmVj ZWl2ZSBhIGJvZHkgb2Y6PGJyPg0KKy8vPGJyPg0KK3R5cGVkZWYgc3RydWN0IHs8YnI+DQorICZu YnNwO0NIQVI4ICZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JJZFtJUE1JX09FTV9CTE9CX01BWF9EQVRB X1BFUl9QQUNLRVRdOzxicj4NCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX0RFTEVURV9TRU5E X0RBVEE7PGJyPg0KKzxicj4NCisvLzxicj4NCisvLyBDb21tYW5kIDggLSBCbWNCbG9iU3RhdDxi cj4NCisvLyBUaGlzIGNvbW1hbmQgcmV0dXJucyBzdGF0aXN0aWNzIGFib3V0IGEgYmxvYi48YnI+ DQorLy8gVGhpcyBjb21tYW5kIGV4cGVjdHMgdG8gcmVjZWl2ZSBhIGJvZHkgb2Y6PGJyPg0KKy8v PGJyPg0KK3R5cGVkZWYgc3RydWN0IHs8YnI+DQorICZuYnNwO0NIQVI4ICZuYnNwOyZuYnNwOyZu YnNwO0Jsb2JJZFtJUE1JX09FTV9CTE9CX01BWF9EQVRBX1BFUl9QQUNLRVRdOzxicj4NCit9IElQ TUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1NUQVRfU0VORF9EQVRBOzxicj4NCis8YnI+DQordHlwZWRl ZiBzdHJ1Y3Qgezxicj4NCisgJm5ic3A7VUlOVDE2ICZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JTdGF0 ZTs8YnI+DQorICZuYnNwO1VJTlQzMiAmbmJzcDsmbmJzcDsmbmJzcDtTaXplOyAvLyBTaXplIGlu IGJ5dGVzIG9mIHRoZSBibG9iPGJyPg0KKyAmbmJzcDtVSU5UOCAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtNZXRhRGF0YUxlbjs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwO01ldGFEYXRhW0lQTUlfT0VNX0JMT0JfTUFYX0RBVEFfUEVSX1BBQ0tFVF07PGJyPg0KK30g SVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfU1RBVF9SRVNQT05TRTs8YnI+DQorPGJyPg0KKy8vPGJy Pg0KKy8vIENvbW1hbmQgOSAtIEJtY0Jsb2JTZXNzaW9uU3RhdDxicj4NCisvLyBSZXR1cm5zIHNh bWUgZGF0YSBhcyBCbWNCbG9iU3RhdGUgZXhwZWN0IGZvciBhIHNlc3Npb24sIG5vdCBhIGJsb2I8 YnI+DQorLy8gVGhpcyBjb21tYW5kIGV4cGVjdHMgdG8gcmVjZWl2ZSBhIGJvZHkgb2Y6PGJyPg0K Ky8vPGJyPg0KK3R5cGVkZWYgc3RydWN0IHs8YnI+DQorICZuYnNwO1VJTlQxNiAmbmJzcDsmbmJz cDsmbmJzcDtTZXNzaW9uSWQ7PGJyPg0KK30gSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfU0VTU0lP Tl9TVEFUX1NFTkRfREFUQTs8YnI+DQorPGJyPg0KK3R5cGVkZWYgc3RydWN0IHs8YnI+DQorICZu YnNwO1VJTlQxNiAmbmJzcDsmbmJzcDsmbmJzcDtCbG9iU3RhdGU7PGJyPg0KKyAmbmJzcDtVSU5U MzIgJm5ic3A7Jm5ic3A7Jm5ic3A7U2l6ZTsgLy8gU2l6ZSBpbiBieXRlcyBvZiB0aGUgYmxvYjxi cj4NCisgJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TWV0YURhdGFMZW47PGJy Pg0KKyAmbmJzcDtVSU5UOCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtNZXRhRGF0YVtJUE1JX09F TV9CTE9CX01BWF9EQVRBX1BFUl9QQUNLRVRdOzxicj4NCit9IElQTUlfQkxPQl9UUkFOU0ZFUl9C TE9CX1NFU1NJT05fU1RBVF9SRVNQT05TRTs8YnI+DQorPGJyPg0KKy8vPGJyPg0KKy8vIENvbW1h bmQgMTAgLSBCbWNCbG9iV3JpdGVNZXRhPGJyPg0KKy8vIFRoZSBCbWNCbG9iV3JpdGVNZXRhIGNv bW1hbmQgZXhwZWN0cyB0byByZWNlaXZlIGEgYm9keSBvZjo8YnI+DQorLy88YnI+DQordHlwZWRl ZiBzdHJ1Y3Qgezxicj4NCisgJm5ic3A7VUlOVDE2ICZuYnNwOyZuYnNwOyZuYnNwO1Nlc3Npb25J ZDs8YnI+DQorICZuYnNwO1VJTlQzMiAmbmJzcDsmbmJzcDsmbmJzcDtPZmZzZXQ7PGJyPg0KKyAm bmJzcDtVSU5UOCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtEYXRhW0lQTUlfT0VNX0JMT0JfTUFY X0RBVEFfUEVSX1BBQ0tFVF07PGJyPg0KK30gSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfV1JJVEVf TUVUQV9TRU5EX0RBVEE7PGJyPg0KKzxicj4NCisjZGVmaW5lIElQTUlfQkxPQl9UUkFOU0ZFUl9C TE9CX1dSSVRFX01FVEFfUkVTUE9OU0UgJm5ic3A7TlVMTDxicj4NCis8YnI+DQorI3ByYWdtYSBw YWNrKCk8YnI+DQorPGJyPg0KKy8qKjxicj4NCisgJm5ic3A7Q2FsY3VsYXRlIENSQy0xNi1DQ0lU VCB3aXRoIHBvbHkgb2YgMHgxMDIxPGJyPg0KKzxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJz cDtEYXRhICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSB0YXJnZXQgZGF0YS48YnI+DQorICZuYnNw O0BwYXJhbVtpbl0gJm5ic3A7RGF0YVNpemUgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHRhcmdldCBkYXRhIHNpemUuPGJyPg0KKzxicj4N CisgJm5ic3A7QHJldHVybiBVSU5UMTYgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIENSQzE2 IHZhbHVlLjxicj4NCis8YnI+DQorKiovPGJyPg0KK1VJTlQxNjxicj4NCitDYWxjdWxhdGVDcmMx NiAoPGJyPg0KKyAmbmJzcDtJTiBVSU5UOCAmbmJzcDsqRGF0YSw8YnI+DQorICZuYnNwO0lOIFVJ TlROICZuYnNwO0RhdGFTaXplPGJyPg0KKyAmbmJzcDspOzxicj4NCis8YnI+DQorRUZJX1NUQVRV Uzxicj4NCitJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKDxicj4NCisgJm5ic3A7SU4gJm5ic3A7 VUlOVDggJm5ic3A7Jm5ic3A7U3ViQ29tbWFuZCw8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJTlQ4 ICZuYnNwOyZuYnNwOypTZW5kRGF0YSw8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJTlQzMiAmbmJz cDtTZW5kRGF0YVNpemUsPGJyPg0KKyAmbmJzcDtPVVQgVUlOVDggJm5ic3A7Jm5ic3A7KlJlc3Bv bnNlRGF0YSw8YnI+DQorICZuYnNwO09VVCBVSU5UMzIgJm5ic3A7KlJlc3BvbnNlRGF0YVNpemU8 YnI+DQorICZuYnNwOyk7PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtvdXRd ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NvdW50ICZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBudW1iZXIgb2YgYWN0aXZlIGJsb2JzPGJy Pg0KKzxicj4NCisgJm5ic3A7QHJldHZhbCBFRklfU1VDQ0VTUyAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTdWNjZXNzZnVs bHkgcmV0cmlldmVkIHRoZSBudW1iZXIgb2YgYWN0aXZlIGJsb2JzLjxicj4NCisgJm5ic3A7QHJl dHZhbCBPdGhlciAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtB biBlcnJvciBvY2N1cnJlZDxicj4NCisqKi88YnI+DQorRUZJX1NUQVRVUzxicj4NCitJcG1pQmxv YlRyYW5zZmVyR2V0Q291bnQgKDxicj4NCisgJm5ic3A7T1VUIFVJTlQzMiAmbmJzcDsqQ291bnQ8 YnI+DQorICZuYnNwOyk7PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0g Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QmxvYkluZGV4 ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSAwLWJhc2VkIEluZGV4IG9m IHRoZSBibG9iIHRvIGVudW1lcmF0ZTxicj4NCisgJm5ic3A7QHBhcmFtW291dF0gJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QmxvYklkICZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBJRCBvZiB0aGUgYmxvYjxi cj4NCis8YnI+DQorICZuYnNwO0ByZXR2YWwgRUZJX1NVQ0NFU1MgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7U3VjY2Vzc2Z1bGx5IGVudW1lcmF0ZWQgdGhlIGJsb2IuPGJyPg0KKyAm bmJzcDtAcmV0dmFsIE90aGVyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0FuIGVycm9yIG9jY3VycmVkPGJyPg0KKyoq Lzxicj4NCitFRklfU1RBVFVTPGJyPg0KK0lwbWlCbG9iVHJhbnNmZXJFbnVtZXJhdGUgKDxicj4N CisgJm5ic3A7SU4gJm5ic3A7VUlOVDMyICZuYnNwO0Jsb2JJbmRleCw8YnI+DQorICZuYnNwO09V VCBDSEFSOCAmbmJzcDsmbmJzcDsqQmxvYklkPGJyPg0KKyAmbmJzcDspOzxicj4NCis8YnI+DQor LyoqPGJyPg0KKyAmbmJzcDtAcGFyYW1baW5dICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JJZCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgSUQgb2YgdGhlIGJsb2IgdG8gb3Blbjxicj4NCisg Jm5ic3A7QHBhcmFtW2luXSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDtGbGFncyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtGbGFncyB0byBjb250cm9sIGhvdyB0aGUgYmxvYiBpcyBvcGVuZWQ8 YnI+DQorICZuYnNwO0BwYXJhbVtvdXRdICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO1Nlc3Npb25JZCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtB IHVuaXF1ZSBzZXNzaW9uIGlkZW50aWZpZXI8YnI+DQorPGJyPg0KKyAmbmJzcDtAcmV0dmFsIEVG SV9TVUNDRVNTICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1N1Y2Nlc3NmdWxseSBv cGVuZWQgdGhlIGJsb2IuPGJyPg0KKyAmbmJzcDtAcmV0dmFsIE90aGVyICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Fu IGVycm9yIG9jY3VycmVkPGJyPg0KKyoqLzxicj4NCitFRklfU1RBVFVTPGJyPg0KK0lwbWlCbG9i VHJhbnNmZXJPcGVuICg8YnI+DQorICZuYnNwO0lOICZuYnNwO0NIQVI4ICZuYnNwOyZuYnNwOypC bG9iSWQsPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5UMTYgJm5ic3A7RmxhZ3MsPGJyPg0KKyAm bmJzcDtPVVQgVUlOVDE2ICZuYnNwOypTZXNzaW9uSWQ8YnI+DQorICZuYnNwOyk7PGJyPg0KKzxi cj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2Vzc2lvbklkICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwO1RoZSBzZXNzaW9uIElEIHJldHVybmVkIGZyb20gYSBjYWxsIHRvIEJsb2JP cGVuPGJyPg0KKyAmbmJzcDtAcGFyYW1baW5dICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwO09mZnNldCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgb2Zmc2V0IG9mIHRoZSBibG9iIGZyb20gd2hpY2gg dG8gc3RhcnQgcmVhZGluZzxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXF1ZXN0ZWRTaXplICZuYnNwOyZuYnNw O1RoZSBsZW5ndGggb2YgZGF0YSB0byByZWFkPGJyPg0KKyAmbmJzcDtAcGFyYW1bb3V0XSAmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtEYXRhICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0RhdGEg cmVhZCBmcm9tIHRoZSBibG9iPGJyPg0KKzxicj4NCisgJm5ic3A7QHJldHZhbCBFRklfU1VDQ0VT UyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTdWNjZXNzZnVsbHkgcmVhZCBmcm9t IHRoZSBibG9iLjxicj4NCisgJm5ic3A7QHJldHZhbCBPdGhlciAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBbiBlcnJv ciBvY2N1cnJlZDxicj4NCisqKi88YnI+DQorRUZJX1NUQVRVUzxicj4NCitJcG1pQmxvYlRyYW5z ZmVyUmVhZCAoPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5UMTYgJm5ic3A7U2Vzc2lvbklkLDxi cj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDMyICZuYnNwO09mZnNldCw8YnI+DQorICZuYnNwO0lO ICZuYnNwO1VJTlQzMiAmbmJzcDtSZXF1ZXN0ZWRTaXplLDxicj4NCisgJm5ic3A7T1VUIFVJTlQ4 ICZuYnNwOyZuYnNwOypEYXRhPGJyPg0KKyAmbmJzcDspOzxicj4NCis8YnI+DQorLyoqPGJyPg0K KyAmbmJzcDtAcGFyYW1baW5dICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO1Nlc3Npb25JZCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtU aGUgc2Vzc2lvbiBJRCByZXR1cm5lZCBmcm9tIGEgY2FsbCB0byBCbG9iT3Blbjxicj4NCisgJm5i c3A7QHBhcmFtW2luXSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtPZmZzZXQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7VGhlIG9mZnNldCBvZiB0aGUgYmxvYiBmcm9tIHdoaWNoIHRvIHN0YXJ0IHdyaXRp bmc8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7RGF0YSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBIHBvaW50ZXIgdG8gdGhlIGRhdGEgdG8g d3JpdGU8YnI+DQorPGJyPg0KKyAmbmJzcDtAcmV0dmFsIEVGSV9TVUNDRVNTICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwO1N1Y2Nlc3NmdWxseSB3cm90ZSB0byB0aGUgYmxvYi48YnI+ DQorICZuYnNwO0ByZXR2YWwgT3RoZXIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QW4gZXJyb3Igb2NjdXJyZWQ8YnI+ DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorSXBtaUJsb2JUcmFuc2ZlcldyaXRlICg8YnI+ DQorICZuYnNwO0lOICZuYnNwO1VJTlQxNiAmbmJzcDtTZXNzaW9uSWQsPGJyPg0KKyAmbmJzcDtJ TiAmbmJzcDtVSU5UMzIgJm5ic3A7T2Zmc2V0LDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDgg Jm5ic3A7Jm5ic3A7KkRhdGEsPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5UMzIgJm5ic3A7V3Jp dGVMZW5ndGg8YnI+DQorICZuYnNwOyk7PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNwO0Bw YXJhbVtpbl0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 U2Vzc2lvbklkICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBz ZXNzaW9uIElEIHJldHVybmVkIGZyb20gYSBjYWxsIHRvIEJsb2JPcGVuPGJyPg0KKyAmbmJzcDtA cGFyYW1baW5dICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O0NvbW1pdERhdGFMZW5ndGggVGhlIGxlbmd0aCBvZiBkYXRhIHRvIGNvbW1pdCB0byB0aGUgYmxv Yjxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtDb21taXREYXRhICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwO0EgcG9pbnRlciB0byB0aGUgZGF0YSB0byBjb21taXQ8YnI+DQorPGJyPg0KKyAmbmJz cDtAcmV0dmFsIEVGSV9TVUNDRVNTICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1N1 Y2Nlc3NmdWwgY29tbWl0IHRvIHRoZSBibG9iLjxicj4NCisgJm5ic3A7QHJldHZhbCBPdGhlciAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDtBbiBlcnJvciBvY2N1cnJlZDxicj4NCisqKi88YnI+DQorRUZJX1NUQVRVUzxi cj4NCitJcG1pQmxvYlRyYW5zZmVyQ29tbWl0ICg8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJTlQx NiAmbmJzcDtTZXNzaW9uSWQsPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5UOCAmbmJzcDsmbmJz cDtDb21taXREYXRhTGVuZ3RoLDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDggJm5ic3A7Jm5i c3A7KkNvbW1pdERhdGE8YnI+DQorICZuYnNwOyk7PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZu YnNwO0BwYXJhbVtpbl0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7U2Vzc2lvbklkICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBz ZXNzaW9uIElEIHJldHVybmVkIGZyb20gYSBjYWxsIHRvIEJsb2JPcGVuPGJyPg0KKzxicj4NCisg Jm5ic3A7QHJldHZhbCBFRklfU1VDQ0VTUyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtUaGUgYmxvYiB3YXMgY2xvc2VkLjxicj4NCisgJm5ic3A7QHJldHZhbCBPdGhlciAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtBbiBlcnJvciBvY2N1cnJlZDxicj4NCisqKi88YnI+DQorRUZJX1NUQVRVUzxicj4NCitJ cG1pQmxvYlRyYW5zZmVyQ2xvc2UgKDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDE2ICZuYnNw O1Nlc3Npb25JZDxicj4NCisgJm5ic3A7KTs8YnI+DQorPGJyPg0KKy8qKjxicj4NCisgJm5ic3A7 QHBhcmFtW2luXSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtCbG9iSWQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7VGhlIEJsb2JJZCB0byBiZSBkZWxldGVkPGJyPg0KKzxicj4NCisgJm5ic3A7QHJldHZh bCBFRklfU1VDQ0VTUyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgYmxvYiB3 YXMgZGVsZXRlZC48YnI+DQorICZuYnNwO0ByZXR2YWwgT3RoZXIgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QW4gZXJy b3Igb2NjdXJyZWQ8YnI+DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorSXBtaUJsb2JUcmFu c2ZlckRlbGV0ZSAoPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtDSEFSOCAmbmJzcDsqQmxvYklkPGJy Pg0KKyAmbmJzcDspOzxicj4NCis8YnI+DQorLyoqPGJyPg0KKyAmbmJzcDtAcGFyYW1baW5dICZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JJZCAmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgQmxv YiBJRCB0byBnYXRoZXIgc3RhdGlzdGljcyBmb3I8YnI+DQorICZuYnNwO0BwYXJhbVtvdXRdICZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0Jsb2JTdGF0ZSAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYmxv Yjxicj4NCisgJm5ic3A7QHBhcmFtW291dF0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7U2l6ZSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTaXplIGluIGJ5dGVzIG9mIHRoZSBibG9iPGJyPg0K KyAmbmJzcDtAcGFyYW1bb3V0XSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtNZXRhZGF0YUxlbmd0aCAmbmJzcDtMZW5ndGggb2YgdGhlIG9wdGlvbmFsIG1ldGFkYXRh PGJyPg0KKyAmbmJzcDtAcGFyYW1bb3V0XSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDtNZXRhZGF0YSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtPcHRpb25hbCBibG9iLXNwZWNpZmljIG1ldGFkYXRhPGJyPg0KKzxicj4NCisgJm5ic3A7 QHJldHZhbCBFRklfU1VDQ0VTUyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUg YmxvYiBzdGF0aXN0aWNzIHdlcmUgc3VjY2Vzc2Z1bGx5IGdhdGhlcmVkLjxicj4NCisgJm5ic3A7 QHJldHZhbCBPdGhlciAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBbiBlcnJvciBvY2N1cnJlZDxicj4NCisqKi88YnI+ DQorRUZJX1NUQVRVUzxicj4NCitJcG1pQmxvYlRyYW5zZmVyU3RhdCAoPGJyPg0KKyAmbmJzcDtJ TiAmbmJzcDtDSEFSOCAmbmJzcDsmbmJzcDsqQmxvYklkLDxicj4NCisgJm5ic3A7T1VUIFVJTlQx NiAmbmJzcDsqQmxvYlN0YXRlLDxicj4NCisgJm5ic3A7T1VUIFVJTlQzMiAmbmJzcDsqU2l6ZSw8 YnI+DQorICZuYnNwO09VVCBVSU5UOCAmbmJzcDsmbmJzcDsqTWV0YWRhdGFMZW5ndGgsPGJyPg0K KyAmbmJzcDtPVVQgVUlOVDggJm5ic3A7Jm5ic3A7Kk1ldGFkYXRhPGJyPg0KKyAmbmJzcDspOzxi cj4NCis8YnI+DQorLyoqPGJyPg0KKyAmbmJzcDtAcGFyYW1baW5dICZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Nlc3Npb25JZCAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgSUQgb2YgdGhlIHNlc3Npb24gdG8gZ2F0aGVyIHN0YXRp c3RpY3MgZm9yPGJyPg0KKyAmbmJzcDtAcGFyYW1bb3V0XSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDtCbG9iU3RhdGUgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7VGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGJsb2I8YnI+DQorICZuYnNwO0BwYXJh bVtvdXRdICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NpemUgJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7U2l6ZSBpbiBieXRlcyBvZiB0aGUgYmxvYjxicj4NCisgJm5ic3A7QHBhcmFtW291dF0g Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TWV0YWRhdGFMZW5ndGgg Jm5ic3A7TGVuZ3RoIG9mIHRoZSBvcHRpb25hbCBtZXRhZGF0YTxicj4NCisgJm5ic3A7QHBhcmFt W291dF0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TWV0YWRhdGEg Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7T3B0aW9uYWwgYmxvYi1z cGVjaWZpYyBtZXRhZGF0YTxicj4NCis8YnI+DQorICZuYnNwO0ByZXR2YWwgRUZJX1NVQ0NFU1Mg Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGJsb2Igc3RhdGlzdGljcyB3ZXJl IHN1Y2Nlc3NmdWxseSBnYXRoZXJlZC48YnI+DQorICZuYnNwO0ByZXR2YWwgT3RoZXIgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7QW4gZXJyb3Igb2NjdXJyZWQ8YnI+DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQor SXBtaUJsb2JUcmFuc2ZlclNlc3Npb25TdGF0ICg8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJTlQx NiAmbmJzcDtTZXNzaW9uSWQsPGJyPg0KKyAmbmJzcDtPVVQgVUlOVDE2ICZuYnNwOypCbG9iU3Rh dGUsPGJyPg0KKyAmbmJzcDtPVVQgVUlOVDMyICZuYnNwOypTaXplLDxicj4NCisgJm5ic3A7T1VU IFVJTlQ4ICZuYnNwOyZuYnNwOypNZXRhZGF0YUxlbmd0aCw8YnI+DQorICZuYnNwO09VVCBVSU5U OCAmbmJzcDsmbmJzcDsqTWV0YWRhdGE8YnI+DQorICZuYnNwOyk7PGJyPg0KKzxicj4NCisvKio8 YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7U2Vzc2lvbklkICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwO1RoZSBJRCBvZiB0aGUgc2Vzc2lvbiB0byB3cml0ZSBtZXRhZGF0YSBmb3I8YnI+DQorICZu YnNwO0BwYXJhbVtpbl0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7T2Zmc2V0ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO1RoZSBvZmZzZXQgb2YgdGhlIG1ldGFkYXRhIHRvIHdyaXRlIHRvPGJyPg0KKyAm bmJzcDtAcGFyYW1baW5dICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwO0RhdGEgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGRhdGEgdG8gd3JpdGUgdG8gdGhlIG1ldGFkYXRhPGJy Pg0KKzxicj4NCisgJm5ic3A7QHJldHZhbCBFRklfU1VDQ0VTUyAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDtUaGUgYmxvYiBtZXRhZGF0YSB3YXMgc3VjY2Vzc2Z1bGx5IHdyaXR0ZW4u PGJyPg0KKyAmbmJzcDtAcmV0dmFsIE90aGVyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0FuIGVycm9yIG9jY3VycmVk PGJyPg0KKyoqLzxicj4NCitFRklfU1RBVFVTPGJyPg0KK0lwbWlCbG9iVHJhbnNmZXJXcml0ZU1l dGEgKDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDE2ICZuYnNwO1Nlc3Npb25JZCw8YnI+DQor ICZuYnNwO0lOICZuYnNwO1VJTlQzMiAmbmJzcDtPZmZzZXQsPGJyPg0KKyAmbmJzcDtJTiAmbmJz cDtVSU5UOCAmbmJzcDsmbmJzcDsqRGF0YSw8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJTlQzMiAm bmJzcDtXcml0ZUxlbmd0aDxicj4NCisgJm5ic3A7KTs8YnI+DQpkaWZmIC0tZ2l0IGEvRmVhdHVy ZXMvTWFuYWdlYWJpbGl0eVBrZy9Vbml2ZXJzYWwvSXBtaUJsb2JUcmFuc2ZlckR4ZS9JcG1pQmxv YlRyYW5zZmVyRHhlLmMgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1p QmxvYlRyYW5zZmVyRHhlL0lwbWlCbG9iVHJhbnNmZXJEeGUuYzxicj4NCm5ldyBmaWxlIG1vZGUg MTAwNjQ0PGJyPg0KaW5kZXggMDAwMDAwMDAwMC4uOWU2NjMyODlkNTxicj4NCi0tLSAvZGV2L251 bGw8YnI+DQorKysgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtnL1VuaXZlcnNhbC9JcG1pQmxv YlRyYW5zZmVyRHhlL0lwbWlCbG9iVHJhbnNmZXJEeGUuYzxicj4NCkBAIC0wLDAgKzEsNzk5IEBA PGJyPg0KKy8qKiBAZmlsZTxicj4NCis8YnI+DQorICZuYnNwO0lQTUkgQmxvYiBUcmFuc2ZlciBk cml2ZXI8YnI+DQorPGJyPg0KKyAmbmJzcDtDb3B5cmlnaHQgKGMpIDIwMjItMjAyMywgTlZJRElB IENPUlBPUkFUSU9OICZhbXA7IEFGRklMSUFURVMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPGJyPg0K Kzxicj4NCisgJm5ic3A7U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRl bnQ8YnI+DQorPGJyPg0KKyoqLzxicj4NCisjaW5jbHVkZSAmbHQ7UHJvdG9jb2wvSXBtaUJsb2JU cmFuc2Zlci5oJmd0Ozxicj4NCis8YnI+DQorI2luY2x1ZGUgJnF1b3Q7SW50ZXJuYWxJcG1pQmxv YlRyYW5zZmVyLmgmcXVvdDs8YnI+DQorPGJyPg0KKyNkZWZpbmUgQkxPQl9UUkFOU0ZFUl9ERUJV RyAmbmJzcDswPGJyPg0KKzxicj4NCitTVEFUSUMgQ09OU1QgSVBNSV9CTE9CX1RSQU5TRkVSX1BS T1RPQ09MICZuYnNwO21JcG1pQmxvYlRyYW5zZmVyID0gezxicj4NCisgJm5ic3A7KElQTUlfQkxP Ql9UUkFOU0ZFUl9QUk9UT0NPTF9HRVRfQ09VTlQpKklwbWlCbG9iVHJhbnNmZXJHZXRDb3VudCw8 YnI+DQorICZuYnNwOyhJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfRU5VTUVSQVRFKSpJcG1p QmxvYlRyYW5zZmVyRW51bWVyYXRlLDxicj4NCisgJm5ic3A7KElQTUlfQkxPQl9UUkFOU0ZFUl9Q Uk9UT0NPTF9PUEVOKSpJcG1pQmxvYlRyYW5zZmVyT3Blbiw8YnI+DQorICZuYnNwOyhJUE1JX0JM T0JfVFJBTlNGRVJfUFJPVE9DT0xfUkVBRCkqSXBtaUJsb2JUcmFuc2ZlclJlYWQsPGJyPg0KKyAm bmJzcDsoSVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX1dSSVRFKSpJcG1pQmxvYlRyYW5zZmVy V3JpdGUsPGJyPg0KKyAmbmJzcDsoSVBNSV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX0NPTU1JVCkq SXBtaUJsb2JUcmFuc2ZlckNvbW1pdCw8YnI+DQorICZuYnNwOyhJUE1JX0JMT0JfVFJBTlNGRVJf UFJPVE9DT0xfQ0xPU0UpKklwbWlCbG9iVHJhbnNmZXJDbG9zZSw8YnI+DQorICZuYnNwOyhJUE1J X0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfREVMRVRFKSpJcG1pQmxvYlRyYW5zZmVyRGVsZXRlLDxi cj4NCisgJm5ic3A7KElQTUlfQkxPQl9UUkFOU0ZFUl9QUk9UT0NPTF9TVEFUKSpJcG1pQmxvYlRy YW5zZmVyU3RhdCw8YnI+DQorICZuYnNwOyhJUE1JX0JMT0JfVFJBTlNGRVJfUFJPVE9DT0xfU0VT U0lPTl9TVEFUKSpJcG1pQmxvYlRyYW5zZmVyU2Vzc2lvblN0YXQsPGJyPg0KKyAmbmJzcDsoSVBN SV9CTE9CX1RSQU5TRkVSX1BST1RPQ09MX1dSSVRFX01FVEEpKklwbWlCbG9iVHJhbnNmZXJXcml0 ZU1ldGE8YnI+DQorfTs8YnI+DQorPGJyPg0KK2NvbnN0IFVJTlQ4ICZuYnNwO09wZW5CbWNPZW5b XSA9IHsgMHhDRiwgMHhDMiwgMHgwMCB9OyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvLyBPcGVuQk1DIE9FTiBjb2RlIGluIGxpdHRsZSBlbmRp YW4gZm9ybWF0PGJyPg0KPC9ibG9ja3F1b3RlPg0KPGJyIHN0eWxlPSJjYXJldC1jb2xvcjogcmdi KDAsIDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBmb250LXNpemU6IDEycHg7IGZvbnQt c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQw MDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50 OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNw YWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRp b246IG5vbmU7Ij4NCjxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBmb250 LWZhbWlseTogSGVsdmV0aWNhOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsg Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNp bmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJh bnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdl YmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZsb2F0 OiBub25lOyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsiPkkNCiBkb27igJl0IGtub3cgd2hh dCDigJxPZW7igJ0gbWVhbnMuIFNob3VsZCBpdCBiZSDigJxPZW3igJ0gb3Ig4oCcSUFOQeKAnSBu dW1iZXI/PC9zcGFuPjxiciBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1m YW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZv bnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5n OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z Zm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJr aXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQo8YnIg c3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7 IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczog bm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFs aWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRl LXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdp ZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KPHNwYW4gc3R5bGU9ImNhcmV0LWNv bG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJw eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdl aWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7 IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQt ZGVjb3JhdGlvbjogbm9uZTsgZmxvYXQ6IG5vbmU7IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50 OyI+QW5kDQogdGhpcyBudW1iZXIgY2FuIGJlIGNvbmZpZ3VyZWQsIG90aGVyIE9FTXMgd2lsbCBo YXZlIHRoZWlyIG93biBudW1iZXIuPC9zcGFuPjxiciBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigw LCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0 eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7 IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDog MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFj aW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9u OiBub25lOyI+DQo8YnIgc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFt aWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250 LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzog bm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zv cm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0 LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KPHNwYW4g c3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7 IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczog bm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFs aWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRl LXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdp ZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZmxvYXQ6IG5vbmU7IGRpc3BsYXk6IGlu bGluZSAhaW1wb3J0YW50OyI+VGhpcw0KIG51bWJlciBzaG91bGQgYmUgcHJvdmlkZWQgYnkgZHJp dmVycyB0aGF0IGNvbnN1bWUgdGhpcyBwcm90b2NvbDwvc3Bhbj48YnIgc3R5bGU9ImNhcmV0LWNv bG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJw eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdl aWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7 IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQt ZGVjb3JhdGlvbjogbm9uZTsiPg0KPC9kaXY+DQo8L2Jsb2NrcXVvdGU+DQpUaGlzIGNvbW1pdCB1 c2VzIE9wZW5CTUMgSVBNSSBibG9iIGNvbW1hbmRzIGRlZmluZWQgaW4mbmJzcDs8YSBocmVmPSJo dHRwczovL2dpdGh1Yi5jb20vb3BlbmJtYy9waG9zcGhvci1pcG1pLWJsb2JzIj5odHRwczovL2dp dGh1Yi5jb20vb3BlbmJtYy9waG9zcGhvci1pcG1pLWJsb2JzPC9hPiZuYnNwO3doaWNoIGFyZSBm aXhlZCBudW1iZXJzLiBTbywgbm8gcHJvYmxlbSB0byBoYXZlIGZpeGVkIGRlZmluaXRpb24uPGJy Pg0KPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+DQo8ZGl2PjxiciBzdHlsZT0iY2FyZXQtY29sb3I6 IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBm b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0 OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWlu ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29y ZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNv cmF0aW9uOiBub25lOyI+DQo8YmxvY2txdW90ZSB0eXBlPSJjaXRlIiBzdHlsZT0iZm9udC1mYW1p bHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQt dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu b3JtYWw7IG9ycGhhbnM6IGF1dG87IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiBhdXRv OyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0 LWRlY29yYXRpb246IG5vbmU7Ij4NCis8YnI+DQorLyoqPGJyPg0KKyAmbmJzcDtDYWxjdWxhdGUg Q1JDLTE2LUNDSVRUIHdpdGggcG9seSBvZiAweDEwMjE8YnI+DQorPGJyPg0KKyAmbmJzcDtAcGFy YW1baW5dICZuYnNwO0RhdGEgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHRhcmdldCBkYXRhLjxi cj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJzcDtEYXRhU2l6ZSAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgdGFyZ2V0IGRhdGEgc2l6ZS48 YnI+DQorPGJyPg0KKyAmbmJzcDtAcmV0dXJuIFVJTlQxNiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtUaGUgQ1JDMTYgdmFsdWUuPGJyPg0KKzxicj4NCisqKi88YnI+DQorVUlOVDE2PGJyPg0KK0Nh bGN1bGF0ZUNyYzE2ICg8YnI+DQorICZuYnNwO0lOIFVJTlQ4ICZuYnNwOypEYXRhLDxicj4NCisg Jm5ic3A7SU4gVUlOVE4gJm5ic3A7RGF0YVNpemU8YnI+DQorICZuYnNwOyk8YnI+DQorezxicj4N CisgJm5ic3A7VUlOVE4gJm5ic3A7Jm5ic3A7Jm5ic3A7SW5kZXg7PGJyPg0KKyAmbmJzcDtVSU5U TiAmbmJzcDsmbmJzcDsmbmJzcDtCaXRJbmRleDs8YnI+DQorICZuYnNwO1VJTlQxNiAmbmJzcDsm bmJzcDtDcmMgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSAweEZGRkY7PGJyPg0KKyAmbmJzcDtV SU5UMTYgJm5ic3A7Jm5ic3A7UG9seSAmbmJzcDsmbmJzcDsmbmJzcDs9IDB4MTAyMTs8YnI+DQor ICZuYnNwO0JPT0xFQU4gJm5ic3A7WG9yRmxhZyA9IEZBTFNFOzxicj4NCis8YnI+DQorICZuYnNw O2ZvciAoSW5kZXggPSAwOyBJbmRleCAmbHQ7IChEYXRhU2l6ZSArIDIpOyArK0luZGV4KSB7PGJy Pg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtmb3IgKEJpdEluZGV4ID0gMDsgQml0SW5kZXggJmx0OyA4 OyArK0JpdEluZGV4KSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtYb3JG bGFnID0gKENyYyAmYW1wOyAweDgwMDApID8gVFJVRSA6IEZBTFNFOzxicj4NCisgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q3JjICZuYnNwOyZuYnNwOyZsdDsmbHQ7PSAxOzxicj4NCisg Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7aWYgKChJbmRleCAmbHQ7IERhdGFTaXplKSAm YW1wOyZhbXA7IChEYXRhW0luZGV4XSAmYW1wOyAoMSAmbHQ7Jmx0OyAoNyAtIEJpdEluZGV4KSkp KSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDcmMr Kzs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO308YnI+DQorPGJyPg0KKyAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtpZiAoWG9yRmxhZyA9PSBUUlVFKSB7PGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDcmMgXj0gUG9seTs8 YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO308YnI+DQorICZuYnNwOyZuYnNw OyZuYnNwO308YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAjaWYgQkxPQl9UUkFOU0ZFUl9E RUJVRzxicj4NCisgJm5ic3A7REVCVUcgKChERUJVR19JTkZPLCAmcXVvdDslYTogQ1JDLTE2LUND SVRUICV4XG4mcXVvdDssIF9fRlVOQ1RJT05fXywgQ3JjKSk7PGJyPg0KKyAjZW5kaWY8YnI+DQor PGJyPg0KKyAmbmJzcDtyZXR1cm4gQ3JjOzxicj4NCit9PGJyPg0KKzxicj4NCitFRklfU1RBVFVT PGJyPg0KK0lwbWlCbG9iVHJhbnNmZXJTZW5kSXBtaSAoPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtV SU5UOCAmbmJzcDsmbmJzcDtTdWJDb21tYW5kLDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDgg Jm5ic3A7Jm5ic3A7KlNlbmREYXRhLDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDMyICZuYnNw O1NlbmREYXRhU2l6ZSw8YnI+DQorICZuYnNwO09VVCBVSU5UOCAmbmJzcDsmbmJzcDsqUmVzcG9u c2VEYXRhLDxicj4NCisgJm5ic3A7T1VUIFVJTlQzMiAmbmJzcDsqUmVzcG9uc2VEYXRhU2l6ZTxi cj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAmbmJzcDtFRklfU1RBVFVTICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1N0YXR1czs8YnI+DQorICZuYnNwO1VJTlQ4ICZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO0NvbXBsZXRpb25Db2RlOzxicj4NCisgJm5ic3A7VUlOVDE2ICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0NyYzs8 YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO09lblszXTs8YnI+DQorICZuYnNwO1VJTlQ4 ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOypJcG1pU2VuZERhdGE7PGJyPg0KKyAmbmJzcDtVSU5UMzIgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7SXBt aVNlbmREYXRhU2l6ZTs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypJcG1pUmVzcG9u c2VEYXRhOzxicj4NCisgJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1vZGlmaWVkUmVzcG9uc2VE YXRhOzxicj4NCisgJm5ic3A7VUlOVDMyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0lwbWlSZXNwb25zZURhdGFTaXplOzxicj4N CisgJm5ic3A7SVBNSV9CTE9CX1RSQU5TRkVSX0hFQURFUiAmbmJzcDtIZWFkZXI7PGJyPg0KKzxi cj4NCisgJm5ic3A7Q3JjID0gMDs8YnI+DQorPGJyPg0KKyAmbmJzcDsvLzxicj4NCisgJm5ic3A7 Ly8gUHJlcGVuZCB0aGUgcHJvcGVyIGhlYWRlciB0byB0aGUgU2VuZERhdGE8YnI+DQorICZuYnNw Oy8vPGJyPg0KKyAmbmJzcDtJcG1pU2VuZERhdGFTaXplID0gKHNpemVvZiAoSVBNSV9CTE9CX1RS QU5TRkVSX0hFQURFUikpOzxicj4NCisgJm5ic3A7aWYgKFNlbmREYXRhU2l6ZSkgezxicj4NCisg Jm5ic3A7Jm5ic3A7Jm5ic3A7SXBtaVNlbmREYXRhU2l6ZSArPSBzaXplb2YgKENyYykgKyAoc2l6 ZW9mIChVSU5UOCkgKiBTZW5kRGF0YVNpemUpOzxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQor ICZuYnNwO0lwbWlTZW5kRGF0YSA9IEFsbG9jYXRlWmVyb1Bvb2wgKElwbWlTZW5kRGF0YVNpemUp Ozxicj4NCisgJm5ic3A7aWYgKElwbWlTZW5kRGF0YSA9PSBOVUxMKSB7PGJyPg0KKyAmbmJzcDsm bmJzcDsmbmJzcDtyZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7PGJyPg0KKyAmbmJzcDt9PGJy Pg0KKzxicj4NCisgJm5ic3A7SGVhZGVyLk9FTlswXSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs9 IE9wZW5CbWNPZW5bMF07PGJyPg0KKyAmbmJzcDtIZWFkZXIuT0VOWzFdICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOz0gT3BlbkJtY09lblsxXTs8YnI+DQorICZuYnNwO0hlYWRlci5PRU5bMl0gJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSBPcGVuQm1jT2VuWzJdOzxicj4NCisgJm5ic3A7SGVhZGVy LlN1YkNvbW1hbmQgPSBTdWJDb21tYW5kOzxicj4NCisgJm5ic3A7Q29weU1lbSAoSXBtaVNlbmRE YXRhLCAmYW1wO0hlYWRlciwgc2l6ZW9mIChJUE1JX0JMT0JfVFJBTlNGRVJfSEVBREVSKSk7PGJy Pg0KKyAmbmJzcDtpZiAoU2VuZERhdGFTaXplKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsv Lzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Ly8gQ2FsY3VsYXRlIHRoZSBDcmMgb2YgdGhlIHNl bmQgZGF0YTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Ly88YnI+DQorICZuYnNwOyZuYnNwOyZu YnNwO0NyYyA9IENhbGN1bGF0ZUNyYzE2IChTZW5kRGF0YSwgU2VuZERhdGFTaXplKTs8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwO0NvcHlNZW0gKElwbWlTZW5kRGF0YSArIHNpemVvZiAoSVBNSV9C TE9CX1RSQU5TRkVSX0hFQURFUiksICZhbXA7Q3JjLCBzaXplb2YgKFVJTlQxNikpOzxicj4NCisg Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29weU1lbSAoSXBtaVNlbmREYXRhICsgc2l6ZW9mIChJUE1JX0JM T0JfVFJBTlNGRVJfSEVBREVSKSArIHNpemVvZiAoVUlOVDE2KSwgU2VuZERhdGEsIFNlbmREYXRh U2l6ZSk7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisgI2lmIEJMT0JfVFJBTlNGRVJfREVC VUc8YnI+DQorICZuYnNwO0RFQlVHICgoREVCVUdfSU5GTywgJnF1b3Q7JWE6IElucHV0czpcbiZx dW90OywgX19GVU5DVElPTl9fKSk7PGJyPg0KKyAmbmJzcDtERUJVRyAoKERFQlVHX0lORk8sICZx dW90OyVhOiBTZW5kRGF0YVNpemU6ICUwMnhcbkRhdGE6ICZxdW90OywgX19GVU5DVElPTl9fLCBT ZW5kRGF0YVNpemUpKTs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwO2k7PGJyPg0KKyAmbmJzcDtm b3IgKGkgPSAwOyBpICZsdDsgU2VuZERhdGFTaXplOyBpKyspIHs8YnI+DQorICZuYnNwOyZuYnNw OyZuYnNwO0RFQlVHICgoREVCVUdfSU5GTywgJnF1b3Q7JTAyeCZxdW90OywgKigoVUlOVDggKilT ZW5kRGF0YSArIGkpKSk7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisgJm5ic3A7REVCVUcg KChERUJVR19JTkZPLCAmcXVvdDtcbiZxdW90OykpOzxicj4NCisgJm5ic3A7REVCVUcgKChERUJV R19JTkZPLCAmcXVvdDslYTogSXBtaVNlbmREYXRhU2l6ZTogJTAyeFxuRGF0YTogJnF1b3Q7LCBf X0ZVTkNUSU9OX18sIElwbWlTZW5kRGF0YVNpemUpKTs8YnI+DQorICZuYnNwO2ZvciAoaSA9IDA7 IGkgJmx0OyBJcG1pU2VuZERhdGFTaXplOyBpKyspIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNw O0RFQlVHICgoREVCVUdfSU5GTywgJnF1b3Q7JTAyeCZxdW90OywgKigoVUlOVDggKilJcG1pU2Vu ZERhdGEgKyBpKSkpOzxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwO0RFQlVHICgo REVCVUdfSU5GTywgJnF1b3Q7XG4mcXVvdDspKTs8YnI+DQorICNlbmRpZjxicj4NCis8YnI+DQor ICZuYnNwO0lwbWlSZXNwb25zZURhdGFTaXplID0gKCpSZXNwb25zZURhdGFTaXplICsgUFJPVE9D T0xfUkVTUE9OU0VfT1ZFUkhFQUQpOzxicj4NCisgJm5ic3A7Ly88YnI+DQorICZuYnNwOy8vIElm IGV4cGVjdGluZyBkYXRhIHRvIGJlIHJldHVybmVkLCB3ZSBoYXZlIHRvIGFsc28gYWNjb3VudCBm b3IgdGhlIDE2IGJpdCBDUkM8YnI+DQorICZuYnNwOy8vPGJyPg0KKyAmbmJzcDtpZiAoKlJlc3Bv bnNlRGF0YVNpemUpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO0lwbWlSZXNwb25zZURhdGFT aXplICs9IHNpemVvZiAoQ3JjKTs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtJ cG1pUmVzcG9uc2VEYXRhID0gQWxsb2NhdGVaZXJvUG9vbCAoSXBtaVJlc3BvbnNlRGF0YVNpemUp Ozxicj4NCisgJm5ic3A7aWYgKElwbWlSZXNwb25zZURhdGEgPT0gTlVMTCkgezxicj4NCisgJm5i c3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOzxicj4NCisgJm5ic3A7 fTxicj4NCis8YnI+DQorICZuYnNwO1N0YXR1cyA9IElwbWlTdWJtaXRDb21tYW5kICg8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwO0lQTUlfTkVURk5fT0VNLDxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7SVBN SV9PRU1fQkxPQl9UUkFOU0ZFUl9DTUQsPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsoVk9JRCAqKUlw bWlTZW5kRGF0YSw8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0lwbWlTZW5kRGF0YVNpemUsPGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsoVk9JRCAqKUlwbWlSZXNwb25zZURhdGEsPGJyPg0KKyAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmYW1wO0lwbWlSZXNwb25zZURhdGFTaXplPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsp Ozxicj4NCis8YnI+DQorICZuYnNwO0ZyZWVQb29sIChJcG1pU2VuZERhdGEpOzxicj4NCisgJm5i c3A7TW9kaWZpZWRSZXNwb25zZURhdGEgPSBJcG1pUmVzcG9uc2VEYXRhOzxicj4NCis8YnI+DQor ICNpZiBCTE9CX1RSQU5TRkVSX0RFQlVHPGJyPg0KKyAmbmJzcDtERUJVRyAoKERFQlVHX0lORk8s ICZxdW90OyVhOiBJUE1JIFJlc3BvbnNlOlxuJnF1b3Q7LCBfX0ZVTkNUSU9OX18pKTs8YnI+DQor ICZuYnNwO0RFQlVHICgoREVCVUdfSU5GTywgJnF1b3Q7JWE6IFJlc3BvbnNlRGF0YVNpemU6ICUw MnhcbkRhdGE6ICZxdW90OywgX19GVU5DVElPTl9fLCBJcG1pUmVzcG9uc2VEYXRhU2l6ZSkpOzxi cj4NCisgJm5ic3A7Zm9yIChpID0gMDsgaSAmbHQ7IElwbWlSZXNwb25zZURhdGFTaXplOyBpKysp IHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO0RFQlVHICgoREVCVUdfSU5GTywgJnF1b3Q7JTAy eCZxdW90OywgKihNb2RpZmllZFJlc3BvbnNlRGF0YSArIGkpKSk7PGJyPg0KKyAmbmJzcDt9PGJy Pg0KKzxicj4NCisgJm5ic3A7REVCVUcgKChERUJVR19JTkZPLCAmcXVvdDtcbiZxdW90OykpOzxi cj4NCisgI2VuZGlmPGJyPg0KKzxicj4NCisgJm5ic3A7aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIFN0YXR1czs8YnI+DQorICZuYnNwO308 YnI+DQorPGJyPg0KKyAmbmJzcDtDb21wbGV0aW9uQ29kZSA9ICpNb2RpZmllZFJlc3BvbnNlRGF0 YTs8YnI+DQorICZuYnNwO2lmIChDb21wbGV0aW9uQ29kZSAhPSBJUE1JX0NPTVBfQ09ERV9OT1JN QUwpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO0RFQlVHICgoREVCVUdfRVJST1IsICZxdW90 OyVhOiBSZXR1cm5pbmcgYmVjYXVzZSBDb21wbGV0aW9uQ29kZSA9IDB4JXhcbiZxdW90OywgX19G VU5DVElPTl9fLCBDb21wbGV0aW9uQ29kZSkpOzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7RnJl ZVBvb2wgKElwbWlSZXNwb25zZURhdGEpOzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJu IEVGSV9QUk9UT0NPTF9FUlJPUjs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDsv LyBTdHJpcCBjb21wbGV0aW9uIGNvZGUsIHdlIGFyZSBkb25lIHdpdGggaXQ8YnI+DQorICZuYnNw O01vZGlmaWVkUmVzcG9uc2VEYXRhICZuYnNwOz0gTW9kaWZpZWRSZXNwb25zZURhdGEgKyBzaXpl b2YgKENvbXBsZXRpb25Db2RlKTs8YnI+DQorICZuYnNwO0lwbWlSZXNwb25zZURhdGFTaXplIC09 IHNpemVvZiAoQ29tcGxldGlvbkNvZGUpOzxicj4NCis8YnI+DQorICZuYnNwOy8vIENoZWNrIE9F TiBjb2RlIGFuZCB2ZXJpZnkgaXQgbWF0Y2hlcyB0aGUgT3BlbkJNQyBPRU48YnI+DQorICZuYnNw O0NvcHlNZW0gKE9lbiwgTW9kaWZpZWRSZXNwb25zZURhdGEsIHNpemVvZiAoT3BlbkJtY09lbikp Ozxicj4NCisgJm5ic3A7aWYgKENvbXBhcmVNZW0gKE9lbiwgT3BlbkJtY09lbiwgc2l6ZW9mIChP cGVuQm1jT2VuKSkgIT0gMCkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7RnJlZVBvb2wgKElw bWlSZXNwb25zZURhdGEpOzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIEVGSV9QUk9U T0NPTF9FUlJPUjs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtpZiAoSXBtaVJl c3BvbnNlRGF0YVNpemUgPT0gc2l6ZW9mIChPcGVuQm1jT2VuKSkgezxicj4NCisgJm5ic3A7Jm5i c3A7Jm5ic3A7Ly88YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOy8vIEluIHRoaXMgY2FzZSwgdGhl cmUgd2FzIG5vIHJlc3BvbnNlIGRhdGEgc2VudC4gVGhpcyBpcyBub3QgYW4gZXJyb3IuPGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsvLyBTb21lIG1lc3NhZ2VzIGRvIG5vdCByZXF1aXJlIGEgcmVz cG9uc2UuPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsvLzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5i c3A7KlJlc3BvbnNlRGF0YVNpemUgPSAwOzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7RnJlZVBv b2wgKElwbWlSZXNwb25zZURhdGEpOzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIFN0 YXR1czs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOy8vIE5vdyB3ZSBuZWVkIHRvIHZhbGlkYXRl IHRoZSBDUkMgdGhlbiBzZW5kIHRoZSBSZXNwb25zZSBib2R5IGJhY2s8YnI+DQorICZuYnNwO30g ZWxzZSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsvLyBTdHJpcCB0aGUgT0VOLCB3ZSBhcmUg ZG9uZSB3aXRoIGl0IG5vdzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7TW9kaWZpZWRSZXNwb25z ZURhdGEgJm5ic3A7PSBNb2RpZmllZFJlc3BvbnNlRGF0YSArIHNpemVvZiAoT2VuKTs8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwO0lwbWlSZXNwb25zZURhdGFTaXplIC09IHNpemVvZiAoT2VuKTs8 YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOy8vIFRoZW4gdmFsaWRhdGUgdGhlIENyYzxicj4NCisg Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29weU1lbSAoJmFtcDtDcmMsIE1vZGlmaWVkUmVzcG9uc2VEYXRh LCBzaXplb2YgKENyYykpOzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7TW9kaWZpZWRSZXNwb25z ZURhdGEgJm5ic3A7PSBNb2RpZmllZFJlc3BvbnNlRGF0YSArIHNpemVvZiAoQ3JjKTs8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwO0lwbWlSZXNwb25zZURhdGFTaXplIC09IHNpemVvZiAoQ3JjKTs8 YnI+DQorPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtpZiAoQ3JjID09IENhbGN1bGF0ZUNyYzE2 IChNb2RpZmllZFJlc3BvbnNlRGF0YSwgSXBtaVJlc3BvbnNlRGF0YVNpemUpKSB7PGJyPg0KKyAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb3B5TWVtIChSZXNwb25zZURhdGEsIE1vZGlm aWVkUmVzcG9uc2VEYXRhLCBJcG1pUmVzcG9uc2VEYXRhU2l6ZSk7PGJyPg0KKyAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDtDb3B5TWVtIChSZXNwb25zZURhdGFTaXplLCAmYW1wO0lwbWlS ZXNwb25zZURhdGFTaXplLCBzaXplb2YgKElwbWlSZXNwb25zZURhdGFTaXplKSk7PGJyPg0KKyAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtGcmVlUG9vbCAoSXBtaVJlc3BvbnNlRGF0YSk7 PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZXR1cm4gRUZJX1NVQ0NFU1M7 PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDt9IGVsc2Ugezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7RnJlZVBvb2wgKElwbWlSZXNwb25zZURhdGEpOzxicj4NCisgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIEVGSV9DUkNfRVJST1I7PGJyPg0KKyAmbmJz cDsmbmJzcDsmbmJzcDt9PGJyPg0KKyAmbmJzcDt9PGJyPg0KK308YnI+DQorPGJyPg0KKy8qKjxi cj4NCisgJm5ic3A7QHBhcmFtW291dF0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Q291bnQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG51 bWJlciBvZiBhY3RpdmUgYmxvYnM8YnI+DQorPGJyPg0KKyAmbmJzcDtAcmV0dmFsIEVGSV9TVUND RVNTICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwO1RoZSBjb21tYW5kIGJ5dGUgc3RyZWFtIHdhcyBzdWNjZXNzZnVsbHkgc3Vi bWl0IHRvIHRoZSBkZXZpY2UgYW5kIGEgcmVzcG9uc2Ugd2FzIHN1Y2Nlc3NmdWxseSByZWNlaXZl ZC48YnI+DQorICZuYnNwO0ByZXR2YWwgRUZJX1BST1RPQ09MX0VSUk9SICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO1RoZSBJcG1pIGNvbW1hbmQgZmFpbGVkPGJyPg0KKyAmbmJzcDtAcmV0dmFsIEVG SV9DUkNfRVJST1IgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7VGhlIElwbWkgY29tbWFuZCByZXR1cm5lZCBhIGJhZCBjaGVja3N1bTxicj4NCisq Ki88YnI+DQorRUZJX1NUQVRVUzxicj4NCitJcG1pQmxvYlRyYW5zZmVyR2V0Q291bnQgKDxicj4N CisgJm5ic3A7T1VUIFVJTlQzMiAmbmJzcDsqQ291bnQ8YnI+DQorICZuYnNwOyk8YnI+DQorezxi cj4NCjwvYmxvY2txdW90ZT4NCjxiciBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsg Zm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3Jt YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z cGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7 IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+ DQo8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhl bHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFu dC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7 IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9u ZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1z dHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmbG9hdDogbm9uZTsgZGlz cGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5QbGVhc2UNCiBhZGQgdGhlIGFyZ3VtZW50IHZhbGlk YXRpb24gZm9yIGZ1bmN0aW9ucyB3aGljaCBleHBvc2UgZm9yIG90aGVyIGRyaXZlcnM8L3NwYW4+ PGJyIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0 aWNhOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNh cHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4 dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3 aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9r ZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij4NCjxiciBzdHlsZT0iY2FyZXQt Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAx MnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQt d2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0 ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1h bDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4 dC1kZWNvcmF0aW9uOiBub25lOyI+DQo8YnIgc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwg MCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTog bm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0 ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsg dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzog MHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9u ZTsiPg0KPGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiBIZWx2ZXRp Y2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw czogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBo YW5zOiBhdXRvOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu c2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogYXV0bzsgd29yZC1zcGFj aW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9u OiBub25lOyI+DQorICZuYnNwO0VGSV9TVEFUVVMgJm5ic3A7U3RhdHVzOzxicj4NCisgJm5ic3A7 VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KlJlc3BvbnNlRGF0YTs8 YnI+DQorICZuYnNwO1VJTlQzMiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXNwb25z ZURhdGFTaXplOzxicj4NCis8YnI+DQorICZuYnNwO1Jlc3BvbnNlRGF0YVNpemUgPSBzaXplb2Yg KElQTUlfQkxPQl9UUkFOU0ZFUl9HRVRfQ09VTlRfUkVTUE9OU0UpOzxicj4NCisgJm5ic3A7UmVz cG9uc2VEYXRhICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gQWxsb2NhdGVaZXJvUG9vbCAoUmVz cG9uc2VEYXRhU2l6ZSk7PGJyPg0KKyAmbmJzcDtpZiAoUmVzcG9uc2VEYXRhID09IE5VTEwpIHs8 YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzs8YnI+ DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVy U2VuZElwbWkgKElwbWlCbG9iVHJhbnNmZXJTdWJjb21tYW5kR2V0Q291bnQsIE5VTEwsIDAsIChV SU5UOCAqKVJlc3BvbnNlRGF0YSwgJmFtcDtSZXNwb25zZURhdGFTaXplKTs8YnI+DQorICZuYnNw O2lmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsqQ291 bnQgPSAoKElQTUlfQkxPQl9UUkFOU0ZFUl9HRVRfQ09VTlRfUkVTUE9OU0UgKilSZXNwb25zZURh dGEpLSZndDtCbG9iQ291bnQ7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisgJm5ic3A7RnJl ZVBvb2wgKFJlc3BvbnNlRGF0YSk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gU3RhdHVzOzxicj4NCit9 PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QmxvYkluZGV4ICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSAwLWJhc2VkIEluZGV4IG9mIHRoZSBibG9iIHRvIGVu dW1lcmF0ZTxicj4NCisgJm5ic3A7QHBhcmFtW291dF0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7QmxvYklkICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBJRCBvZiB0aGUgYmxvYjxicj4NCis8YnI+DQorICZu YnNwO0ByZXR2YWwgRUZJX1NVQ0NFU1MgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 U3VjY2Vzc2Z1bGx5IGVudW1lcmF0ZWQgdGhlIGJsb2IuPGJyPg0KKyAmbmJzcDtAcmV0dmFsIE90 aGVyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwO0FuIGVycm9yIG9jY3VycmVkPGJyPg0KKyoqLzxicj4NCitFRklfU1RB VFVTPGJyPg0KK0lwbWlCbG9iVHJhbnNmZXJFbnVtZXJhdGUgKDxicj4NCisgJm5ic3A7SU4gJm5i c3A7VUlOVDMyICZuYnNwO0Jsb2JJbmRleCw8YnI+DQorICZuYnNwO09VVCBDSEFSOCAmbmJzcDsm bmJzcDsqQmxvYklkPGJyPg0KKyAmbmJzcDspPGJyPg0KK3s8YnI+DQorICZuYnNwO0VGSV9TVEFU VVMgJm5ic3A7U3RhdHVzOzxicj4NCis8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwOypT ZW5kRGF0YTs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwOypSZXNwb25zZURhdGE7PGJy Pg0KKyAmbmJzcDtVSU5UMzIgJm5ic3A7U2VuZERhdGFTaXplOzxicj4NCisgJm5ic3A7VUlOVDMy ICZuYnNwO1Jlc3BvbnNlRGF0YVNpemU7PGJyPg0KKzxicj4NCisgJm5ic3A7aWYgKEJsb2JJZCA9 PSBOVUxMKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtBU1NFUlQgKEZBTFNFKTs8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBFRklfQUJPUlRFRDs8YnI+DQorICZuYnNwO308YnI+ DQorPGJyPg0KKyAmbmJzcDtSZXNwb25zZURhdGFTaXplID0gc2l6ZW9mIChJUE1JX0JMT0JfVFJB TlNGRVJfQkxPQl9FTlVNRVJBVEVfUkVTUE9OU0UpOzxicj4NCisgJm5ic3A7UmVzcG9uc2VEYXRh ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gQWxsb2NhdGVaZXJvUG9vbCAoUmVzcG9uc2VEYXRh U2l6ZSk7PGJyPg0KKyAmbmJzcDtpZiAoUmVzcG9uc2VEYXRhID09IE5VTEwpIHs8YnI+DQorICZu YnNwOyZuYnNwOyZuYnNwO3JldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzs8YnI+DQorICZuYnNw O308YnI+DQorPGJyPg0KKyAmbmJzcDsvLzxicj4NCisgJm5ic3A7Ly8gRm9ybWF0IHNlbmQgZGF0 YTxicj4NCisgJm5ic3A7Ly88YnI+DQorICZuYnNwO1NlbmREYXRhU2l6ZSA9IHNpemVvZiAoSVBN SV9CTE9CX1RSQU5TRkVSX0JMT0JfRU5VTUVSQVRFX1NFTkRfREFUQSk7PGJyPg0KKyAmbmJzcDtT ZW5kRGF0YSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs9IEFsbG9jYXRlWmVyb1Bvb2wgKFNlbmRE YXRhU2l6ZSk7PGJyPg0KKyAmbmJzcDtpZiAoU2VuZERhdGEgPT0gTlVMTCkgezxicj4NCisgJm5i c3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOzxicj4NCisgJm5ic3A7 fTxicj4NCis8YnI+DQorICZuYnNwOygoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfRU5VTUVSQVRF X1NFTkRfREFUQSAqKVNlbmREYXRhKS0mZ3Q7QmxvYkluZGV4ID0gQmxvYkluZGV4Ozxicj4NCis8 YnI+DQorICZuYnNwO1N0YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJTZW5kSXBtaSAoSXBtaUJsb2JU cmFuc2ZlclN1YmNvbW1hbmRFbnVtZXJhdGUsIFNlbmREYXRhLCBTZW5kRGF0YVNpemUsIChVSU5U OCAqKVJlc3BvbnNlRGF0YSwgJmFtcDtSZXNwb25zZURhdGFTaXplKTs8YnI+DQorICZuYnNwO2lm ICghRUZJX0VSUk9SIChTdGF0dXMpKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtBc2NpaVN0 ckNweVMgKEJsb2JJZCwgUmVzcG9uc2VEYXRhU2l6ZSwgKENIQVI4ICopUmVzcG9uc2VEYXRhKTs8 YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtGcmVlUG9vbCAoUmVzcG9uc2VEYXRh KTs8YnI+DQorICZuYnNwO3JldHVybiBTdGF0dXM7PGJyPg0KK308YnI+DQorPGJyPg0KKy8qKjxi cj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDtCbG9iSWQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIElEIG9mIHRoZSBibG9iIHRvIG9wZW48YnI+DQorICZuYnNw O0BwYXJhbVtpbl0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7RmxhZ3MgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7RmxhZ3MgdG8gY29udHJvbCBob3cgdGhlIGJsb2IgaXMgb3BlbmVkPGJyPg0K KyAmbmJzcDtAcGFyYW1bb3V0XSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtTZXNzaW9uSWQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSB1bmlx dWUgc2Vzc2lvbiBpZGVudGlmaWVyPGJyPg0KKzxicj4NCisgJm5ic3A7QHJldHZhbCBFRklfU1VD Q0VTUyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTdWNjZXNzZnVsbHkgb3BlbmVk IHRoZSBibG9iLjxicj4NCisgJm5ic3A7QHJldHZhbCBPdGhlciAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBbiBlcnJv ciBvY2N1cnJlZDxicj4NCisqKi88YnI+DQorRUZJX1NUQVRVUzxicj4NCitJcG1pQmxvYlRyYW5z ZmVyT3BlbiAoPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtDSEFSOCAmbmJzcDsmbmJzcDsqQmxvYklk LDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDE2ICZuYnNwO0ZsYWdzLDxicj4NCisgJm5ic3A7 T1VUIFVJTlQxNiAmbmJzcDsqU2Vzc2lvbklkPGJyPg0KKyAmbmJzcDspPGJyPg0KK3s8YnI+DQor ICZuYnNwO0VGSV9TVEFUVVMgJm5ic3A7U3RhdHVzOzxicj4NCisgJm5ic3A7VUlOVDggJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KlNlbmREYXRhOzxicj4NCisgJm5ic3A7VUlO VDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KlJlc3BvbnNlRGF0YTs8YnI+ DQorICZuYnNwO1VJTlQzMiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZW5kRGF0YVNp emU7PGJyPg0KKyAmbmJzcDtVSU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVz cG9uc2VEYXRhU2l6ZTs8YnI+DQorICZuYnNwO0NIQVI4ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOypCbG9iU2VhcmNoOzxicj4NCisgJm5ic3A7VUlOVDMyICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwO051bUJsb2JzOzxicj4NCisgJm5ic3A7VUlOVDE2ICZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwO0luZGV4Ozxicj4NCisgJm5ic3A7Qk9PTEVBTiAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtCbG9iRm91bmQ7PGJyPg0KKzxicj4NCisgJm5ic3A7Ly88YnI+DQor ICZuYnNwOy8vIEJlZm9yZSBvcGVuaW5nIGEgYmxvYiwgbmVlZCB0byBjaGVjayBpZiBpdCBleGlz dHM8YnI+DQorICZuYnNwOy8vPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVy R2V0Q291bnQgKCZhbXA7TnVtQmxvYnMpOzxicj4NCjwvYmxvY2txdW90ZT4NCjxiciBzdHlsZT0i Y2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1z aXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7 IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6 IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBw eDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQo8c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJn YigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250 LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1z cGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0 aW9uOiBub25lOyBmbG9hdDogbm9uZTsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Ij5JDQog dGhpbmsgaXQgc2hvdWxkIGJlIHJlbW92ZWQgYXMgdGhhdCB3aWxsIGR1cGxpY2F0ZSB3b3JrPC9z cGFuPjxiciBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhl bHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFu dC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7 IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9u ZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1z dHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQo8YnIgc3R5bGU9ImNh cmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6 ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBm b250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFy dDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBu b3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7 IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2Io MCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1z dHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAw OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6 IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3Bh Y2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVjb3JhdGlv bjogbm9uZTsgZmxvYXQ6IG5vbmU7IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+VGhlDQog ZHJpdmVycyB1c2luZyBJUE1JIGJsb2IgcHJvdG9jb2wgd2lsbCZuYnNwOyAmcXVvdDtnZXQgY291 bnQmcXVvdDsgdGhlbXNlbHZlcy48L3NwYW4+PGJyIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDAs IDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5 bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsg bGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAw cHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNp bmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRpb246 IG5vbmU7Ij4NCjxiciBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1p bHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQt dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu b3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9y bTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQt dGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQo8YmxvY2tx dW90ZSB0eXBlPSJjaXRlIiBzdHlsZT0iZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXpl OiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv bnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IGF1dG87IHRl eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg d2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiBhdXRvOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdl YmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ij4NCisg Jm5ic3A7aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSB8fCAoTnVtQmxvYnMgPT0gMCkpIHs8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwO2lmIChTdGF0dXMgPT0gRUZJX1VOU1VQUE9SVEVEKSB7PGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZXR1cm4gU3RhdHVzOzxicj4NCisgJm5i c3A7Jm5ic3A7Jm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO0RFQlVHICgo REVCVUdfRVJST1IsICZxdW90OyVhOiBDb3VsZCBub3QgZmluZCBhbnkgYmxvYnM6ICVyXG4mcXVv dDssIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtyZXR1 cm4gRUZJX05PVF9GT1VORDs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtCbG9i U2VhcmNoID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChDSEFSOCkgKiBJUE1JX09FTV9CTE9C X01BWF9EQVRBX1BFUl9QQUNLRVQpOzxicj4NCisgJm5ic3A7aWYgKEJsb2JTZWFyY2ggPT0gTlVM TCkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VT Ozxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwO0Jsb2JGb3VuZCA9IEZBTFNFOzxi cj4NCisgJm5ic3A7Zm9yIChJbmRleCA9IDA7IEluZGV4ICZsdDsgTnVtQmxvYnM7IEluZGV4Kysp IHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO1N0YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJFbnVt ZXJhdGUgKEluZGV4LCBCbG9iU2VhcmNoKTs8YnI+DQo8L2Jsb2NrcXVvdGU+DQo8c3BhbiBzdHls ZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9u dC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246 IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3Bh Y2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6 IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmbG9hdDogbm9uZTsgZGlzcGxheTogaW5saW5l ICFpbXBvcnRhbnQ7Ij50aGUNCiBzYW1lIGhlcmU8L3NwYW4+PGJyIHN0eWxlPSJjYXJldC1jb2xv cjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogSGVsdmV0aWNhOyBmb250LXNpemU6IDEycHg7 IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWln aHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQt aW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3 b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRl Y29yYXRpb246IG5vbmU7Ij4NCjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiIHN0eWxlPSJmb250LWZh bWlseTogSGVsdmV0aWNhOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6 IG5vcm1hbDsgb3JwaGFuczogYXV0bzsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAw cHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IGF1 dG87IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRl eHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtpZiAoKCFFRklfRVJS T1IgKFN0YXR1cykpICZhbXA7JmFtcDsgKEFzY2lpU3RyQ21wIChCbG9iU2VhcmNoLCBCbG9iSWQp ID09IDApKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtCbG9iRm91bmQg PSBUUlVFOzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7YnJlYWs7PGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDt9IGVsc2Ugezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Y29udGludWU7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDt9PGJyPg0KKyAmbmJz cDt9PGJyPg0KKzxicj4NCisgJm5ic3A7aWYgKCFCbG9iRm91bmQpIHs8YnI+DQorICZuYnNwOyZu YnNwOyZuYnNwO0RFQlVHICgoREVCVUdfRVJST1IsICZxdW90OyVhOiBDb3VsZCBub3QgZmluZCBh IGJsb2IgdGhhdCBtYXRjaGVzICVzXG4mcXVvdDssIF9fRlVOQ1RJT05fXywgQmxvYklkKSk7PGJy Pg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtGcmVlUG9vbCAoQmxvYlNlYXJjaCk7PGJyPg0KKyAmbmJz cDsmbmJzcDsmbmJzcDtyZXR1cm4gRUZJX05PVF9GT1VORDs8YnI+DQorICZuYnNwO308YnI+DQor PGJyPg0KKyAmbmJzcDtSZXNwb25zZURhdGFTaXplID0gc2l6ZW9mIChJUE1JX0JMT0JfVFJBTlNG RVJfQkxPQl9PUEVOX1JFU1BPTlNFKTs8YnI+DQorICZuYnNwO1Jlc3BvbnNlRGF0YSAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDs9IEFsbG9jYXRlWmVyb1Bvb2wgKFJlc3BvbnNlRGF0YVNpemUpOzxi cj4NCisgJm5ic3A7aWYgKFJlc3BvbnNlRGF0YSA9PSBOVUxMKSB7PGJyPg0KKyAmbmJzcDsmbmJz cDsmbmJzcDtyZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7PGJyPg0KKyAmbmJzcDt9PGJyPg0K Kzxicj4NCisgJm5ic3A7Ly88YnI+DQorICZuYnNwOy8vIEZvcm1hdCBzZW5kIGRhdGE8YnI+DQor ICZuYnNwOy8vPGJyPg0KKyAmbmJzcDtTZW5kRGF0YVNpemUgPSBzaXplb2YgKCgoSVBNSV9CTE9C X1RSQU5TRkVSX0JMT0JfT1BFTl9TRU5EX0RBVEEgKilTZW5kRGF0YSktJmd0O0ZsYWdzKSArICgo QXNjaWlTdHJMZW4gKEJsb2JJZCkpICogc2l6ZW9mIChDSEFSOCkpICsgc2l6ZW9mIChDSEFSOCk7 PGJyPg0KKyAmbmJzcDtTZW5kRGF0YSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs9IEFsbG9jYXRl WmVyb1Bvb2wgKFNlbmREYXRhU2l6ZSk7PGJyPg0KKyAmbmJzcDtpZiAoU2VuZERhdGEgPT0gTlVM TCkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VT Ozxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwO0FzY2lpU3RyQ3B5UyAoKChJUE1J X0JMT0JfVFJBTlNGRVJfQkxPQl9PUEVOX1NFTkRfREFUQSAqKVNlbmREYXRhKS0mZ3Q7QmxvYklk LCBBc2NpaVN0clNpemUgKEJsb2JJZCkgLyBzaXplb2YgKENIQVI4KSwgQmxvYklkKTs8YnI+DQor ICZuYnNwOygoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfT1BFTl9TRU5EX0RBVEEgKilTZW5kRGF0 YSktJmd0O0ZsYWdzID0gRmxhZ3M7PGJyPg0KKyAmbmJzcDsvLyBhcHBlbmQgbnVsbCBjaGFyIHRv IFNlbmREYXRhPGJyPg0KKyAmbmJzcDtTZW5kRGF0YVtTZW5kRGF0YVNpemUtMV0gPSAwOzxicj4N Cis8YnI+DQorICZuYnNwO1N0YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJTZW5kSXBtaSAoSXBtaUJs b2JUcmFuc2ZlclN1YmNvbW1hbmRPcGVuLCBTZW5kRGF0YSwgU2VuZERhdGFTaXplLCAoVUlOVDgg KilSZXNwb25zZURhdGEsICZhbXA7UmVzcG9uc2VEYXRhU2l6ZSk7PGJyPg0KKyAmbmJzcDtpZiAo IUVGSV9FUlJPUiAoU3RhdHVzKSkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7KlNlc3Npb25J ZCA9ICgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfT1BFTl9SRVNQT05TRSAqKVJlc3BvbnNlRGF0 YSktJmd0O1Nlc3Npb25JZDs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtGcmVl UG9vbCAoUmVzcG9uc2VEYXRhKTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChTZW5kRGF0YSk7PGJy Pg0KKyAmbmJzcDtGcmVlUG9vbCAoQmxvYlNlYXJjaCk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gU3Rh dHVzOzxicj4NCit9PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2Vzc2lvbklkICZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBzZXNzaW9uIElEIHJldHVybmVk IGZyb20gYSBjYWxsIHRvIEJsb2JPcGVuPGJyPg0KKyAmbmJzcDtAcGFyYW1baW5dICZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO09mZnNldCAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgb2Zmc2V0IG9m IHRoZSBibG9iIGZyb20gd2hpY2ggdG8gc3RhcnQgcmVhZGluZzxicj4NCisgJm5ic3A7QHBhcmFt W2luXSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtSZXF1 ZXN0ZWRTaXplICZuYnNwOyZuYnNwO1RoZSBsZW5ndGggb2YgZGF0YSB0byByZWFkPGJyPg0KKyAm bmJzcDtAcGFyYW1bb3V0XSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtEYXRhICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwO0RhdGEgcmVhZCBmcm9tIHRoZSBibG9iPGJyPg0KKzxicj4NCisgJm5i c3A7QHJldHZhbCBFRklfU1VDQ0VTUyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtT dWNjZXNzZnVsbHkgcmVhZCBmcm9tIHRoZSBibG9iLjxicj4NCisgJm5ic3A7QHJldHZhbCBPdGhl ciAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDtBbiBlcnJvciBvY2N1cnJlZDxicj4NCisqKi88YnI+DQorRUZJX1NUQVRV Uzxicj4NCitJcG1pQmxvYlRyYW5zZmVyUmVhZCAoPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5U MTYgJm5ic3A7U2Vzc2lvbklkLDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDMyICZuYnNwO09m ZnNldCw8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJTlQzMiAmbmJzcDtSZXF1ZXN0ZWRTaXplLDxi cj4NCisgJm5ic3A7T1VUIFVJTlQ4ICZuYnNwOyZuYnNwOypEYXRhPGJyPg0KKyAmbmJzcDspPGJy Pg0KK3s8YnI+DQorICZuYnNwO0VGSV9TVEFUVVMgJm5ic3A7U3RhdHVzOzxicj4NCisgJm5ic3A7 VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KlNlbmREYXRhOzxicj4N CisgJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KlJlc3Bv bnNlRGF0YTs8YnI+DQorICZuYnNwO1VJTlQzMiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtTZW5kRGF0YVNpemU7PGJyPg0KKyAmbmJzcDtVSU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7UmVzcG9uc2VEYXRhU2l6ZTs8YnI+DQorPGJyPg0KKyAmbmJzcDtpZiAoRGF0YSA9 PSBOVUxMKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtBU1NFUlQgKEZBTFNFKTs8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBFRklfQUJPUlRFRDs8YnI+DQorICZuYnNwO308YnI+ DQorPGJyPg0KKyAmbmJzcDtSZXNwb25zZURhdGFTaXplID0gUmVxdWVzdGVkU2l6ZSAqIHNpemVv ZiAoVUlOVDgpOzxicj4NCisgJm5ic3A7UmVzcG9uc2VEYXRhICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOz0gQWxsb2NhdGVaZXJvUG9vbCAoUmVzcG9uc2VEYXRhU2l6ZSk7PGJyPg0KKyAmbmJzcDtp ZiAoUmVzcG9uc2VEYXRhID09IE5VTEwpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVy biBFRklfT1VUX09GX1JFU09VUkNFUzs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJz cDsvLzxicj4NCisgJm5ic3A7Ly8gRm9ybWF0IHNlbmQgZGF0YTxicj4NCisgJm5ic3A7Ly88YnI+ DQorICZuYnNwO1NlbmREYXRhU2l6ZSA9IHNpemVvZiAoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0Jf UkVBRF9TRU5EX0RBVEEpOzxicj4NCisgJm5ic3A7U2VuZERhdGEgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7PSBBbGxvY2F0ZVplcm9Qb29sIChTZW5kRGF0YVNpemUpOzxicj4NCisgJm5ic3A7aWYg KFNlbmREYXRhID09IE5VTEwpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBFRklf T1VUX09GX1JFU09VUkNFUzs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDsoKElQ TUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1JFQURfU0VORF9EQVRBICopU2VuZERhdGEpLSZndDtTZXNz aW9uSWQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSBTZXNzaW9uSWQ7PGJyPg0KKyAmbmJzcDso KElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1JFQURfU0VORF9EQVRBICopU2VuZERhdGEpLSZndDtP ZmZzZXQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSBPZmZzZXQ7 PGJyPg0KKyAmbmJzcDsoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1JFQURfU0VORF9EQVRBICop U2VuZERhdGEpLSZndDtSZXF1ZXN0ZWRTaXplID0gUmVxdWVzdGVkU2l6ZTs8YnI+DQorPGJyPg0K KyAmbmJzcDtTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKElwbWlCbG9iVHJhbnNm ZXJTdWJjb21tYW5kUmVhZCwgU2VuZERhdGEsIFNlbmREYXRhU2l6ZSwgKFVJTlQ4ICopUmVzcG9u c2VEYXRhLCAmYW1wO1Jlc3BvbnNlRGF0YVNpemUpOzxicj4NCisgJm5ic3A7aWYgKCFFRklfRVJS T1IgKFN0YXR1cykpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO0NvcHlNZW0gKERhdGEsICgo SVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfUkVBRF9SRVNQT05TRSAqKVJlc3BvbnNlRGF0YSktJmd0 O0RhdGEsIFJlc3BvbnNlRGF0YVNpemUgKiBzaXplb2YgKFVJTlQ4KSk7PGJyPg0KKyAmbmJzcDt9 PGJyPg0KKzxicj4NCisgJm5ic3A7RnJlZVBvb2wgKFJlc3BvbnNlRGF0YSk7PGJyPg0KKyAmbmJz cDtGcmVlUG9vbCAoU2VuZERhdGEpOzxicj4NCisgJm5ic3A7cmV0dXJuIFN0YXR1czs8YnI+DQor fTxicj4NCis8YnI+DQorLyoqPGJyPg0KKyAmbmJzcDtAcGFyYW1baW5dICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Nlc3Npb25JZCAmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgc2Vzc2lvbiBJRCByZXR1cm5lZCBmcm9tIGEgY2Fs bCB0byBCbG9iT3Blbjxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtPZmZzZXQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG9mZnNldCBvZiB0aGUgYmxvYiBm cm9tIHdoaWNoIHRvIHN0YXJ0IHdyaXRpbmc8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RGF0YSAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtB IHBvaW50ZXIgdG8gdGhlIGRhdGEgdG8gd3JpdGU8YnI+DQorPGJyPg0KKyAmbmJzcDtAcmV0dmFs IEVGSV9TVUNDRVNTICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1N1Y2Nlc3NmdWxs eSB3cm90ZSB0byB0aGUgYmxvYi48YnI+DQorICZuYnNwO0ByZXR2YWwgT3RoZXIgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7QW4gZXJyb3Igb2NjdXJyZWQ8YnI+DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorSXBt aUJsb2JUcmFuc2ZlcldyaXRlICg8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJTlQxNiAmbmJzcDtT ZXNzaW9uSWQsPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5UMzIgJm5ic3A7T2Zmc2V0LDxicj4N CisgJm5ic3A7SU4gJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7KkRhdGEsPGJyPg0KKyAmbmJzcDtJ TiAmbmJzcDtVSU5UMzIgJm5ic3A7V3JpdGVMZW5ndGg8YnI+DQorICZuYnNwOyk8YnI+DQorezxi cj4NCisgJm5ic3A7RUZJX1NUQVRVUyAmbmJzcDtTdGF0dXM7PGJyPg0KKyAmbmJzcDtVSU5UOCAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqU2VuZERhdGE7PGJyPg0KKyAmbmJz cDtVSU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2VuZERhdGFTaXplOzxicj4N CisgJm5ic3A7VUlOVDMyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Jlc3BvbnNlRGF0 YVNpemU7PGJyPg0KKzxicj4NCisgJm5ic3A7Ly88YnI+DQorICZuYnNwOy8vIEZvcm1hdCBzZW5k IGRhdGE8YnI+DQorICZuYnNwOy8vPGJyPg0KKyAmbmJzcDtTZW5kRGF0YVNpemUgPSBzaXplb2Yg KFNlc3Npb25JZCkgKyBzaXplb2YgKE9mZnNldCkgKyBXcml0ZUxlbmd0aDs8YnI+DQorICZuYnNw O1NlbmREYXRhICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gQWxsb2NhdGVaZXJvUG9vbCAoU2Vu ZERhdGFTaXplKTs8YnI+DQorICZuYnNwO2lmIChTZW5kRGF0YSA9PSBOVUxMKSB7PGJyPg0KKyAm bmJzcDsmbmJzcDsmbmJzcDtyZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7PGJyPg0KKyAmbmJz cDt9PGJyPg0KKzxicj4NCisgJm5ic3A7KChJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9XUklURV9T RU5EX0RBVEEgKilTZW5kRGF0YSktJmd0O1Nlc3Npb25JZCA9IFNlc3Npb25JZDs8YnI+DQorICZu YnNwOygoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfV1JJVEVfU0VORF9EQVRBICopU2VuZERhdGEp LSZndDtPZmZzZXQgJm5ic3A7Jm5ic3A7Jm5ic3A7PSBPZmZzZXQ7PGJyPg0KKyAmbmJzcDtDb3B5 TWVtICgoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1dSSVRFX1NFTkRfREFUQSAqKVNlbmREYXRh KS0mZ3Q7RGF0YSwgRGF0YSwgc2l6ZW9mIChVSU5UOCkgKiBXcml0ZUxlbmd0aCk7PGJyPg0KKzxi cj4NCisgJm5ic3A7UmVzcG9uc2VEYXRhU2l6ZSA9IDA7PGJyPg0KKyAmbmJzcDtTdGF0dXMgJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 PSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKElwbWlCbG9iVHJhbnNmZXJTdWJjb21tYW5kV3Jp dGUsIFNlbmREYXRhLCBTZW5kRGF0YVNpemUsIE5VTEwsICZhbXA7UmVzcG9uc2VEYXRhU2l6ZSk7 PGJyPg0KKzxicj4NCisgJm5ic3A7RnJlZVBvb2wgKFNlbmREYXRhKTs8YnI+DQorICZuYnNwO3Jl dHVybiBTdGF0dXM7PGJyPg0KK308YnI+DQorPGJyPg0KKy8qKjxicj4NCisgJm5ic3A7QHBhcmFt W2luXSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXNz aW9uSWQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIHNlc3Np b24gSUQgcmV0dXJuZWQgZnJvbSBhIGNhbGwgdG8gQmxvYk9wZW48YnI+DQorICZuYnNwO0BwYXJh bVtpbl0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Q29t bWl0RGF0YUxlbmd0aCBUaGUgbGVuZ3RoIG9mIGRhdGEgdG8gY29tbWl0IHRvIHRoZSBibG9iPGJy Pg0KKyAmbmJzcDtAcGFyYW1baW5dICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwO0NvbW1pdERhdGEgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7QSBwb2ludGVyIHRvIHRoZSBkYXRhIHRvIGNvbW1pdDxicj4NCis8YnI+DQorICZuYnNwO0By ZXR2YWwgRUZJX1NVQ0NFU1MgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U3VjY2Vz c2Z1bCBjb21taXQgdG8gdGhlIGJsb2IuPGJyPg0KKyAmbmJzcDtAcmV0dmFsIE90aGVyICZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwO0FuIGVycm9yIG9jY3VycmVkPGJyPg0KKyoqLzxicj4NCitFRklfU1RBVFVTPGJyPg0K K0lwbWlCbG9iVHJhbnNmZXJDb21taXQgKDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDE2ICZu YnNwO1Nlc3Npb25JZCw8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwO0Nv bW1pdERhdGFMZW5ndGgsPGJyPg0KKyAmbmJzcDtJTiAmbmJzcDtVSU5UOCAmbmJzcDsmbmJzcDsq Q29tbWl0RGF0YTxicj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAmbmJzcDtFRklfU1RBVFVT ICZuYnNwO1N0YXR1czs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOypTZW5kRGF0YTs8YnI+DQorICZuYnNwO1VJTlQzMiAmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtTZW5kRGF0YVNpemU7PGJyPg0KKyAmbmJzcDtVSU5UMzIgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVzcG9uc2VEYXRhU2l6ZTs8YnI+DQorPGJyPg0KKyAm bmJzcDsvLzxicj4NCisgJm5ic3A7Ly8gRm9ybWF0IHNlbmQgZGF0YTxicj4NCisgJm5ic3A7Ly88 YnI+DQorICZuYnNwO1NlbmREYXRhU2l6ZSA9IHNpemVvZiAoU2Vzc2lvbklkKSArIHNpemVvZiAo Q29tbWl0RGF0YUxlbmd0aCkgKyBDb21taXREYXRhTGVuZ3RoOzxicj4NCisgJm5ic3A7U2VuZERh dGEgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSBBbGxvY2F0ZVplcm9Qb29sIChTZW5kRGF0YVNp emUpOzxicj4NCisgJm5ic3A7aWYgKFNlbmREYXRhID09IE5VTEwpIHs8YnI+DQorICZuYnNwOyZu YnNwOyZuYnNwO3JldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzs8YnI+DQorICZuYnNwO308YnI+ DQorPGJyPg0KKyAmbmJzcDsoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX0NPTU1JVF9TRU5EX0RB VEEgKilTZW5kRGF0YSktJmd0O1Nlc3Npb25JZCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDs9IFNlc3Npb25JZDs8YnI+DQorICZuYnNwOygoSVBNSV9CTE9CX1RSQU5T RkVSX0JMT0JfQ09NTUlUX1NFTkRfREFUQSAqKVNlbmREYXRhKS0mZ3Q7Q29tbWl0RGF0YUxlbmd0 aCA9IENvbW1pdERhdGFMZW5ndGg7PGJyPg0KKyAmbmJzcDtDb3B5TWVtICgoKElQTUlfQkxPQl9U UkFOU0ZFUl9CTE9CX0NPTU1JVF9TRU5EX0RBVEEgKilTZW5kRGF0YSktJmd0O0NvbW1pdERhdGEs IENvbW1pdERhdGEsIHNpemVvZiAoVUlOVDgpICogQ29tbWl0RGF0YUxlbmd0aCk7PGJyPg0KKzxi cj4NCisgJm5ic3A7UmVzcG9uc2VEYXRhU2l6ZSA9IDA7PGJyPg0KKzxicj4NCisgJm5ic3A7U3Rh dHVzID0gSXBtaUJsb2JUcmFuc2ZlclNlbmRJcG1pIChJcG1pQmxvYlRyYW5zZmVyU3ViY29tbWFu ZENvbW1pdCwgU2VuZERhdGEsIFNlbmREYXRhU2l6ZSwgTlVMTCwgJmFtcDtSZXNwb25zZURhdGFT aXplKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtGcmVlUG9vbCAoU2VuZERhdGEpOzxicj4NCisgJm5i c3A7cmV0dXJuIFN0YXR1czs8YnI+DQorfTxicj4NCis8YnI+DQorLyoqPGJyPg0KKyAmbmJzcDtA cGFyYW1baW5dICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O1Nlc3Npb25JZCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgc2Vzc2lv biBJRCByZXR1cm5lZCBmcm9tIGEgY2FsbCB0byBCbG9iT3Blbjxicj4NCis8YnI+DQorICZuYnNw O0ByZXR2YWwgRUZJX1NVQ0NFU1MgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhl IGJsb2Igd2FzIGNsb3NlZC48YnI+DQorICZuYnNwO0ByZXR2YWwgT3RoZXIgJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 QW4gZXJyb3Igb2NjdXJyZWQ8YnI+DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorSXBtaUJs b2JUcmFuc2ZlckNsb3NlICg8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJTlQxNiAmbmJzcDtTZXNz aW9uSWQ8YnI+DQorICZuYnNwOyk8YnI+DQorezxicj4NCisgJm5ic3A7RUZJX1NUQVRVUyAmbmJz cDtTdGF0dXM7PGJyPg0KKyAmbmJzcDtVSU5UOCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsqU2VuZERhdGE7PGJyPg0KKyAmbmJzcDtVSU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7U2VuZERhdGFTaXplOzxicj4NCisgJm5ic3A7VUlOVDMyICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwO1Jlc3BvbnNlRGF0YVNpemU7PGJyPg0KKzxicj4NCisgJm5ic3A7 Ly88YnI+DQorICZuYnNwOy8vIEZvcm1hdCBzZW5kIGRhdGE8YnI+DQorICZuYnNwOy8vPGJyPg0K KyAmbmJzcDtTZW5kRGF0YVNpemUgPSBzaXplb2YgKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX0NM T1NFX1NFTkRfREFUQSk7PGJyPg0KKyAmbmJzcDtTZW5kRGF0YSAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDs9IEFsbG9jYXRlWmVyb1Bvb2wgKFNlbmREYXRhU2l6ZSk7PGJyPg0KKyAmbmJzcDtpZiAo U2VuZERhdGEgPT0gTlVMTCkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTOzxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwOygoSVBN SV9CTE9CX1RSQU5TRkVSX0JMT0JfQ0xPU0VfU0VORF9EQVRBICopU2VuZERhdGEpLSZndDtTZXNz aW9uSWQgPSBTZXNzaW9uSWQ7PGJyPg0KKzxicj4NCisgJm5ic3A7UmVzcG9uc2VEYXRhU2l6ZSA9 IDA7PGJyPg0KKzxicj4NCisgJm5ic3A7U3RhdHVzID0gSXBtaUJsb2JUcmFuc2ZlclNlbmRJcG1p IChJcG1pQmxvYlRyYW5zZmVyU3ViY29tbWFuZENsb3NlLCBTZW5kRGF0YSwgU2VuZERhdGFTaXpl LCBOVUxMLCAmYW1wO1Jlc3BvbnNlRGF0YVNpemUpOzxicj4NCis8YnI+DQorICZuYnNwO0ZyZWVQ b29sIChTZW5kRGF0YSk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gU3RhdHVzOzxicj4NCit9PGJyPg0K Kzxicj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QmxvYklkICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBCbG9iSWQgdG8gYmUgZGVsZXRlZDxi cj4NCis8YnI+DQorICZuYnNwO0ByZXR2YWwgRUZJX1NVQ0NFU1MgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7VGhlIGJsb2Igd2FzIGRlbGV0ZWQuPGJyPg0KKyAmbmJzcDtAcmV0dmFs IE90aGVyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwO0FuIGVycm9yIG9jY3VycmVkPGJyPg0KKyoqLzxicj4NCitFRklf U1RBVFVTPGJyPg0KK0lwbWlCbG9iVHJhbnNmZXJEZWxldGUgKDxicj4NCisgJm5ic3A7SU4gJm5i c3A7Q0hBUjggJm5ic3A7KkJsb2JJZDxicj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAmbmJz cDtFRklfU1RBVFVTICZuYnNwO1N0YXR1czs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypTZW5kRGF0YTs8YnI+DQorICZuYnNwO1VJTlQzMiAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZW5kRGF0YVNpemU7PGJyPg0KKyAmbmJzcDtV SU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7UmVzcG9uc2VEYXRhU2l6ZTs8YnI+ DQorPGJyPg0KKyAmbmJzcDsvLzxicj4NCisgJm5ic3A7Ly8gRm9ybWF0IHNlbmQgZGF0YTxicj4N CisgJm5ic3A7Ly88YnI+DQorICZuYnNwO1NlbmREYXRhU2l6ZSA9IHNpemVvZiAoSVBNSV9CTE9C X1RSQU5TRkVSX0JMT0JfREVMRVRFX1NFTkRfREFUQSk7PGJyPg0KKyAmbmJzcDtTZW5kRGF0YSAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs9IEFsbG9jYXRlWmVyb1Bvb2wgKFNlbmREYXRhU2l6ZSk7 PGJyPg0KKyAmbmJzcDtpZiAoU2VuZERhdGEgPT0gTlVMTCkgezxicj4NCisgJm5ic3A7Jm5ic3A7 Jm5ic3A7cmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOzxicj4NCisgJm5ic3A7fTxicj4NCis8 YnI+DQorICZuYnNwO0FzY2lpU3RyQ3B5UyAoKChJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9ERUxF VEVfU0VORF9EQVRBICopU2VuZERhdGEpLSZndDtCbG9iSWQsIEFzY2lpU3RyTGVuIChCbG9iSWQp LCBCbG9iSWQpOzxicj4NCis8YnI+DQorICZuYnNwO1Jlc3BvbnNlRGF0YVNpemUgPSAwOzxicj4N Cis8YnI+DQorICZuYnNwO1N0YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJTZW5kSXBtaSAoSXBtaUJs b2JUcmFuc2ZlclN1YmNvbW1hbmREZWxldGUsIFNlbmREYXRhLCBTZW5kRGF0YVNpemUsIE5VTEws ICZhbXA7UmVzcG9uc2VEYXRhU2l6ZSk7PGJyPg0KKzxicj4NCisgJm5ic3A7RnJlZVBvb2wgKFNl bmREYXRhKTs8YnI+DQorICZuYnNwO3JldHVybiBTdGF0dXM7PGJyPg0KK308YnI+DQorPGJyPg0K Ky8qKjxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDtCbG9iSWQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIEJsb2IgSUQgdG8gZ2F0aGVyIHN0YXRpc3RpY3Mg Zm9yPGJyPg0KKyAmbmJzcDtAcGFyYW1bb3V0XSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDtCbG9iU3RhdGUgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7VGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGJsb2I8YnI+DQorICZuYnNwO0BwYXJhbVtvdXRd ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NpemUgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 U2l6ZSBpbiBieXRlcyBvZiB0aGUgYmxvYjxicj4NCisgJm5ic3A7QHBhcmFtW291dF0gJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TWV0YWRhdGFMZW5ndGggJm5ic3A7 TGVuZ3RoIG9mIHRoZSBvcHRpb25hbCBtZXRhZGF0YTxicj4NCisgJm5ic3A7QHBhcmFtW291dF0g Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TWV0YWRhdGEgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7T3B0aW9uYWwgYmxvYi1zcGVjaWZp YyBtZXRhZGF0YTxicj4NCis8YnI+DQorICZuYnNwO0ByZXR2YWwgRUZJX1NVQ0NFU1MgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIGJsb2Igc3RhdGlzdGljcyB3ZXJlIHN1Y2Nl c3NmdWxseSBnYXRoZXJlZC48YnI+DQorICZuYnNwO0ByZXR2YWwgT3RoZXIgJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 QW4gZXJyb3Igb2NjdXJyZWQ8YnI+DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorSXBtaUJs b2JUcmFuc2ZlclN0YXQgKDxicj4NCisgJm5ic3A7SU4gJm5ic3A7Q0hBUjggJm5ic3A7Jm5ic3A7 KkJsb2JJZCw8YnI+DQorICZuYnNwO09VVCBVSU5UMTYgJm5ic3A7KkJsb2JTdGF0ZSw8YnI+DQor ICZuYnNwO09VVCBVSU5UMzIgJm5ic3A7KlNpemUsPGJyPg0KKyAmbmJzcDtPVVQgVUlOVDggJm5i c3A7Jm5ic3A7Kk1ldGFkYXRhTGVuZ3RoLDxicj4NCisgJm5ic3A7T1VUIFVJTlQ4ICZuYnNwOyZu YnNwOypNZXRhZGF0YTxicj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAmbmJzcDtFRklfU1RB VFVTICZuYnNwO1N0YXR1czs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOypTZW5kRGF0YTs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypSZXNwb25zZURhdGE7PGJyPg0KKyAmbmJzcDtVSU5U MzIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2VuZERhdGFTaXplOzxicj4NCisgJm5i c3A7VUlOVDMyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Jlc3BvbnNlRGF0YVNpemU7 PGJyPg0KKzxicj4NCisgJm5ic3A7aWYgKE1ldGFkYXRhID09IE5VTEwpIHs8YnI+DQorICZuYnNw OyZuYnNwOyZuYnNwO0FTU0VSVCAoRkFMU0UpOzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0 dXJuIEVGSV9BQk9SVEVEOzxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwO1Jlc3Bv bnNlRGF0YVNpemUgPSBzaXplb2YgKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9CX1NUQVRfUkVTUE9O U0UpOzxicj4NCisgJm5ic3A7UmVzcG9uc2VEYXRhICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0g QWxsb2NhdGVaZXJvUG9vbCAoUmVzcG9uc2VEYXRhU2l6ZSk7PGJyPg0KKyAmbmJzcDtpZiAoUmVz cG9uc2VEYXRhID09IE5VTEwpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBFRklf T1VUX09GX1JFU09VUkNFUzs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDsvLzxi cj4NCisgJm5ic3A7Ly8gRm9ybWF0IHNlbmQgZGF0YTxicj4NCisgJm5ic3A7Ly88YnI+DQorICZu YnNwO1NlbmREYXRhU2l6ZSA9IHNpemVvZiAoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfU1RBVF9T RU5EX0RBVEEpOzxicj4NCisgJm5ic3A7U2VuZERhdGEgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 PSBBbGxvY2F0ZVplcm9Qb29sIChTZW5kRGF0YVNpemUpOzxicj4NCisgJm5ic3A7aWYgKFNlbmRE YXRhID09IE5VTEwpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBFRklfT1VUX09G X1JFU09VUkNFUzs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtBc2NpaVN0ckNw eVMgKCgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfU1RBVF9TRU5EX0RBVEEgKilTZW5kRGF0YSkt Jmd0O0Jsb2JJZCwgSVBNSV9PRU1fQkxPQl9NQVhfREFUQV9QRVJfUEFDS0VULCBCbG9iSWQpOzxi cj4NCis8YnI+DQorICZuYnNwO1N0YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJTZW5kSXBtaSAoSXBt aUJsb2JUcmFuc2ZlclN1YmNvbW1hbmRTdGF0LCBTZW5kRGF0YSwgU2VuZERhdGFTaXplLCAoVUlO VDggKilSZXNwb25zZURhdGEsICZhbXA7UmVzcG9uc2VEYXRhU2l6ZSk7PGJyPg0KKyAmbmJzcDtp ZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7KkJsb2JT dGF0ZSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs9ICgoSVBNSV9CTE9CX1RSQU5TRkVS X0JMT0JfU1RBVF9SRVNQT05TRSAqKVJlc3BvbnNlRGF0YSktJmd0O0Jsb2JTdGF0ZTs8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwOypTaXplICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gKChJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9T VEFUX1JFU1BPTlNFICopUmVzcG9uc2VEYXRhKS0mZ3Q7U2l6ZTs8YnI+DQorICZuYnNwOyZuYnNw OyZuYnNwOypNZXRhZGF0YUxlbmd0aCA9ICgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfU1RBVF9S RVNQT05TRSAqKVJlc3BvbnNlRGF0YSktJmd0O01ldGFEYXRhTGVuOzxicj4NCis8YnI+DQorICZu YnNwOyZuYnNwOyZuYnNwO0NvcHlNZW0gKCZhbXA7TWV0YWRhdGEsICZhbXA7KChJUE1JX0JMT0Jf VFJBTlNGRVJfQkxPQl9TVEFUX1JFU1BPTlNFICopUmVzcG9uc2VEYXRhKS0mZ3Q7TWV0YURhdGEs IHNpemVvZiAoKChJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9TVEFUX1JFU1BPTlNFICopUmVzcG9u c2VEYXRhKS0mZ3Q7TWV0YURhdGEpKTs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJz cDtGcmVlUG9vbCAoUmVzcG9uc2VEYXRhKTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChTZW5kRGF0 YSk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gU3RhdHVzOzxicj4NCit9PGJyPg0KKzxicj4NCisvKio8 YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7U2Vzc2lvbklkICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwO1RoZSBJRCBvZiB0aGUgc2Vzc2lvbiB0byBnYXRoZXIgc3RhdGlzdGljcyBmb3I8YnI+DQor ICZuYnNwO0BwYXJhbVtvdXRdICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwO0Jsb2JTdGF0ZSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgY3Vy cmVudCBzdGF0ZSBvZiB0aGUgYmxvYjxicj4NCisgJm5ic3A7QHBhcmFtW291dF0gJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2l6ZSAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTaXplIGluIGJ5 dGVzIG9mIHRoZSBibG9iPGJyPg0KKyAmbmJzcDtAcGFyYW1bb3V0XSAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtNZXRhZGF0YUxlbmd0aCAmbmJzcDtMZW5ndGggb2Yg dGhlIG9wdGlvbmFsIG1ldGFkYXRhPGJyPg0KKyAmbmJzcDtAcGFyYW1bb3V0XSAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtNZXRhZGF0YSAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtPcHRpb25hbCBibG9iLXNwZWNpZmljIG1ldGFkYXRh PGJyPg0KKzxicj4NCisgJm5ic3A7QHJldHZhbCBFRklfU1VDQ0VTUyAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtUaGUgYmxvYiBzdGF0aXN0aWNzIHdlcmUgc3VjY2Vzc2Z1bGx5IGdh dGhlcmVkLjxicj4NCisgJm5ic3A7QHJldHZhbCBPdGhlciAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtBbiBlcnJvciBv Y2N1cnJlZDxicj4NCisqKi88YnI+DQorRUZJX1NUQVRVUzxicj4NCitJcG1pQmxvYlRyYW5zZmVy U2Vzc2lvblN0YXQgKDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDE2ICZuYnNwO1Nlc3Npb25J ZCw8YnI+DQorICZuYnNwO09VVCBVSU5UMTYgJm5ic3A7KkJsb2JTdGF0ZSw8YnI+DQorICZuYnNw O09VVCBVSU5UMzIgJm5ic3A7KlNpemUsPGJyPg0KKyAmbmJzcDtPVVQgVUlOVDggJm5ic3A7Jm5i c3A7Kk1ldGFkYXRhTGVuZ3RoLDxicj4NCisgJm5ic3A7T1VUIFVJTlQ4ICZuYnNwOyZuYnNwOypN ZXRhZGF0YTxicj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAmbmJzcDtFRklfU1RBVFVTICZu YnNwO1N0YXR1czs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOypTZW5kRGF0YTs8YnI+DQorICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOypSZXNwb25zZURhdGE7PGJyPg0KKyAmbmJzcDtVSU5UMzIgJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7U2VuZERhdGFTaXplOzxicj4NCisgJm5ic3A7VUlO VDMyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1Jlc3BvbnNlRGF0YVNpemU7PGJyPg0K Kzxicj4NCisgJm5ic3A7aWYgKChCbG9iU3RhdGUgPT0gTlVMTCkgfHwgKFNpemUgPT0gTlVMTCkg fHwgKE1ldGFkYXRhTGVuZ3RoID09IE5VTEwpIHx8IChNZXRhZGF0YSA9PSBOVUxMKSkgezxicj4N CisgJm5ic3A7Jm5ic3A7Jm5ic3A7QVNTRVJUIChGQUxTRSk7PGJyPg0KKyAmbmJzcDsmbmJzcDsm bmJzcDtyZXR1cm4gRUZJX0FCT1JURUQ7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisgJm5i c3A7UmVzcG9uc2VEYXRhU2l6ZSA9IHNpemVvZiAoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfU1RB VF9SRVNQT05TRSk7PGJyPg0KKyAmbmJzcDtSZXNwb25zZURhdGEgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7PSBBbGxvY2F0ZVplcm9Qb29sIChSZXNwb25zZURhdGFTaXplKTs8YnI+DQorICZuYnNw O2lmIChSZXNwb25zZURhdGEgPT0gTlVMTCkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0 dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOzxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZu YnNwOy8vPGJyPg0KKyAmbmJzcDsvLyBGb3JtYXQgc2VuZCBkYXRhPGJyPg0KKyAmbmJzcDsvLzxi cj4NCisgJm5ic3A7U2VuZERhdGFTaXplID0gc2l6ZW9mIChJUE1JX0JMT0JfVFJBTlNGRVJfQkxP Ql9TRVNTSU9OX1NUQVRfU0VORF9EQVRBKTs8YnI+DQorICZuYnNwO1NlbmREYXRhICZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOz0gQWxsb2NhdGVaZXJvUG9vbCAoU2VuZERhdGFTaXplKTs8YnI+DQor ICZuYnNwO2lmIChTZW5kRGF0YSA9PSBOVUxMKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDty ZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisg Jm5ic3A7KChJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9TRVNTSU9OX1NUQVRfU0VORF9EQVRBICop U2VuZERhdGEpLSZndDtTZXNzaW9uSWQgPSBTZXNzaW9uSWQ7PGJyPg0KKzxicj4NCisgJm5ic3A7 U3RhdHVzID0gSXBtaUJsb2JUcmFuc2ZlclNlbmRJcG1pIChJcG1pQmxvYlRyYW5zZmVyU3ViY29t bWFuZFNlc3Npb25TdGF0LCBTZW5kRGF0YSwgU2VuZERhdGFTaXplLCAoVUlOVDggKilSZXNwb25z ZURhdGEsICZhbXA7UmVzcG9uc2VEYXRhU2l6ZSk7PGJyPg0KKzxicj4NCisgJm5ic3A7aWYgKCFF RklfRVJST1IgKFN0YXR1cykpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOypCbG9iU3RhdGUg Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSAoKElQTUlfQkxPQl9UUkFOU0ZFUl9CTE9C X1NFU1NJT05fU1RBVF9SRVNQT05TRSAqKVJlc3BvbnNlRGF0YSktJmd0O0Jsb2JTdGF0ZTs8YnI+ DQorICZuYnNwOyZuYnNwOyZuYnNwOypTaXplICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gKChJUE1JX0JMT0JfVFJBTlNGRVJfQkxP Ql9TRVNTSU9OX1NUQVRfUkVTUE9OU0UgKilSZXNwb25zZURhdGEpLSZndDtTaXplOzxicj4NCisg Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1ldGFkYXRhTGVuZ3RoID0gKChJUE1JX0JMT0JfVFJBTlNGRVJf QkxPQl9TRVNTSU9OX1NUQVRfUkVTUE9OU0UgKilSZXNwb25zZURhdGEpLSZndDtNZXRhRGF0YUxl bjs8YnI+DQorPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtDb3B5TWVtICgmYW1wO01ldGFkYXRh LCAmYW1wOygoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfU0VTU0lPTl9TVEFUX1JFU1BPTlNFICop UmVzcG9uc2VEYXRhKS0mZ3Q7TWV0YURhdGEsIHNpemVvZiAoKChJUE1JX0JMT0JfVFJBTlNGRVJf QkxPQl9TRVNTSU9OX1NUQVRfUkVTUE9OU0UgKilSZXNwb25zZURhdGEpLSZndDtNZXRhRGF0YSkp Ozxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwO0ZyZWVQb29sIChSZXNwb25zZURh dGEpOzxicj4NCisgJm5ic3A7RnJlZVBvb2wgKFNlbmREYXRhKTs8YnI+DQorICZuYnNwO3JldHVy biBTdGF0dXM7PGJyPg0KK308YnI+DQorPGJyPg0KKy8qKjxicj4NCisgJm5ic3A7QHBhcmFtW2lu XSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXNzaW9u SWQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIElEIG9mIHRoZSBzZXNz aW9uIHRvIHdyaXRlIG1ldGFkYXRhIGZvcjxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtPZmZzZXQgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIG9mZnNldCBv ZiB0aGUgbWV0YWRhdGEgdG8gd3JpdGUgdG88YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RGF0YSAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtU aGUgZGF0YSB0byB3cml0ZSB0byB0aGUgbWV0YWRhdGE8YnI+DQorPGJyPg0KKyAmbmJzcDtAcmV0 dmFsIEVGSV9TVUNDRVNTICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBibG9i IG1ldGFkYXRhIHdhcyBzdWNjZXNzZnVsbHkgd3JpdHRlbi48YnI+DQorICZuYnNwO0ByZXR2YWwg T3RoZXIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7QW4gZXJyb3Igb2NjdXJyZWQ8YnI+DQorKiovPGJyPg0KK0VGSV9T VEFUVVM8YnI+DQorSXBtaUJsb2JUcmFuc2ZlcldyaXRlTWV0YSAoPGJyPg0KKyAmbmJzcDtJTiAm bmJzcDtVSU5UMTYgJm5ic3A7U2Vzc2lvbklkLDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDMy ICZuYnNwO09mZnNldCw8YnI+DQorICZuYnNwO0lOICZuYnNwO1VJTlQ4ICZuYnNwOyZuYnNwOypE YXRhLDxicj4NCisgJm5ic3A7SU4gJm5ic3A7VUlOVDMyICZuYnNwO1dyaXRlTGVuZ3RoPGJyPg0K KyAmbmJzcDspPGJyPg0KK3s8YnI+DQorICZuYnNwO0VGSV9TVEFUVVMgJm5ic3A7U3RhdHVzOzxi cj4NCisgJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KlNl bmREYXRhOzxicj4NCisgJm5ic3A7VUlOVDMyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O1NlbmREYXRhU2l6ZTs8YnI+DQorICZuYnNwO1VJTlQzMiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDtSZXNwb25zZURhdGFTaXplOzxicj4NCis8YnI+DQorICZuYnNwOy8vPGJyPg0KKyAm bmJzcDsvLyBGb3JtYXQgc2VuZCBkYXRhPGJyPg0KKyAmbmJzcDsvLzxicj4NCisgJm5ic3A7U2Vu ZERhdGFTaXplID0gc2l6ZW9mIChJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9XUklURV9TRU5EX0RB VEEpOzxicj4NCisgJm5ic3A7U2VuZERhdGEgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSBBbGxv Y2F0ZVplcm9Qb29sIChTZW5kRGF0YVNpemUpOzxicj4NCisgJm5ic3A7aWYgKFNlbmREYXRhID09 IE5VTEwpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBFRklfT1VUX09GX1JFU09V UkNFUzs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDsoKElQTUlfQkxPQl9UUkFO U0ZFUl9CTE9CX1dSSVRFX1NFTkRfREFUQSAqKVNlbmREYXRhKS0mZ3Q7U2Vzc2lvbklkID0gU2Vz c2lvbklkOzxicj4NCisgJm5ic3A7KChJUE1JX0JMT0JfVFJBTlNGRVJfQkxPQl9XUklURV9TRU5E X0RBVEEgKilTZW5kRGF0YSktJmd0O09mZnNldCAmbmJzcDsmbmJzcDsmbmJzcDs9IE9mZnNldDs8 YnI+DQorICZuYnNwO0NvcHlNZW0gKCgoSVBNSV9CTE9CX1RSQU5TRkVSX0JMT0JfV1JJVEVfU0VO RF9EQVRBICopU2VuZERhdGEpLSZndDtEYXRhLCBEYXRhLCBzaXplb2YgKFVJTlQ4KSAqIFdyaXRl TGVuZ3RoKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtSZXNwb25zZURhdGFTaXplID0gMDs8YnI+DQor PGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKElwbWlCbG9i VHJhbnNmZXJTdWJjb21tYW5kV3JpdGVNZXRhLCBTZW5kRGF0YSwgU2VuZERhdGFTaXplLCBOVUxM LCAmYW1wO1Jlc3BvbnNlRGF0YVNpemUpOzxicj4NCis8YnI+DQorICZuYnNwO0ZyZWVQb29sIChT ZW5kRGF0YSk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gU3RhdHVzOzxicj4NCit9PGJyPg0KKzxicj4N CisvKio8YnI+DQorICZuYnNwO1RoaXMgaXMgdGhlIGRlY2xhcmF0aW9uIG9mIGFuIEVGSSBpbWFn ZSBlbnRyeSBwb2ludC4gVGhpcyBlbnRyeSBwb2ludCBpczxicj4NCisgJm5ic3A7dGhlIHNhbWUg Zm9yIFVFRkkgQXBwbGljYXRpb25zLCBVRUZJIE9TIExvYWRlcnMsIGFuZCBVRUZJIERyaXZlcnMg aW5jbHVkaW5nPGJyPg0KKyAmbmJzcDtib3RoIGRldmljZSBkcml2ZXJzIGFuZCBidXMgZHJpdmVy cy48YnI+DQorPGJyPg0KKyAmbmJzcDtAcGFyYW1baW5dICZuYnNwO0ltYWdlSGFuZGxlICZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBmaXJtd2FyZSBhbGxvY2F0ZWQgaGFu ZGxlIGZvciB0aGUgVUVGSSBpbWFnZS48YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7U3lz dGVtVGFibGUgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QSBwb2ludGVyIHRv IHRoZSBFRkkgU3lzdGVtIFRhYmxlLjxicj4NCis8YnI+DQorICZuYnNwO0ByZXR2YWwgRUZJX1NV Q0NFU1MgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7VGhlIG9wZXJhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Ljxicj4NCisgJm5i c3A7QHJldHZhbCBPdGhlcnMgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7QW4gdW5l eHBlY3RlZCBlcnJvciBvY2N1cnJlZC48YnI+DQorPGJyPg0KKyoqLzxicj4NCitFRklfU1RBVFVT PGJyPg0KK0VGSUFQSTxicj4NCitJcG1pQmxvYlRyYW5zZmVyRHhlRHJpdmVyRW50cnlQb2ludCAo PGJyPg0KKyAmbmJzcDtJTiBFRklfSEFORExFICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwO0ltYWdlSGFuZGxlLDxicj4NCisgJm5ic3A7SU4gRUZJX1NZU1RFTV9UQUJM RSAmbmJzcDsqU3lzdGVtVGFibGU8YnI+DQorICZuYnNwOyk8YnI+DQorezxicj4NCisgJm5ic3A7 cmV0dXJuIGdCUy0mZ3Q7SW5zdGFsbE11bHRpcGxlUHJvdG9jb2xJbnRlcmZhY2VzICg8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZhbXA7SW1hZ2VIYW5kbGUsPGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmYW1wO2dFZGtpaUlwbWlCbG9iVHJh bnNmZXJQcm90b2NvbEd1aWQsPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsoVk9JRCAqKSZhbXA7bUlwbWlCbG9iVHJhbnNmZXIsPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtOVUxMPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDspOzxicj4NCit9PGJyPg0KZGlmZiAtLWdpdCBhL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQ a2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJEeGUvVW5pdFRlc3QvSXBtaUJsb2JUcmFuc2Zl clRlc3RVbml0VGVzdHMuYyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lw bWlCbG9iVHJhbnNmZXJEeGUvVW5pdFRlc3QvSXBtaUJsb2JUcmFuc2ZlclRlc3RVbml0VGVzdHMu Yzxicj4NCm5ldyBmaWxlIG1vZGUgMTAwNjQ0PGJyPg0KaW5kZXggMDAwMDAwMDAwMC4uZjMyNjQ2 NzkyMjxicj4NCi0tLSAvZGV2L251bGw8YnI+DQorKysgYi9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5 UGtnL1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVyRHhlL1VuaXRUZXN0L0lwbWlCbG9iVHJhbnNm ZXJUZXN0VW5pdFRlc3RzLmM8YnI+DQpAQCAtMCwwICsxLDExMTMgQEA8YnI+DQorLyoqIEBmaWxl PGJyPg0KKyo8YnI+DQorKiAmbmJzcDtDb3B5cmlnaHQgKGMpIDIwMjIsIE5WSURJQSBDT1JQT1JB VElPTi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48YnI+DQo8L2Jsb2NrcXVvdGU+DQo8c3BhbiBzdHls ZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9u dC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246 IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3Bh Y2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6 IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmbG9hdDogbm9uZTsgZGlzcGxheTogaW5saW5l ICFpbXBvcnRhbnQ7Ij4yMDIzPC9zcGFuPjxiciBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAw LCAwKTsgZm9udC1mYW1pbHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxl OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxl dHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5n OiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBu b25lOyI+DQo8YmxvY2txdW90ZSB0eXBlPSJjaXRlIiBzdHlsZT0iZm9udC1mYW1pbHk6IEhlbHZl dGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9y cGhhbnM6IGF1dG87IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRy YW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiBhdXRvOyB3b3JkLXNw YWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB0ZXh0LWRlY29yYXRp b246IG5vbmU7Ij4NCisqPGJyPg0KKyogJm5ic3A7U1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogQ29w eXJpZ2h0IChjKSAyMDIyIE5WSURJQSBDT1JQT1JBVElPTiAmYW1wOyBBRkZJTElBVEVTPGJyPg0K KyogJm5ic3A7U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQ8YnI+ DQorKjxicj4NCisqKi88YnI+DQorI2luY2x1ZGUgJmx0O3N0ZGFyZy5oJmd0Ozxicj4NCisjaW5j bHVkZSAmbHQ7c3RkZGVmLmgmZ3Q7PGJyPg0KKyNpbmNsdWRlICZsdDtzZXRqbXAuaCZndDs8YnI+ DQorI2luY2x1ZGUgJmx0O3N0ZGludC5oJmd0Ozxicj4NCisjaW5jbHVkZSAmbHQ7Y21vY2thLmgm Z3Q7PGJyPg0KKzxicj4NCisjaW5jbHVkZSAmbHQ7VWVmaS5oJmd0Ozxicj4NCisjaW5jbHVkZSAm bHQ7TGlicmFyeS9CYXNlTWVtb3J5TGliLmgmZ3Q7PGJyPg0KKyNpbmNsdWRlICZsdDtMaWJyYXJ5 L0RlYnVnTGliLmgmZ3Q7PGJyPg0KKyNpbmNsdWRlICZsdDtMaWJyYXJ5L01lbW9yeUFsbG9jYXRp b25MaWIuaCZndDs8YnI+DQorI2luY2x1ZGUgJmx0O0xpYnJhcnkvSG9zdEJhc2VkVGVzdFN0dWJM aWIvSXBtaVN0dWJMaWIuaCZndDs8YnI+DQorPGJyPg0KKyNpbmNsdWRlICZsdDtMaWJyYXJ5L1Vu aXRUZXN0TGliLmgmZ3Q7PGJyPg0KKyNpbmNsdWRlICZsdDtQcm90b2NvbC9JcG1pQmxvYlRyYW5z ZmVyLmgmZ3Q7PGJyPg0KKyNpbmNsdWRlICZxdW90Oy4uL0ludGVybmFsSXBtaUJsb2JUcmFuc2Zl ci5oJnF1b3Q7PGJyPg0KKzxicj4NCisjZGVmaW5lIFVOSVRfVEVTVF9OQU1FICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZxdW90O0lQTUkgQmxvYiBUcmFuc2ZlciBVbml0IFRlc3RzJnF1b3Q7PGJy Pg0KKyNkZWZpbmUgVU5JVF9URVNUX1ZFUlNJT04gJm5ic3A7JnF1b3Q7MS4wJnF1b3Q7PGJyPg0K Kzxicj4NCitVSU5UOCAmbmJzcDtJbnZhbGlkQ29tcGxldGlvbltdID0gezxicj4NCisgJm5ic3A7 MHhDMCwgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ly8gQ29tcGxldGlvbkNvZGU8YnI+DQorICZuYnNwOzB4Q0Ys IDB4QzIsIDB4MDAsIC8vIE9wZW5CTUMgT0VOPGJyPg0KK307PGJyPg0KKyNkZWZpbmUgSU5WQUxJ RF9DT01QTEVUSU9OX1NJWkUgJm5ic3A7NCAqIHNpemVvZihVSU5UOCk8YnI+DQorPGJyPg0KK1VJ TlQ4ICZuYnNwO05vRGF0YVJlc3BvbnNlW10gPSB7PGJyPg0KKyAmbmJzcDsweDAwLCAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsvLyBDb21wbGV0aW9uQ29kZTxicj4NCisgJm5ic3A7MHhDRiwgMHhDMiwgMHgwMCwg Ly8gT3BlbkJNQyBPRU48YnI+DQorfTs8YnI+DQorI2RlZmluZSBOT19EQVRBX1JFU1BPTlNFX1NJ WkUgJm5ic3A7NCAqIHNpemVvZihVSU5UOCk8YnI+DQorPGJyPg0KK1VJTlQ4ICZuYnNwO0JhZE9l blJlc3BvbnNlW10gPSB7PGJyPg0KKyAmbmJzcDsweDAwLCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvLyBDb21w bGV0aW9uQ29kZTxicj4NCisgJm5ic3A7MHhGRiwgMHhDMiwgMHgwMCwgLy8gV3JvbmcgT0VOPGJy Pg0KK307PGJyPg0KKyNkZWZpbmUgQkFEX09FTl9SRVNQT05TRV9TSVpFICZuYnNwOzQgKiBzaXpl b2YoVUlOVDgpPGJyPg0KKzxicj4NCitVSU5UOCAmbmJzcDtCYWRDcmNSZXNwb25zZVtdID0gezxi cj4NCisgJm5ic3A7MHgwMCwgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Ly8gQ29tcGxldGlvbkNvZGU8YnI+DQorICZuYnNwOzB4Q0YsIDB4QzIsIDB4 MDAsICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy8vIE9wZW5CTUMgT0VOPGJy Pg0KKyAmbmJzcDsweDAwLCAweDAwLCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvLyBDUkM8YnI+DQorICZuYnNw OzB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIC8vIERhdGE8YnI+DQorfTs8YnI+DQorI2RlZmluZSBC QURfQ1JDX1JFU1BPTlNFX1NJWkUgJm5ic3A7MTAgKiBzaXplb2YoVUlOVDgpPGJyPg0KKzxicj4N CitVSU5UOCAmbmJzcDtWYWxpZE5vRGF0YVJlc3BvbnNlW10gPSB7PGJyPg0KKyAmbmJzcDsweDAw LCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsvLyBDb21wbGV0aW9uQ29kZTxicj4NCisgJm5ic3A7MHhDRiwgMHhD MiwgMHgwMCwgLy8gT3BlbkJNQyBPRU48YnI+DQorfTs8YnI+DQorPGJyPg0KKyNkZWZpbmUgVkFM SURfTk9EQVRBX1JFU1BPTlNFX1NJWkUgJm5ic3A7NCAqIHNpemVvZihVSU5UOCk8YnI+DQorPGJy Pg0KKy8qKjxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJzcDtDb250ZXh0ICZuYnNwOyZuYnNw OyZuYnNwO1tPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgZW5hYmxlczo8YnI+ DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzEpIHRlc3QtY2FzZSByZXVzZSB3aXRo IHZhcmllZCBwYXJhbWV0ZXJzIGFuZDxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7MikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVzdHMgdGhhdCBuZWVkIGE8YnI+ DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3JlYm9vdC4gJm5ic3A7VGhpcyBwYXJh bWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDtyZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJlIHRo YXQgdGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjb250ZW50cyBhcmUg d2VsbCB1bmRlcnN0b29kIGJ5IGFsbCB0ZXN0IGNhc2VzIHRoYXQgbWF5PGJyPg0KKyAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjb25zdW1lIGl0Ljxicj4NCisgJm5ic3A7QHJldHZhbCAm bmJzcDtVTklUX1RFU1RfUEFTU0VEICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBVbml0IHRlc3QgaGFzIGNv bXBsZXRlZCBhbmQgdGhlIHRlc3Q8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2Nhc2Ugd2FzIHN1Y2Nlc3NmdWwuPGJy Pg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO1VOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRCAmbmJz cDtBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzIGZhaWxlZC48YnI+DQorKiovPGJyPg0KK1VOSVRf VEVTVF9TVEFUVVM8YnI+DQorRUZJQVBJPGJyPg0KK0dvb2RDcmMgKDxicj4NCisgJm5ic3A7SU4g VU5JVF9URVNUX0NPTlRFWFQgJm5ic3A7Q29udGV4dDxicj4NCisgJm5ic3A7KTxicj4NCit7PGJy Pg0KKyAmbmJzcDtVSU5UOCAmbmJzcDsmbmJzcDtEYXRhWzVdID0geyAweDEyLCAweDM0LCAweDU2 LCAweDc4LCAweDkwIH07PGJyPg0KKyAmbmJzcDtVSU5UTiAmbmJzcDsmbmJzcDtEYXRhU2l6ZTs8 YnI+DQorICZuYnNwO1VJTlQxNiAmbmJzcDtDcmM7PGJyPg0KKzxicj4NCisgJm5ic3A7RGF0YVNp emUgPSBzaXplb2YgKERhdGEpOzxicj4NCis8YnI+DQorICZuYnNwO0NyYyA9IENhbGN1bGF0ZUNy YzE2IChEYXRhLCBEYXRhU2l6ZSk7PGJyPg0KKzxicj4NCisgJm5ic3A7VVRfQVNTRVJUX0VRVUFM IChDcmMsIDB4QjkyOCk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gVU5JVF9URVNUX1BBU1NFRDs8YnI+ DQorfTxicj4NCis8YnI+DQorLyoqPGJyPg0KKyAmbmJzcDtAcGFyYW1baW5dICZuYnNwO0NvbnRl eHQgJm5ic3A7Jm5ic3A7Jm5ic3A7W09wdGlvbmFsXSBBbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhh dCBlbmFibGVzOjxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7MSkgdGVzdC1j YXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kPGJyPg0KKyAmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsyKSB0ZXN0LWNhc2UgcmUtZW50cnkgZm9yIFRhcmdldCB0ZXN0cyB0 aGF0IG5lZWQgYTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmVib290LiAm bmJzcDtUaGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBpdCBpcyB0aGU8YnI+DQorICZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3Jlc3BvbnNpYmlsaXR5IG9mIHRoZSB0ZXN0IGF1dGhv ciB0byBlbnN1cmUgdGhhdCB0aGU8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O2NvbnRlbnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRlc3QgY2FzZXMgdGhhdCBtYXk8 YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2NvbnN1bWUgaXQuPGJyPg0KKyAm bmJzcDtAcmV0dmFsICZuYnNwO1VOSVRfVEVTVF9QQVNTRUQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VGhlIFVu aXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGVzdDxicj4NCisgJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y2FzZSB3YXMg c3VjY2Vzc2Z1bC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7VU5JVF9URVNUX0VSUk9SX1RF U1RfRkFJTEVEICZuYnNwO0EgdGVzdCBjYXNlIGFzc2VydGlvbiBoYXMgZmFpbGVkLjxicj4NCisq Ki88YnI+DQorVU5JVF9URVNUX1NUQVRVUzxicj4NCitFRklBUEk8YnI+DQorQmFkQ3JjICg8YnI+ DQorICZuYnNwO0lOIFVOSVRfVEVTVF9DT05URVhUICZuYnNwO0NvbnRleHQ8YnI+DQorICZuYnNw Oyk8YnI+DQorezxicj4NCisgJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7RGF0YVs1XSA9IHsgMHgx MiwgMHgzNCwgMHg1NiwgMHg3OCwgMHg5MCB9Ozxicj4NCisgJm5ic3A7VUlOVE4gJm5ic3A7Jm5i c3A7RGF0YVNpemU7PGJyPg0KKyAmbmJzcDtVSU5UMTYgJm5ic3A7Q3JjOzxicj4NCis8YnI+DQor ICZuYnNwO0RhdGFTaXplID0gc2l6ZW9mIChEYXRhKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtDcmMg PSBDYWxjdWxhdGVDcmMxNiAoRGF0YSwgRGF0YVNpemUpOzxicj4NCis8YnI+DQorICZuYnNwO1VU X0FTU0VSVF9OT1RfRVFVQUwgKENyYywgMHgzNDA5KTs8YnI+DQorICZuYnNwO3JldHVybiBVTklU X1RFU1RfUEFTU0VEOzxicj4NCit9PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJh bVtpbl0gJm5ic3A7Q29udGV4dCAmbmJzcDsmbmJzcDsmbmJzcDtbT3B0aW9uYWxdIEFuIG9wdGlv bmFsIHBhcmFtZXRlciB0aGF0IGVuYWJsZXM6PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQ8YnI+ DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIpIHRlc3QtY2FzZSByZS1lbnRyeSBm b3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDtyZWJvb3QuICZuYnNwO1RoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0IGlz IHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmVzcG9uc2liaWxpdHkg b2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0IHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwgdGVz dCBjYXNlcyB0aGF0IG1heTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29u c3VtZSBpdC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7VU5JVF9URVNUX1BBU1NFRCAmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDtUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0PGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDtjYXNlIHdhcyBzdWNjZXNzZnVsLjxicj4NCisgJm5ic3A7QHJldHZhbCAmbmJzcDtV TklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgJm5ic3A7QSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhh cyBmYWlsZWQuPGJyPg0KKyoqLzxicj4NCitVTklUX1RFU1RfU1RBVFVTPGJyPg0KK0VGSUFQSTxi cj4NCitTZW5kSXBtaUJhZENvbXBsZXRpb24gKDxicj4NCisgJm5ic3A7SU4gVU5JVF9URVNUX0NP TlRFWFQgJm5ic3A7Q29udGV4dDxicj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAmbmJzcDtW T0lEICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypSZXNwb25zZURh dGE7PGJyPg0KKyAmbmJzcDtVSU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KlJl c3BvbnNlRGF0YVNpemU7PGJyPg0KKyAmbmJzcDtFRklfU1RBVFVTICZuYnNwO1N0YXR1czs8YnI+ DQorICZuYnNwO1ZPSUQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Kk1vY2tSZXNwb25zZVJlc3VsdHMgPSBOVUxMOzxicj4NCis8YnI+DQorICZuYnNwO01vY2tSZXNw b25zZVJlc3VsdHMgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChJTlZBTElEX0NPTVBMRVRJ T05fU0laRSk7PGJyPg0KKyAmbmJzcDtSZXNwb25zZURhdGFTaXplICZuYnNwOyZuYnNwOyZuYnNw Oz0gKFVJTlQzMiAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVUlOVDMyKSk7PGJyPg0KKyAm bmJzcDtDb3B5TWVtIChNb2NrUmVzcG9uc2VSZXN1bHRzLCAmYW1wO0ludmFsaWRDb21wbGV0aW9u LCBJTlZBTElEX0NPTVBMRVRJT05fU0laRSk7PGJyPg0KKzxicj4NCisgJm5ic3A7TW9ja0lwbWlT dWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRzLCBJTlZBTElEX0NPTVBM RVRJT05fU0laRSwgRUZJX1NVQ0NFU1MpOzxicj4NCis8YnI+DQorICZuYnNwO1Jlc3BvbnNlRGF0 YSA9IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKCpSZXNwb25zZURhdGFTaXplKTs8YnI+DQor ICZuYnNwO1N0YXR1cyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs9IElwbWlC bG9iVHJhbnNmZXJTZW5kSXBtaSAoSXBtaUJsb2JUcmFuc2ZlclN1YmNvbW1hbmRHZXRDb3VudCwg TlVMTCwgMCwgUmVzcG9uc2VEYXRhLCBSZXNwb25zZURhdGFTaXplKTs8YnI+DQorPGJyPg0KKyAm bmJzcDtVVF9BU1NFUlRfU1RBVFVTX0VRVUFMIChTdGF0dXMsIEVGSV9QUk9UT0NPTF9FUlJPUik7 PGJyPg0KKyAmbmJzcDtGcmVlUG9vbCAoTW9ja1Jlc3BvbnNlUmVzdWx0cyk7PGJyPg0KKyAmbmJz cDtGcmVlUG9vbCAoUmVzcG9uc2VEYXRhU2l6ZSk7PGJyPg0KKyAmbmJzcDtGcmVlUG9vbCAoUmVz cG9uc2VEYXRhKTs8YnI+DQorICZuYnNwO3JldHVybiBVTklUX1RFU1RfUEFTU0VEOzxicj4NCit9 PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Q29udGV4dCAm bmJzcDsmbmJzcDsmbmJzcDtbT3B0aW9uYWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGVu YWJsZXM6PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsxKSB0ZXN0LWNhc2Ug cmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQ8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOzIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQg bmVlZCBhPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZWJvb3QuICZuYnNw O1RoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRoZTxicj4NCisgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmVzcG9uc2liaWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRv IGVuc3VyZSB0aGF0IHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29u dGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heTxicj4N CisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29uc3VtZSBpdC48YnI+DQorICZuYnNw O0ByZXR2YWwgJm5ic3A7VU5JVF9URVNUX1BBU1NFRCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgVW5pdCB0 ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjYXNlIHdhcyBzdWNj ZXNzZnVsLjxicj4NCisgJm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RFU1RfRVJST1JfVEVTVF9G QUlMRUQgJm5ic3A7QSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcyBmYWlsZWQuPGJyPg0KKyoqLzxi cj4NCitVTklUX1RFU1RfU1RBVFVTPGJyPg0KK0VGSUFQSTxicj4NCitTZW5kSXBtaU5vRGF0YVJl c3BvbnNlICg8YnI+DQorICZuYnNwO0lOIFVOSVRfVEVTVF9DT05URVhUICZuYnNwO0NvbnRleHQ8 YnI+DQorICZuYnNwOyk8YnI+DQorezxicj4NCisgJm5ic3A7Vk9JRCAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqUmVzcG9uc2VEYXRhOzxicj4NCisgJm5ic3A7VUlO VDMyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypSZXNwb25zZURhdGFTaXplOzxicj4N CisgJm5ic3A7RUZJX1NUQVRVUyAmbmJzcDtTdGF0dXM7PGJyPg0KKyAmbmJzcDtWT0lEICZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypNb2NrUmVzcG9uc2VSZXN1bHRz ID0gTlVMTDs8YnI+DQorPGJyPg0KKyAmbmJzcDtNb2NrUmVzcG9uc2VSZXN1bHRzID0gKFVJTlQ4 ICopQWxsb2NhdGVaZXJvUG9vbCAoTk9fREFUQV9SRVNQT05TRV9TSVpFKTs8YnI+DQorICZuYnNw O1Jlc3BvbnNlRGF0YVNpemUgJm5ic3A7Jm5ic3A7Jm5ic3A7PSAoVUlOVDMyICopQWxsb2NhdGVa ZXJvUG9vbCAoc2l6ZW9mIChVSU5UMzIpKTs8YnI+DQorICZuYnNwO0NvcHlNZW0gKE1vY2tSZXNw b25zZVJlc3VsdHMsICZhbXA7Tm9EYXRhUmVzcG9uc2UsIE5PX0RBVEFfUkVTUE9OU0VfU0laRSk7 PGJyPg0KKzxicj4NCisgJm5ic3A7U3RhdHVzID0gTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlO VDggKilNb2NrUmVzcG9uc2VSZXN1bHRzLCBOT19EQVRBX1JFU1BPTlNFX1NJWkUsIEVGSV9TVUND RVNTKTs8YnI+DQorICZuYnNwO2lmIChFRklfRVJST1IgKFN0YXR1cykpIHs8YnI+DQorICZuYnNw OyZuYnNwOyZuYnNwO3JldHVybiBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQ7PGJyPg0KKyAm bmJzcDt9PGJyPg0KKzxicj4NCisgJm5ic3A7UmVzcG9uc2VEYXRhID0gKFVJTlQ4ICopQWxsb2Nh dGVaZXJvUG9vbCAoc2l6ZW9mIChOb0RhdGFSZXNwb25zZSkpOzxicj4NCisgJm5ic3A7U3RhdHVz ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gSXBtaUJsb2JUcmFuc2ZlclNl bmRJcG1pIChJcG1pQmxvYlRyYW5zZmVyU3ViY29tbWFuZEdldENvdW50LCBOVUxMLCAwLCBSZXNw b25zZURhdGEsIFJlc3BvbnNlRGF0YVNpemUpOzxicj4NCis8YnI+DQorICZuYnNwO1VUX0FTU0VS VF9TVEFUVVNfRVFVQUwgKFN0YXR1cywgRUZJX1NVQ0NFU1MpOzxicj4NCisgJm5ic3A7VVRfQVNT RVJUX0VRVUFMICgqUmVzcG9uc2VEYXRhU2l6ZSwgMCk7PGJyPg0KKyAmbmJzcDtGcmVlUG9vbCAo TW9ja1Jlc3BvbnNlUmVzdWx0cyk7PGJyPg0KKyAmbmJzcDtGcmVlUG9vbCAoUmVzcG9uc2VEYXRh U2l6ZSk7PGJyPg0KKyAmbmJzcDtGcmVlUG9vbCAoUmVzcG9uc2VEYXRhKTs8YnI+DQorICZuYnNw O3JldHVybiBVTklUX1RFU1RfUEFTU0VEOzxicj4NCit9PGJyPg0KKzxicj4NCisvKio8YnI+DQor ICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Q29udGV4dCAmbmJzcDsmbmJzcDsmbmJzcDtbT3B0aW9u YWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGVuYWJsZXM6PGJyPg0KKyAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1l dGVycyBhbmQ8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIpIHRlc3QtY2Fz ZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhPGJyPg0KKyAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDtyZWJvb3QuICZuYnNwO1RoaXMgcGFyYW1ldGVyIGlzIGEgVk9J RCogYW5kIGl0IGlzIHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmVz cG9uc2liaWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0IHRoZTxicj4NCisg Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9v ZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Y29uc3VtZSBpdC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7VU5JVF9URVNU X1BBU1NFRCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRo ZSB0ZXN0PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDtjYXNlIHdhcyBzdWNjZXNzZnVsLjxicj4NCisgJm5ic3A7QHJl dHZhbCAmbmJzcDtVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgJm5ic3A7QSB0ZXN0IGNhc2Ug YXNzZXJ0aW9uIGhhcyBmYWlsZWQuPGJyPg0KKyoqLzxicj4NCitVTklUX1RFU1RfU1RBVFVTPGJy Pg0KK0VGSUFQSTxicj4NCitTZW5kSXBtaUJhZE9lblJlc3BvbnNlICg8YnI+DQorICZuYnNwO0lO IFVOSVRfVEVTVF9DT05URVhUICZuYnNwO0NvbnRleHQ8YnI+DQorICZuYnNwOyk8YnI+DQorezxi cj4NCisgJm5ic3A7Vk9JRCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsqUmVzcG9uc2VEYXRhOzxicj4NCisgJm5ic3A7VUlOVDMyICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOypSZXNwb25zZURhdGFTaXplOzxicj4NCisgJm5ic3A7RUZJX1NUQVRVUyAmbmJz cDtTdGF0dXM7PGJyPg0KKyAmbmJzcDtWT0lEICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOypNb2NrUmVzcG9uc2VSZXN1bHRzID0gTlVMTDs8YnI+DQorPGJyPg0KKyAm bmJzcDtNb2NrUmVzcG9uc2VSZXN1bHRzID0gKFVJTlQ4ICopQWxsb2NhdGVaZXJvUG9vbCAoQkFE X09FTl9SRVNQT05TRV9TSVpFKTs8YnI+DQorICZuYnNwO1Jlc3BvbnNlRGF0YVNpemUgJm5ic3A7 Jm5ic3A7Jm5ic3A7PSAoVUlOVDMyICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChVSU5UMzIp KTs8YnI+DQorICZuYnNwO0NvcHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZhbXA7QmFkT2Vu UmVzcG9uc2UsIEJBRF9PRU5fUkVTUE9OU0VfU0laRSk7PGJyPg0KKzxicj4NCisgJm5ic3A7U3Rh dHVzID0gTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRz LCBCQURfT0VOX1JFU1BPTlNFX1NJWkUsIEVGSV9TVUNDRVNTKTs8YnI+DQorICZuYnNwO2lmIChF RklfRVJST1IgKFN0YXR1cykpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBVTklU X1RFU1RfRVJST1JfVEVTVF9GQUlMRUQ7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisgJm5i c3A7UmVzcG9uc2VEYXRhID0gKFVJTlQ4ICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChCYWRP ZW5SZXNwb25zZSkpOzxicj4NCisgJm5ic3A7U3RhdHVzICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOz0gSXBtaUJsb2JUcmFuc2ZlclNlbmRJcG1pIChJcG1pQmxvYlRyYW5zZmVy U3ViY29tbWFuZEdldENvdW50LCBOVUxMLCAwLCBSZXNwb25zZURhdGEsIFJlc3BvbnNlRGF0YVNp emUpOzxicj4NCis8YnI+DQorICZuYnNwO1VUX0FTU0VSVF9TVEFUVVNfRVFVQUwgKFN0YXR1cywg RUZJX1BST1RPQ09MX0VSUk9SKTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChNb2NrUmVzcG9uc2VS ZXN1bHRzKTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChSZXNwb25zZURhdGFTaXplKTs8YnI+DQor ICZuYnNwO0ZyZWVQb29sIChSZXNwb25zZURhdGEpOzxicj4NCisgJm5ic3A7cmV0dXJuIFVOSVRf VEVTVF9QQVNTRUQ7PGJyPg0KK308YnI+DQorPGJyPg0KKy8qKjxicj4NCisgJm5ic3A7QHBhcmFt W2luXSAmbmJzcDtDb250ZXh0ICZuYnNwOyZuYnNwOyZuYnNwO1tPcHRpb25hbF0gQW4gb3B0aW9u YWwgcGFyYW1ldGVyIHRoYXQgZW5hYmxlczo8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOzEpIHRlc3QtY2FzZSByZXVzZSB3aXRoIHZhcmllZCBwYXJhbWV0ZXJzIGFuZDxicj4N CisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7MikgdGVzdC1jYXNlIHJlLWVudHJ5IGZv ciBUYXJnZXQgdGVzdHMgdGhhdCBuZWVkIGE8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwO3JlYm9vdC4gJm5ic3A7VGhpcyBwYXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMg dGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZXNwb25zaWJpbGl0eSBv ZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtjb250ZW50cyBhcmUgd2VsbCB1bmRlcnN0b29kIGJ5IGFsbCB0ZXN0 IGNhc2VzIHRoYXQgbWF5PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjb25z dW1lIGl0Ljxicj4NCisgJm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RFU1RfUEFTU0VEICZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO1RoZSBVbml0IHRlc3QgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRlc3Q8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwO2Nhc2Ugd2FzIHN1Y2Nlc3NmdWwuPGJyPg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO1VO SVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRCAmbmJzcDtBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFz IGZhaWxlZC48YnI+DQorKiovPGJyPg0KK1VOSVRfVEVTVF9TVEFUVVM8YnI+DQorRUZJQVBJPGJy Pg0KK1NlbmRJcG1pQmFkQ3JjUmVzcG9uc2UgKDxicj4NCisgJm5ic3A7SU4gVU5JVF9URVNUX0NP TlRFWFQgJm5ic3A7Q29udGV4dDxicj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAmbmJzcDtW T0lEICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypSZXNwb25zZURh dGE7PGJyPg0KKyAmbmJzcDtVSU5UMzIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KlJl c3BvbnNlRGF0YVNpemU7PGJyPg0KKyAmbmJzcDtFRklfU1RBVFVTICZuYnNwO1N0YXR1czs8YnI+ DQorICZuYnNwO1ZPSUQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Kk1vY2tSZXNwb25zZVJlc3VsdHMgPSBOVUxMOzxicj4NCis8YnI+DQorICZuYnNwO01vY2tSZXNw b25zZVJlc3VsdHMgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKEJBRF9DUkNf UkVTUE9OU0VfU0laRSkpOzxicj4NCisgJm5ic3A7UmVzcG9uc2VEYXRhU2l6ZSAmbmJzcDsmbmJz cDsmbmJzcDs9IChVSU5UMzIgKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFVJTlQzMikpOzxi cj4NCisgJm5ic3A7Q29weU1lbSAoTW9ja1Jlc3BvbnNlUmVzdWx0cywgJmFtcDtCYWRDcmNSZXNw b25zZSwgQkFEX0NSQ19SRVNQT05TRV9TSVpFKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtTdGF0dXMg PSBNb2NrSXBtaVN1Ym1pdENvbW1hbmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJlc3VsdHMsIEJB RF9DUkNfUkVTUE9OU0VfU0laRSwgRUZJX1NVQ0NFU1MpOzxicj4NCisgJm5ic3A7aWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIFVOSVRfVEVT VF9FUlJPUl9URVNUX0ZBSUxFRDs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtS ZXNwb25zZURhdGEgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKEJhZENyY1Jl c3BvbnNlKSk7PGJyPg0KKyAmbmJzcDtTdGF0dXMgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7PSBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWkgKElwbWlCbG9iVHJhbnNmZXJTdWJj b21tYW5kR2V0Q291bnQsIE5VTEwsIDAsIFJlc3BvbnNlRGF0YSwgUmVzcG9uc2VEYXRhU2l6ZSk7 PGJyPg0KKzxicj4NCisgJm5ic3A7VVRfQVNTRVJUX1NUQVRVU19FUVVBTCAoU3RhdHVzLCBFRklf Q1JDX0VSUk9SKTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTs8 YnI+DQorICZuYnNwO0ZyZWVQb29sIChSZXNwb25zZURhdGFTaXplKTs8YnI+DQorICZuYnNwO0Zy ZWVQb29sIChSZXNwb25zZURhdGEpOzxicj4NCisgJm5ic3A7cmV0dXJuIFVOSVRfVEVTVF9QQVNT RUQ7PGJyPg0KK308YnI+DQorPGJyPg0KK1VJTlQ4ICZuYnNwO1ZhbGlkR2V0Q291bnRSZXNwb25z ZVtdID0gezxicj4NCisgJm5ic3A7MHgwMCwgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ly8gQ29tcGxldGlvbkNvZGU8YnI+DQorICZuYnNwOzB4Q0Ys IDB4QzIsIDB4MDAsICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy8vIE9wZW5C TUMgT0VOPGJyPg0KKyAmbmJzcDsweEE0LCAweDc4LCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvLyBDUkM8YnI+ DQorICZuYnNwOzB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIC8vIERhdGE8YnI+DQorfTs8YnI+DQor I2RlZmluZSBWQUxJRF9HRVRfQ09VTlRfUkVTUE9OU0VfU0laRSAmbmJzcDsxMCAqIHNpemVvZihV SU5UOCk8YnI+DQorPGJyPg0KKy8qKjxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJzcDtDb250 ZXh0ICZuYnNwOyZuYnNwOyZuYnNwO1tPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRo YXQgZW5hYmxlczo8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzEpIHRlc3Qt Y2FzZSByZXVzZSB3aXRoIHZhcmllZCBwYXJhbWV0ZXJzIGFuZDxicj4NCisgJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7MikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVzdHMg dGhhdCBuZWVkIGE8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3JlYm9vdC4g Jm5ic3A7VGhpcyBwYXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlPGJyPg0KKyAmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVzdCBhdXRo b3IgdG8gZW5zdXJlIHRoYXQgdGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtjb250ZW50cyBhcmUgd2VsbCB1bmRlcnN0b29kIGJ5IGFsbCB0ZXN0IGNhc2VzIHRoYXQgbWF5 PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjb25zdW1lIGl0Ljxicj4NCisg Jm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RFU1RfUEFTU0VEICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBV bml0IHRlc3QgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRlc3Q8YnI+DQorICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2Nhc2Ugd2Fz IHN1Y2Nlc3NmdWwuPGJyPg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO1VOSVRfVEVTVF9FUlJPUl9U RVNUX0ZBSUxFRCAmbmJzcDtBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzIGZhaWxlZC48YnI+DQor KiovPGJyPg0KK1VOSVRfVEVTVF9TVEFUVVM8YnI+DQorRUZJQVBJPGJyPg0KK1NlbmRJcG1pVmFs aWRDb3VudFJlc3BvbnNlICg8YnI+DQorICZuYnNwO0lOIFVOSVRfVEVTVF9DT05URVhUICZuYnNw O0NvbnRleHQ8YnI+DQorICZuYnNwOyk8YnI+DQorezxicj4NCisgJm5ic3A7VUlOVDggJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KlJlc3BvbnNlRGF0YTs8YnI+DQorICZuYnNw O1VJTlQzMiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqUmVzcG9uc2VEYXRhU2l6ZTs8 YnI+DQorICZuYnNwO0VGSV9TVEFUVVMgJm5ic3A7U3RhdHVzOzxicj4NCisgJm5ic3A7Vk9JRCAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqTW9ja1Jlc3BvbnNlUmVz dWx0cyA9IE5VTEw7PGJyPg0KKzxicj4NCisgJm5ic3A7TW9ja1Jlc3BvbnNlUmVzdWx0cyA9IChV SU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVkFMSURfR0VUX0NPVU5UX1JFU1BPTlNF X1NJWkUpKTs8YnI+DQorICZuYnNwO1Jlc3BvbnNlRGF0YVNpemUgJm5ic3A7Jm5ic3A7Jm5ic3A7 PSAoVUlOVDMyICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChVSU5UMzIpKTs8YnI+DQorICZu YnNwO0NvcHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZhbXA7VmFsaWRHZXRDb3VudFJlc3Bv bnNlLCBWQUxJRF9HRVRfQ09VTlRfUkVTUE9OU0VfU0laRSk7PGJyPg0KKzxicj4NCisgJm5ic3A7 U3RhdHVzID0gTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1 bHRzLCBWQUxJRF9HRVRfQ09VTlRfUkVTUE9OU0VfU0laRSwgRUZJX1NVQ0NFU1MpOzxicj4NCisg Jm5ic3A7aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7 cmV0dXJuIFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRDs8YnI+DQorICZuYnNwO308YnI+DQor PGJyPg0KKyAmbmJzcDtSZXNwb25zZURhdGEgPSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFZh bGlkR2V0Q291bnRSZXNwb25zZSkpOzxicj4NCisgJm5ic3A7U3RhdHVzICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gSXBtaUJsb2JUcmFuc2ZlclNlbmRJcG1pIChJcG1pQmxv YlRyYW5zZmVyU3ViY29tbWFuZEdldENvdW50LCBOVUxMLCAwLCBSZXNwb25zZURhdGEsIFJlc3Bv bnNlRGF0YVNpemUpOzxicj4NCis8YnI+DQorICZuYnNwO1VUX0FTU0VSVF9TVEFUVVNfRVFVQUwg KFN0YXR1cywgRUZJX1NVQ0NFU1MpOzxicj4NCisgJm5ic3A7RnJlZVBvb2wgKE1vY2tSZXNwb25z ZVJlc3VsdHMpOzxicj4NCisgJm5ic3A7RnJlZVBvb2wgKFJlc3BvbnNlRGF0YVNpemUpOzxicj4N CisgJm5ic3A7RnJlZVBvb2wgKFJlc3BvbnNlRGF0YSk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gVU5J VF9URVNUX1BBU1NFRDs8YnI+DQorfTxicj4NCis8YnI+DQorLyoqPGJyPg0KKyAmbmJzcDtAcGFy YW1baW5dICZuYnNwO0NvbnRleHQgJm5ic3A7Jm5ic3A7Jm5ic3A7W09wdGlvbmFsXSBBbiBvcHRp b25hbCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOjxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7MSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kPGJy Pg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsyKSB0ZXN0LWNhc2UgcmUtZW50cnkg Zm9yIFRhcmdldCB0ZXN0cyB0aGF0IG5lZWQgYTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7cmVib290LiAmbmJzcDtUaGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBpdCBp cyB0aGU8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3Jlc3BvbnNpYmlsaXR5 IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0aGU8YnI+DQorICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwO2NvbnRlbnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRl c3QgY2FzZXMgdGhhdCBtYXk8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2Nv bnN1bWUgaXQuPGJyPg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO1VOSVRfVEVTVF9QQVNTRUQgJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7VGhlIFVuaXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGVzdDxicj4N CisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Y2FzZSB3YXMgc3VjY2Vzc2Z1bC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7 VU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICZuYnNwO0EgdGVzdCBjYXNlIGFzc2VydGlvbiBo YXMgZmFpbGVkLjxicj4NCisqKi88YnI+DQorVU5JVF9URVNUX1NUQVRVUzxicj4NCitFRklBUEk8 YnI+DQorR2V0Q291bnRWYWxpZENvdW50UmVzcG9uc2UgKDxicj4NCisgJm5ic3A7SU4gVU5JVF9U RVNUX0NPTlRFWFQgJm5ic3A7Q29udGV4dDxicj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAm bmJzcDtFRklfU1RBVFVTICZuYnNwO1N0YXR1czs8YnI+DQorICZuYnNwO1VJTlQzMiAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtDb3VudDs8YnI+DQorICZuYnNwO1ZPSUQgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1vY2tSZXNwb25zZVJlc3VsdHMgPSBO VUxMOzxicj4NCis8YnI+DQorICZuYnNwO0NvdW50ID0gMDs8YnI+DQorPGJyPg0KKyAmbmJzcDtN b2NrUmVzcG9uc2VSZXN1bHRzID0gKFVJTlQ4ICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChW QUxJRF9HRVRfQ09VTlRfUkVTUE9OU0VfU0laRSkpOzxicj4NCisgJm5ic3A7Q29weU1lbSAoTW9j a1Jlc3BvbnNlUmVzdWx0cywgJmFtcDtWYWxpZEdldENvdW50UmVzcG9uc2UsIFZBTElEX0dFVF9D T1VOVF9SRVNQT05TRV9TSVpFKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBNb2NrSXBt aVN1Ym1pdENvbW1hbmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJlc3VsdHMsIFZBTElEX0dFVF9D T1VOVF9SRVNQT05TRV9TSVpFLCBFRklfU1VDQ0VTUyk7PGJyPg0KKyAmbmJzcDtpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtyZXR1cm4gVU5JVF9URVNU X0VSUk9SX1RFU1RfRkFJTEVEOzxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwO1N0 YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJHZXRDb3VudCAoJmFtcDtDb3VudCk7PGJyPg0KKzxicj4N CisgJm5ic3A7VVRfQVNTRVJUX1NUQVRVU19FUVVBTCAoU3RhdHVzLCBFRklfU1VDQ0VTUyk7PGJy Pg0KKyAmbmJzcDtVVF9BU1NFUlRfRVFVQUwgKENvdW50LCAxKTs8YnI+DQorICZuYnNwO0ZyZWVQ b29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTs8YnI+DQorICZuYnNwO3JldHVybiBVTklUX1RFU1Rf UEFTU0VEOzxicj4NCit9PGJyPg0KKzxicj4NCitVSU5UOCAmbmJzcDtWYWxpZEVudW1lcmF0ZVJl c3BvbnNlW10gPSB7PGJyPg0KKyAmbmJzcDsweDAwLCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvLyBDb21wbGV0aW9uQ29kZTxicj4NCisgJm5ic3A7 MHhDRiwgMHhDMiwgMHgwMCwgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ly8g T3BlbkJNQyBPRU48YnI+DQorICZuYnNwOzB4ODEsIDB4MTMsICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy8vIENS Qzxicj4NCisgJm5ic3A7MHgyRiwgMHg3MywgMHg2RCwgMHg2MiwgLy8gRGF0YSA9ICZxdW90Oy9z bWJpb3MmcXVvdDs8YnI+DQorICZuYnNwOzB4NjksIDB4NkYsIDB4NzMsIDB4MDAsPGJyPg0KK307 PGJyPg0KKyNkZWZpbmUgVkFMSURfRU5VTUVSQVRFX1JFU1BPTlNFX1NJWkUgJm5ic3A7MTQgKiBz aXplb2YoVUlOVDgpPGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5i c3A7Q29udGV4dCAmbmJzcDsmbmJzcDsmbmJzcDtbT3B0aW9uYWxdIEFuIG9wdGlvbmFsIHBhcmFt ZXRlciB0aGF0IGVuYWJsZXM6PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsx KSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQ8YnI+DQorICZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0 IHRlc3RzIHRoYXQgbmVlZCBhPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDty ZWJvb3QuICZuYnNwO1RoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRoZTxicj4N CisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmVzcG9uc2liaWxpdHkgb2YgdGhlIHRl c3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0IHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Y29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwgdGVzdCBjYXNlcyB0 aGF0IG1heTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29uc3VtZSBpdC48 YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7VU5JVF9URVNUX1BBU1NFRCAmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0PGJyPg0KKyAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtj YXNlIHdhcyBzdWNjZXNzZnVsLjxicj4NCisgJm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RFU1Rf RVJST1JfVEVTVF9GQUlMRUQgJm5ic3A7QSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcyBmYWlsZWQu PGJyPg0KKyoqLzxicj4NCitVTklUX1RFU1RfU1RBVFVTPGJyPg0KK0VGSUFQSTxicj4NCitFbnVt ZXJhdGVWYWxpZFJlc3BvbnNlICg8YnI+DQorICZuYnNwO0lOIFVOSVRfVEVTVF9DT05URVhUICZu YnNwO0NvbnRleHQ8YnI+DQorICZuYnNwOyk8YnI+DQorezxicj4NCisgJm5ic3A7RUZJX1NUQVRV UyAmbmJzcDtTdGF0dXM7PGJyPg0KKyAmbmJzcDtDSEFSOCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsqQmxvYklkOzxicj4NCisgJm5ic3A7Vk9JRCAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqTW9ja1Jlc3BvbnNlUmVzdWx0cyA9IE5VTEw7PGJy Pg0KKzxicj4NCisgJm5ic3A7TW9ja1Jlc3BvbnNlUmVzdWx0cyA9IChVSU5UOCAqKUFsbG9jYXRl WmVyb1Bvb2wgKHNpemVvZiAoVkFMSURfRU5VTUVSQVRFX1JFU1BPTlNFX1NJWkUpKTs8YnI+DQor ICZuYnNwO0NvcHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZhbXA7VmFsaWRFbnVtZXJhdGVS ZXNwb25zZSwgVkFMSURfRU5VTUVSQVRFX1JFU1BPTlNFX1NJWkUpOzxicj4NCis8YnI+DQorICZu YnNwO1N0YXR1cyA9IE1vY2tJcG1pU3VibWl0Q29tbWFuZCAoKFVJTlQ4ICopTW9ja1Jlc3BvbnNl UmVzdWx0cywgVkFMSURfRU5VTUVSQVRFX1JFU1BPTlNFX1NJWkUsIEVGSV9TVUNDRVNTKTs8YnI+ DQorICZuYnNwO2lmIChFRklfRVJST1IgKFN0YXR1cykpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZu YnNwO3JldHVybiBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQ7PGJyPg0KKyAmbmJzcDt9PGJy Pg0KKzxicj4NCisgJm5ic3A7QmxvYklkID0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChDSEFS OCkgKiBJUE1JX09FTV9CTE9CX01BWF9EQVRBX1BFUl9QQUNLRVQpOzxicj4NCis8YnI+DQorICZu YnNwO1N0YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJFbnVtZXJhdGUgKDAsIEJsb2JJZCk7PGJyPg0K Kzxicj4NCisgJm5ic3A7VVRfQVNTRVJUX1NUQVRVU19FUVVBTCAoU3RhdHVzLCBFRklfU1VDQ0VT Uyk7PGJyPg0KKyAmbmJzcDtVVF9BU1NFUlRfTUVNX0VRVUFMIChCbG9iSWQsICZxdW90Oy9zbWJp b3MmcXVvdDssIDcpOzxicj4NCisgJm5ic3A7RnJlZVBvb2wgKE1vY2tSZXNwb25zZVJlc3VsdHMp Ozxicj4NCisgJm5ic3A7RnJlZVBvb2wgKEJsb2JJZCk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gVU5J VF9URVNUX1BBU1NFRDs8YnI+DQorfTxicj4NCis8YnI+DQorLyoqPGJyPg0KKyAmbmJzcDtAcGFy YW1baW5dICZuYnNwO0NvbnRleHQgJm5ic3A7Jm5ic3A7Jm5ic3A7W09wdGlvbmFsXSBBbiBvcHRp b25hbCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOjxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7MSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kPGJy Pg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsyKSB0ZXN0LWNhc2UgcmUtZW50cnkg Zm9yIFRhcmdldCB0ZXN0cyB0aGF0IG5lZWQgYTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7cmVib290LiAmbmJzcDtUaGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBpdCBp cyB0aGU8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3Jlc3BvbnNpYmlsaXR5 IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0aGU8YnI+DQorICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwO2NvbnRlbnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRl c3QgY2FzZXMgdGhhdCBtYXk8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2Nv bnN1bWUgaXQuPGJyPg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO1VOSVRfVEVTVF9QQVNTRUQgJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7VGhlIFVuaXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGVzdDxicj4N CisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Y2FzZSB3YXMgc3VjY2Vzc2Z1bC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7 VU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICZuYnNwO0EgdGVzdCBjYXNlIGFzc2VydGlvbiBo YXMgZmFpbGVkLjxicj4NCisqKi88YnI+DQorVU5JVF9URVNUX1NUQVRVUzxicj4NCitFRklBUEk8 YnI+DQorRW51bWVyYXRlSW52YWxpZEJ1ZmZlciAoPGJyPg0KKyAmbmJzcDtJTiBVTklUX1RFU1Rf Q09OVEVYVCAmbmJzcDtDb250ZXh0PGJyPg0KKyAmbmJzcDspPGJyPg0KK3s8YnI+DQorICZuYnNw O0NIQVI4ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypCbG9iSWQ7PGJyPg0K KyAmbmJzcDtFRklfU1RBVFVTICZuYnNwO1N0YXR1czs8YnI+DQorICZuYnNwO1ZPSUQgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1vY2tSZXNwb25zZVJlc3VsdHMg PSBOVUxMOzxicj4NCis8YnI+DQorICZuYnNwO01vY2tSZXNwb25zZVJlc3VsdHMgPSAoVUlOVDgg KilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFZBTElEX0VOVU1FUkFURV9SRVNQT05TRV9TSVpF KSk7PGJyPg0KKyAmbmJzcDtDb3B5TWVtIChNb2NrUmVzcG9uc2VSZXN1bHRzLCAmYW1wO1ZhbGlk RW51bWVyYXRlUmVzcG9uc2UsIFZBTElEX0VOVU1FUkFURV9SRVNQT05TRV9TSVpFKTs8YnI+DQor PGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBNb2NrSXBtaVN1Ym1pdENvbW1hbmQgKChVSU5UOCAqKU1v Y2tSZXNwb25zZVJlc3VsdHMsIFZBTElEX0VOVU1FUkFURV9SRVNQT05TRV9TSVpFLCBFRklfU1VD Q0VTUyk7PGJyPg0KKyAmbmJzcDtpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7PGJyPg0KKyAmbmJz cDsmbmJzcDsmbmJzcDtyZXR1cm4gVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEOzxicj4NCisg Jm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwO0Jsb2JJZCA9IE5VTEw7PGJyPg0KKzxicj4NCisg Jm5ic3A7VVRfRVhQRUNUX0FTU0VSVF9GQUlMVVJFIChJcG1pQmxvYlRyYW5zZmVyRW51bWVyYXRl ICgwLCBCbG9iSWQpLCBOVUxMKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtGcmVlUG9vbCAoTW9ja1Jl c3BvbnNlUmVzdWx0cyk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gVU5JVF9URVNUX1BBU1NFRDs8YnI+ DQorfTxicj4NCis8YnI+DQorVUlOVDggJm5ic3A7VmFsaWRPcGVuUmVzcG9uc2VbXSA9IHs8YnI+ DQorICZuYnNwOzB4MDAsICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy8vIENvbXBsZXRpb25Db2RlPGJyPg0KKyAm bmJzcDsweENGLCAweEMyLCAweDAwLCAvLyBPcGVuQk1DIE9FTjxicj4NCisgJm5ic3A7MHg5Mywg MHhEMSwgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ly8gQ1JDPGJyPg0KKyAm bmJzcDsweDAzLCAweDAwLCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvLyBT ZXNzaW9uSWQgPSAzPGJyPg0KK307PGJyPg0KKyNkZWZpbmUgVkFMSURfT1BFTl9SRVNQT05TRV9T SVpFICZuYnNwOzggKiBzaXplb2YoVUlOVDgpPGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNw O0BwYXJhbVtpbl0gJm5ic3A7Q29udGV4dCAmbmJzcDsmbmJzcDsmbmJzcDtbT3B0aW9uYWxdIEFu IG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGVuYWJsZXM6PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBh bmQ8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIpIHRlc3QtY2FzZSByZS1l bnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDtyZWJvb3QuICZuYnNwO1RoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5k IGl0IGlzIHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmVzcG9uc2li aWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0IHRoZTxicj4NCisgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBh bGwgdGVzdCBjYXNlcyB0aGF0IG1heTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Y29uc3VtZSBpdC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7VU5JVF9URVNUX1BBU1NF RCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0 PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDtjYXNlIHdhcyBzdWNjZXNzZnVsLjxicj4NCisgJm5ic3A7QHJldHZhbCAm bmJzcDtVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgJm5ic3A7QSB0ZXN0IGNhc2UgYXNzZXJ0 aW9uIGhhcyBmYWlsZWQuPGJyPg0KKyoqLzxicj4NCitVTklUX1RFU1RfU1RBVFVTPGJyPg0KK0VG SUFQSTxicj4NCitPcGVuVmFsaWRSZXNwb25zZSAoPGJyPg0KKyAmbmJzcDtJTiBVTklUX1RFU1Rf Q09OVEVYVCAmbmJzcDtDb250ZXh0PGJyPg0KKyAmbmJzcDspPGJyPg0KK3s8YnI+DQorICZuYnNw O0VGSV9TVEFUVVMgJm5ic3A7U3RhdHVzOzxicj4NCisgJm5ic3A7Q0hBUjggJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KkJsb2JJZDs8YnI+DQorICZuYnNwO1VJTlQxNiAmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtGbGFnczs8YnI+DQorICZuYnNwO1VJTlQxNiAmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZXNzaW9uSWQ7PGJyPg0KKyAmbmJzcDtWT0lEICZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypNb2NrUmVzcG9uc2VSZXN1 bHRzICZuYnNwOz0gTlVMTDs8YnI+DQorICZuYnNwO1ZPSUQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1vY2tSZXNwb25zZVJlc3VsdHMyID0gTlVMTDs8YnI+DQor ICZuYnNwO1ZPSUQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1v Y2tSZXNwb25zZVJlc3VsdHMzID0gTlVMTDs8YnI+DQorPGJyPg0KKyAmbmJzcDtGbGFncyA9IEJM T0JfVFJBTlNGRVJfU1RBVF9PUEVOX1c7PGJyPg0KKzxicj4NCisgJm5ic3A7Ly88YnI+DQorICZu YnNwOy8vIEFuIG9wZW4gY2FsbCBlZmZlY3RpdmVseSBsZWFkcyB0byB0aHJlZSBJUE1JIGNvbW1h bmRzPGJyPg0KKyAmbmJzcDsvLyAxLiBHZXRDb3VudCBvZiBibG9iczxicj4NCisgJm5ic3A7Ly8g Mi4gRW51bWVyYXRlIHRoZSByZXF1ZXN0ZWQgYmxvYjxicj4NCisgJm5ic3A7Ly8gMy4gT3BlbiB0 aGUgcmVxdWVzdGVkIGJsb2I8YnI+DQorICZuYnNwOy8vPGJyPg0KKyAmbmJzcDsvLyBTbyB3ZSds bCBwdXNoIHRocmVlIElwbWkgcmVzcG9uc2VzIGluIHRoaXMgY2FzZTxicj4NCisgJm5ic3A7Ly88 YnI+DQorPGJyPg0KKyAmbmJzcDtNb2NrUmVzcG9uc2VSZXN1bHRzID0gKFVJTlQ4ICopQWxsb2Nh dGVaZXJvUG9vbCAoc2l6ZW9mIChWQUxJRF9PUEVOX1JFU1BPTlNFX1NJWkUpKTs8YnI+DQorPGJy Pg0KKyAmbmJzcDtDb3B5TWVtIChNb2NrUmVzcG9uc2VSZXN1bHRzLCAmYW1wO1ZhbGlkT3BlblJl c3BvbnNlLCBWQUxJRF9PUEVOX1JFU1BPTlNFX1NJWkUpOzxicj4NCisgJm5ic3A7U3RhdHVzID0g TW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRzLCBWQUxJ RF9PUEVOX1JFU1BPTlNFX1NJWkUsIEVGSV9TVUNDRVNTKTs8YnI+DQorICZuYnNwO2lmIChFRklf RVJST1IgKFN0YXR1cykpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBVTklUX1RF U1RfRVJST1JfVEVTVF9GQUlMRUQ7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisgJm5ic3A7 TW9ja1Jlc3BvbnNlUmVzdWx0czIgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2Yg KFZBTElEX0VOVU1FUkFURV9SRVNQT05TRV9TSVpFKSk7PGJyPg0KKyAmbmJzcDtDb3B5TWVtIChN b2NrUmVzcG9uc2VSZXN1bHRzMiwgJmFtcDtWYWxpZEVudW1lcmF0ZVJlc3BvbnNlLCBWQUxJRF9F TlVNRVJBVEVfUkVTUE9OU0VfU0laRSk7PGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBNb2NrSXBtaVN1 Ym1pdENvbW1hbmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJlc3VsdHMyLCBWQUxJRF9FTlVNRVJB VEVfUkVTUE9OU0VfU0laRSwgRUZJX1NVQ0NFU1MpOzxicj4NCisgJm5ic3A7aWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIFVOSVRfVEVTVF9F UlJPUl9URVNUX0ZBSUxFRDs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtNb2Nr UmVzcG9uc2VSZXN1bHRzMyA9IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVkFM SURfR0VUX0NPVU5UX1JFU1BPTlNFX1NJWkUpKTs8YnI+DQorICZuYnNwO0NvcHlNZW0gKE1vY2tS ZXNwb25zZVJlc3VsdHMzLCAmYW1wO1ZhbGlkR2V0Q291bnRSZXNwb25zZSwgVkFMSURfR0VUX0NP VU5UX1JFU1BPTlNFX1NJWkUpOzxicj4NCisgJm5ic3A7U3RhdHVzID0gTW9ja0lwbWlTdWJtaXRD b21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRzMywgVkFMSURfR0VUX0NPVU5UX1JF U1BPTlNFX1NJWkUsIEVGSV9TVUNDRVNTKTs8YnI+DQorICZuYnNwO2lmIChFRklfRVJST1IgKFN0 YXR1cykpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBVTklUX1RFU1RfRVJST1Jf VEVTVF9GQUlMRUQ7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisgJm5ic3A7QmxvYklkID0g JnF1b3Q7L3NtYmlvcyZxdW90Ozs8YnI+DQorPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBJcG1pQmxv YlRyYW5zZmVyT3BlbiAoQmxvYklkLCBGbGFncywgJmFtcDtTZXNzaW9uSWQpOzxicj4NCis8YnI+ DQorICZuYnNwO1VUX0FTU0VSVF9TVEFUVVNfRVFVQUwgKFN0YXR1cywgRUZJX1NVQ0NFU1MpOzxi cj4NCisgJm5ic3A7VVRfQVNTRVJUX0VRVUFMIChTZXNzaW9uSWQsIDMpOzxicj4NCisgJm5ic3A7 RnJlZVBvb2wgKE1vY2tSZXNwb25zZVJlc3VsdHMpOzxicj4NCisgJm5ic3A7cmV0dXJuIFVOSVRf VEVTVF9QQVNTRUQ7PGJyPg0KK308YnI+DQorPGJyPg0KK1VJTlQ4ICZuYnNwO1ZhbGlkUmVhZFJl c3BvbnNlW10gPSB7PGJyPg0KKyAmbmJzcDsweDAwLCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvLyBDb21wbGV0aW9uQ29kZTxicj4NCisgJm5ic3A7 MHhDRiwgMHhDMiwgMHgwMCwgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ly8g T3BlbkJNQyBPRU48YnI+DQorICZuYnNwOzB4MjEsIDB4NkYsICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy8vIENS Qzxicj4NCisgJm5ic3A7MHgwMCwgMHgwMSwgMHgwMiwgMHgwMywgLy8gRGF0YSB0byByZWFkPGJy Pg0KK307PGJyPg0KKzxicj4NCisjZGVmaW5lIFZBTElEX1JFQURfUkVTUE9OU0VfU0laRSAmbmJz cDsxMCAqIHNpemVvZihVSU5UOCk8YnI+DQorPGJyPg0KKy8qKjxicj4NCisgJm5ic3A7QHBhcmFt W2luXSAmbmJzcDtDb250ZXh0ICZuYnNwOyZuYnNwOyZuYnNwO1tPcHRpb25hbF0gQW4gb3B0aW9u YWwgcGFyYW1ldGVyIHRoYXQgZW5hYmxlczo8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOzEpIHRlc3QtY2FzZSByZXVzZSB3aXRoIHZhcmllZCBwYXJhbWV0ZXJzIGFuZDxicj4N CisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7MikgdGVzdC1jYXNlIHJlLWVudHJ5IGZv ciBUYXJnZXQgdGVzdHMgdGhhdCBuZWVkIGE8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwO3JlYm9vdC4gJm5ic3A7VGhpcyBwYXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMg dGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZXNwb25zaWJpbGl0eSBv ZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDtjb250ZW50cyBhcmUgd2VsbCB1bmRlcnN0b29kIGJ5IGFsbCB0ZXN0 IGNhc2VzIHRoYXQgbWF5PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjb25z dW1lIGl0Ljxicj4NCisgJm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RFU1RfUEFTU0VEICZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwO1RoZSBVbml0IHRlc3QgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRlc3Q8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwO2Nhc2Ugd2FzIHN1Y2Nlc3NmdWwuPGJyPg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO1VO SVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRCAmbmJzcDtBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFz IGZhaWxlZC48YnI+DQorKiovPGJyPg0KK1VOSVRfVEVTVF9TVEFUVVM8YnI+DQorRUZJQVBJPGJy Pg0KK1JlYWRWYWxpZFJlc3BvbnNlICg8YnI+DQorICZuYnNwO0lOIFVOSVRfVEVTVF9DT05URVhU ICZuYnNwO0NvbnRleHQ8YnI+DQorICZuYnNwOyk8YnI+DQorezxicj4NCisgJm5ic3A7RUZJX1NU QVRVUyAmbmJzcDtTdGF0dXM7PGJyPg0KKyAmbmJzcDtVSU5UOCAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsqUmVzcG9uc2VEYXRhOzxicj4NCisgJm5ic3A7VUlOVDggJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7RXhwZWN0ZWREYXRhUmVzcG9uc2VbNF0gPSB7 IDB4MDAsIDB4MDEsIDB4MDIsIDB4MDMgfTs8YnI+DQorICZuYnNwO1ZPSUQgJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1vY2tSZXNwb25zZVJlc3VsdHMgJm5ic3A7 Jm5ic3A7Jm5ic3A7PSBOVUxMOzxicj4NCis8YnI+DQorICZuYnNwO01vY2tSZXNwb25zZVJlc3Vs dHMgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFZBTElEX1JFQURfUkVTUE9O U0VfU0laRSkpOzxicj4NCisgJm5ic3A7Q29weU1lbSAoTW9ja1Jlc3BvbnNlUmVzdWx0cywgJmFt cDtWYWxpZFJlYWRSZXNwb25zZSwgVkFMSURfUkVBRF9SRVNQT05TRV9TSVpFKTs8YnI+DQorICZu YnNwO1Jlc3BvbnNlRGF0YSA9IEFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVmFsaWRSZWFkUmVz cG9uc2UpKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBNb2NrSXBtaVN1Ym1pdENvbW1h bmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJlc3VsdHMsIFZBTElEX1JFQURfUkVTUE9OU0VfU0la RSwgRUZJX1NVQ0NFU1MpOzxicj4NCisgJm5ic3A7aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgezxi cj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxF RDs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBJcG1pQmxvYlRy YW5zZmVyUmVhZCAoMCwgMCwgNCwgUmVzcG9uc2VEYXRhKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtV VF9BU1NFUlRfU1RBVFVTX0VRVUFMIChTdGF0dXMsIEVGSV9TVUNDRVNTKTs8YnI+DQorICZuYnNw O1VUX0FTU0VSVF9NRU1fRVFVQUwgKFJlc3BvbnNlRGF0YSwgRXhwZWN0ZWREYXRhUmVzcG9uc2Us IDQpOzxicj4NCisgJm5ic3A7RnJlZVBvb2wgKE1vY2tSZXNwb25zZVJlc3VsdHMpOzxicj4NCisg Jm5ic3A7RnJlZVBvb2wgKFJlc3BvbnNlRGF0YSk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gVU5JVF9U RVNUX1BBU1NFRDs8YnI+DQorfTxicj4NCis8YnI+DQorLyoqPGJyPg0KKyAmbmJzcDtAcGFyYW1b aW5dICZuYnNwO0NvbnRleHQgJm5ic3A7Jm5ic3A7Jm5ic3A7W09wdGlvbmFsXSBBbiBvcHRpb25h bCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOjxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7MSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kPGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsyKSB0ZXN0LWNhc2UgcmUtZW50cnkgZm9y IFRhcmdldCB0ZXN0cyB0aGF0IG5lZWQgYTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7cmVib290LiAmbmJzcDtUaGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBpdCBpcyB0 aGU8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3Jlc3BvbnNpYmlsaXR5IG9m IHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0aGU8YnI+DQorICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwO2NvbnRlbnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRlc3Qg Y2FzZXMgdGhhdCBtYXk8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2NvbnN1 bWUgaXQuPGJyPg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO1VOSVRfVEVTVF9QQVNTRUQgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7VGhlIFVuaXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGVzdDxicj4NCisg Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Y2FzZSB3YXMgc3VjY2Vzc2Z1bC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7VU5J VF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICZuYnNwO0EgdGVzdCBjYXNlIGFzc2VydGlvbiBoYXMg ZmFpbGVkLjxicj4NCisqKi88YnI+DQorVU5JVF9URVNUX1NUQVRVUzxicj4NCitFRklBUEk8YnI+ DQorUmVhZEludmFsaWRCdWZmZXIgKDxicj4NCisgJm5ic3A7SU4gVU5JVF9URVNUX0NPTlRFWFQg Jm5ic3A7Q29udGV4dDxicj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAmbmJzcDtVSU5UOCAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqUmVzcG9uc2VEYXRhOzxicj4NCisg Jm5ic3A7RUZJX1NUQVRVUyAmbmJzcDtTdGF0dXM7PGJyPg0KKyAmbmJzcDtWT0lEICZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypNb2NrUmVzcG9uc2VSZXN1bHRzID0g TlVMTDs8YnI+DQorPGJyPg0KKyAmbmJzcDtNb2NrUmVzcG9uc2VSZXN1bHRzID0gKFVJTlQ4ICop QWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChWQUxJRF9SRUFEX1JFU1BPTlNFX1NJWkUpKTs8YnI+ DQorICZuYnNwO0NvcHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZhbXA7VmFsaWRSZWFkUmVz cG9uc2UsIFZBTElEX1JFQURfUkVTUE9OU0VfU0laRSk7PGJyPg0KKyAmbmJzcDtSZXNwb25zZURh dGEgPSBOVUxMOzxicj4NCis8YnI+DQorICZuYnNwO1N0YXR1cyA9IE1vY2tJcG1pU3VibWl0Q29t bWFuZCAoKFVJTlQ4ICopTW9ja1Jlc3BvbnNlUmVzdWx0cywgVkFMSURfUkVBRF9SRVNQT05TRV9T SVpFLCBFRklfU1VDQ0VTUyk7PGJyPg0KKyAmbmJzcDtpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtyZXR1cm4gVU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJ TEVEOzxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwO1VUX0VYUEVDVF9BU1NFUlRf RkFJTFVSRSAoSXBtaUJsb2JUcmFuc2ZlclJlYWQgKDAsIDAsIDQsIFJlc3BvbnNlRGF0YSksIE5V TEwpOzxicj4NCis8YnI+DQorICZuYnNwO0ZyZWVQb29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTs8 YnI+DQorICZuYnNwO3JldHVybiBVTklUX1RFU1RfUEFTU0VEOzxicj4NCit9PGJyPg0KKzxicj4N CisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Q29udGV4dCAmbmJzcDsmbmJzcDsm bmJzcDtbT3B0aW9uYWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGVuYWJsZXM6PGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2 YXJpZWQgcGFyYW1ldGVycyBhbmQ8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OzIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhPGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZWJvb3QuICZuYnNwO1RoaXMgcGFyYW1l dGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7cmVzcG9uc2liaWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0 IHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29udGVudHMgYXJlIHdl bGwgdW5kZXJzdG9vZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heTxicj4NCisgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29uc3VtZSBpdC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5i c3A7VU5JVF9URVNUX1BBU1NFRCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgVW5pdCB0ZXN0IGhhcyBjb21w bGV0ZWQgYW5kIHRoZSB0ZXN0PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjYXNlIHdhcyBzdWNjZXNzZnVsLjxicj4N CisgJm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgJm5ic3A7 QSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcyBmYWlsZWQuPGJyPg0KKyoqLzxicj4NCitVTklUX1RF U1RfU1RBVFVTPGJyPg0KK0VGSUFQSTxicj4NCitXcml0ZVZhbGlkUmVzcG9uc2UgKDxicj4NCisg Jm5ic3A7SU4gVU5JVF9URVNUX0NPTlRFWFQgJm5ic3A7Q29udGV4dDxicj4NCisgJm5ic3A7KTxi cj4NCit7PGJyPg0KKyAmbmJzcDtFRklfU1RBVFVTICZuYnNwO1N0YXR1czs8YnI+DQorICZuYnNw O1VJTlQ4ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1NlbmREYXRhWzRdICZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0geyAw eDAwLCAweDAxLCAweDAyLCAweDAzIH07PGJyPg0KKyAmbmJzcDtWT0lEICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypNb2NrUmVzcG9uc2VSZXN1bHRzID0gTlVMTDs8 YnI+DQorPGJyPg0KKyAmbmJzcDtNb2NrUmVzcG9uc2VSZXN1bHRzID0gKFVJTlQ4ICopQWxsb2Nh dGVaZXJvUG9vbCAoc2l6ZW9mIChWQUxJRF9OT0RBVEFfUkVTUE9OU0VfU0laRSkpOzxicj4NCisg Jm5ic3A7Q29weU1lbSAoTW9ja1Jlc3BvbnNlUmVzdWx0cywgJmFtcDtWYWxpZE5vRGF0YVJlc3Bv bnNlLCBWQUxJRF9OT0RBVEFfUkVTUE9OU0VfU0laRSk7PGJyPg0KKzxicj4NCisgJm5ic3A7U3Rh dHVzID0gTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRz LCBWQUxJRF9OT0RBVEFfUkVTUE9OU0VfU0laRSwgRUZJX1NVQ0NFU1MpOzxicj4NCisgJm5ic3A7 aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJu IFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRDs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0K KyAmbmJzcDtTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVyV3JpdGUgKDAsIDAsIFNlbmREYXRhLCA0 KTs8YnI+DQorPGJyPg0KKyAmbmJzcDtVVF9BU1NFUlRfU1RBVFVTX0VRVUFMIChTdGF0dXMsIEVG SV9TVUNDRVNTKTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTs8 YnI+DQorICZuYnNwO3JldHVybiBVTklUX1RFU1RfUEFTU0VEOzxicj4NCit9PGJyPg0KKzxicj4N CisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Q29udGV4dCAmbmJzcDsmbmJzcDsm bmJzcDtbT3B0aW9uYWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGVuYWJsZXM6PGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2 YXJpZWQgcGFyYW1ldGVycyBhbmQ8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OzIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhPGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZWJvb3QuICZuYnNwO1RoaXMgcGFyYW1l dGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7cmVzcG9uc2liaWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0 IHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29udGVudHMgYXJlIHdl bGwgdW5kZXJzdG9vZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heTxicj4NCisgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29uc3VtZSBpdC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5i c3A7VU5JVF9URVNUX1BBU1NFRCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgVW5pdCB0ZXN0IGhhcyBjb21w bGV0ZWQgYW5kIHRoZSB0ZXN0PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjYXNlIHdhcyBzdWNjZXNzZnVsLjxicj4N CisgJm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgJm5ic3A7 QSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcyBmYWlsZWQuPGJyPg0KKyoqLzxicj4NCitVTklUX1RF U1RfU1RBVFVTPGJyPg0KK0VGSUFQSTxicj4NCitDb21taXRWYWxpZFJlc3BvbnNlICg8YnI+DQor ICZuYnNwO0lOIFVOSVRfVEVTVF9DT05URVhUICZuYnNwO0NvbnRleHQ8YnI+DQorICZuYnNwOyk8 YnI+DQorezxicj4NCisgJm5ic3A7RUZJX1NUQVRVUyAmbmJzcDtTdGF0dXM7PGJyPg0KKyAmbmJz cDtVSU5UOCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTZW5kRGF0YVs0XSAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs9IHsg MHgwMCwgMHgwMSwgMHgwMiwgMHgwMyB9Ozxicj4NCisgJm5ic3A7Vk9JRCAmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqTW9ja1Jlc3BvbnNlUmVzdWx0cyA9IE5VTEw7 PGJyPg0KKzxicj4NCisgJm5ic3A7TW9ja1Jlc3BvbnNlUmVzdWx0cyA9IChVSU5UOCAqKUFsbG9j YXRlWmVyb1Bvb2wgKHNpemVvZiAoVkFMSURfTk9EQVRBX1JFU1BPTlNFX1NJWkUpKTs8YnI+DQor ICZuYnNwO0NvcHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZhbXA7VmFsaWROb0RhdGFSZXNw b25zZSwgVkFMSURfTk9EQVRBX1JFU1BPTlNFX1NJWkUpOzxicj4NCis8YnI+DQorICZuYnNwO1N0 YXR1cyA9IE1vY2tJcG1pU3VibWl0Q29tbWFuZCAoKFVJTlQ4ICopTW9ja1Jlc3BvbnNlUmVzdWx0 cywgVkFMSURfTk9EQVRBX1JFU1BPTlNFX1NJWkUsIEVGSV9TVUNDRVNTKTs8YnI+DQorICZuYnNw O2lmIChFRklfRVJST1IgKFN0YXR1cykpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVy biBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQ7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4N CisgJm5ic3A7U3RhdHVzID0gSXBtaUJsb2JUcmFuc2ZlckNvbW1pdCAoMCwgNCwgU2VuZERhdGEp Ozxicj4NCis8YnI+DQorICZuYnNwO1VUX0FTU0VSVF9TVEFUVVNfRVFVQUwgKFN0YXR1cywgRUZJ X1NVQ0NFU1MpOzxicj4NCisgJm5ic3A7RnJlZVBvb2wgKE1vY2tSZXNwb25zZVJlc3VsdHMpOzxi cj4NCisgJm5ic3A7cmV0dXJuIFVOSVRfVEVTVF9QQVNTRUQ7PGJyPg0KK308YnI+DQorPGJyPg0K Ky8qKjxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJzcDtDb250ZXh0ICZuYnNwOyZuYnNwOyZu YnNwO1tPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgZW5hYmxlczo8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzEpIHRlc3QtY2FzZSByZXVzZSB3aXRoIHZh cmllZCBwYXJhbWV0ZXJzIGFuZDxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 MikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQgdGVzdHMgdGhhdCBuZWVkIGE8YnI+DQor ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3JlYm9vdC4gJm5ic3A7VGhpcyBwYXJhbWV0 ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDtyZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVzdCBhdXRob3IgdG8gZW5zdXJlIHRoYXQg dGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjb250ZW50cyBhcmUgd2Vs bCB1bmRlcnN0b29kIGJ5IGFsbCB0ZXN0IGNhc2VzIHRoYXQgbWF5PGJyPg0KKyAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDtjb25zdW1lIGl0Ljxicj4NCisgJm5ic3A7QHJldHZhbCAmbmJz cDtVTklUX1RFU1RfUEFTU0VEICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1RoZSBVbml0IHRlc3QgaGFzIGNvbXBs ZXRlZCBhbmQgdGhlIHRlc3Q8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2Nhc2Ugd2FzIHN1Y2Nlc3NmdWwuPGJyPg0K KyAmbmJzcDtAcmV0dmFsICZuYnNwO1VOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRCAmbmJzcDtB IHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzIGZhaWxlZC48YnI+DQorKiovPGJyPg0KK1VOSVRfVEVT VF9TVEFUVVM8YnI+DQorRUZJQVBJPGJyPg0KK0Nsb3NlVmFsaWRSZXNwb25zZSAoPGJyPg0KKyAm bmJzcDtJTiBVTklUX1RFU1RfQ09OVEVYVCAmbmJzcDtDb250ZXh0PGJyPg0KKyAmbmJzcDspPGJy Pg0KK3s8YnI+DQorICZuYnNwO0VGSV9TVEFUVVMgJm5ic3A7U3RhdHVzOzxicj4NCisgJm5ic3A7 Vk9JRCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqTW9ja1Jlc3Bv bnNlUmVzdWx0cyA9IE5VTEw7PGJyPg0KKzxicj4NCisgJm5ic3A7TW9ja1Jlc3BvbnNlUmVzdWx0 cyA9IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVkFMSURfTk9EQVRBX1JFU1BP TlNFX1NJWkUpKTs8YnI+DQorICZuYnNwO0NvcHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZh bXA7VmFsaWROb0RhdGFSZXNwb25zZSwgVkFMSURfTk9EQVRBX1JFU1BPTlNFX1NJWkUpOzxicj4N Cis8YnI+DQorICZuYnNwO1N0YXR1cyA9IE1vY2tJcG1pU3VibWl0Q29tbWFuZCAoKFVJTlQ4ICop TW9ja1Jlc3BvbnNlUmVzdWx0cywgVkFMSURfTk9EQVRBX1JFU1BPTlNFX1NJWkUsIEVGSV9TVUND RVNTKTs8YnI+DQorICZuYnNwO2lmIChFRklfRVJST1IgKFN0YXR1cykpIHs8YnI+DQorICZuYnNw OyZuYnNwOyZuYnNwO3JldHVybiBVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQ7PGJyPg0KKyAm bmJzcDt9PGJyPg0KKzxicj4NCisgJm5ic3A7U3RhdHVzID0gSXBtaUJsb2JUcmFuc2ZlckNsb3Nl ICgxKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtVVF9BU1NFUlRfU1RBVFVTX0VRVUFMIChTdGF0dXMs IEVGSV9TVUNDRVNTKTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChNb2NrUmVzcG9uc2VSZXN1bHRz KTs8YnI+DQorICZuYnNwO3JldHVybiBVTklUX1RFU1RfUEFTU0VEOzxicj4NCit9PGJyPg0KKzxi cj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Q29udGV4dCAmbmJzcDsmbmJz cDsmbmJzcDtbT3B0aW9uYWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGVuYWJsZXM6PGJy Pg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0 aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQ8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOzIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhPGJy Pg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZWJvb3QuICZuYnNwO1RoaXMgcGFy YW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7cmVzcG9uc2liaWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0 aGF0IHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29udGVudHMgYXJl IHdlbGwgdW5kZXJzdG9vZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heTxicj4NCisgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29uc3VtZSBpdC48YnI+DQorICZuYnNwO0ByZXR2YWwg Jm5ic3A7VU5JVF9URVNUX1BBU1NFRCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgVW5pdCB0ZXN0IGhhcyBj b21wbGV0ZWQgYW5kIHRoZSB0ZXN0PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjYXNlIHdhcyBzdWNjZXNzZnVsLjxi cj4NCisgJm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgJm5i c3A7QSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcyBmYWlsZWQuPGJyPg0KKyoqLzxicj4NCitVTklU X1RFU1RfU1RBVFVTPGJyPg0KK0VGSUFQSTxicj4NCitEZWxldGVWYWxpZFJlc3BvbnNlICg8YnI+ DQorICZuYnNwO0lOIFVOSVRfVEVTVF9DT05URVhUICZuYnNwO0NvbnRleHQ8YnI+DQorICZuYnNw Oyk8YnI+DQorezxicj4NCisgJm5ic3A7RUZJX1NUQVRVUyAmbmJzcDtTdGF0dXM7PGJyPg0KKyAm bmJzcDtWT0lEICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypNb2Nr UmVzcG9uc2VSZXN1bHRzID0gTlVMTDs8YnI+DQorPGJyPg0KKyAmbmJzcDtNb2NrUmVzcG9uc2VS ZXN1bHRzID0gKFVJTlQ4ICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChWQUxJRF9OT0RBVEFf UkVTUE9OU0VfU0laRSkpOzxicj4NCisgJm5ic3A7Q29weU1lbSAoTW9ja1Jlc3BvbnNlUmVzdWx0 cywgJmFtcDtWYWxpZE5vRGF0YVJlc3BvbnNlLCBWQUxJRF9OT0RBVEFfUkVTUE9OU0VfU0laRSk7 PGJyPg0KKzxicj4NCisgJm5ic3A7U3RhdHVzID0gTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlO VDggKilNb2NrUmVzcG9uc2VSZXN1bHRzLCBWQUxJRF9OT0RBVEFfUkVTUE9OU0VfU0laRSwgRUZJ X1NVQ0NFU1MpOzxicj4NCisgJm5ic3A7aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgezxicj4NCisg Jm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRDs8YnI+ DQorICZuYnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBJcG1pQmxvYlRyYW5zZmVy RGVsZXRlICgmcXVvdDsvc21iaW9zJnF1b3Q7KTs8YnI+DQorPGJyPg0KKyAmbmJzcDtVVF9BU1NF UlRfU1RBVFVTX0VRVUFMIChTdGF0dXMsIEVGSV9TVUNDRVNTKTs8YnI+DQorICZuYnNwO0ZyZWVQ b29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTs8YnI+DQorICZuYnNwO3JldHVybiBVTklUX1RFU1Rf UEFTU0VEOzxicj4NCit9PGJyPg0KKzxicj4NCitVSU5UOCAmbmJzcDtWYWxpZEJsb2JTdGF0UmVz cG9uc2VbXSA9IHs8YnI+DQorICZuYnNwOzB4MDAsICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOy8vIENvbXBsZXRpb25Db2RlPGJyPg0KKyAmbmJzcDsw eENGLCAweEMyLCAweDAwLCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvLyBP cGVuQk1DIE9FTjxicj4NCisgJm5ic3A7MHgxRiwgMHg0RiwgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ly8gQ3Jj PGJyPg0KKyAmbmJzcDsweDAxLCAweDAwLCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsvLyBCbG9iU3RhdGU8YnI+ DQorICZuYnNwOzB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsIC8vIEJsb2JTaXplPGJyPg0KKyAmbmJz cDsweDA0LCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsvLyBNZXRhRGF0YUxlbjxicj4NCisgJm5ic3A7MHgwNiwgMHgwNywgMHgwOCwgMHgwOSwgLy8g TWV0YURhdGE8YnI+DQorfTs8YnI+DQorPGJyPg0KKyNkZWZpbmUgVkFMSURfQkxPQl9TVEFUX1JF U1BPTlNFX1NJWkUgJm5ic3A7MTcgKiBzaXplb2YoVUlOVDgpPGJyPg0KKzxicj4NCisvKio8YnI+ DQorICZuYnNwO0BwYXJhbVtpbl0gJm5ic3A7Q29udGV4dCAmbmJzcDsmbmJzcDsmbmJzcDtbT3B0 aW9uYWxdIEFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IGVuYWJsZXM6PGJyPg0KKyAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFy YW1ldGVycyBhbmQ8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIpIHRlc3Qt Y2FzZSByZS1lbnRyeSBmb3IgVGFyZ2V0IHRlc3RzIHRoYXQgbmVlZCBhPGJyPg0KKyAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZWJvb3QuICZuYnNwO1RoaXMgcGFyYW1ldGVyIGlzIGEg Vk9JRCogYW5kIGl0IGlzIHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 cmVzcG9uc2liaWxpdHkgb2YgdGhlIHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0IHRoZTxicj4N CisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29udGVudHMgYXJlIHdlbGwgdW5kZXJz dG9vZCBieSBhbGwgdGVzdCBjYXNlcyB0aGF0IG1heTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Y29uc3VtZSBpdC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7VU5JVF9U RVNUX1BBU1NFRCAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5k IHRoZSB0ZXN0PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjYXNlIHdhcyBzdWNjZXNzZnVsLjxicj4NCisgJm5ic3A7 QHJldHZhbCAmbmJzcDtVTklUX1RFU1RfRVJST1JfVEVTVF9GQUlMRUQgJm5ic3A7QSB0ZXN0IGNh c2UgYXNzZXJ0aW9uIGhhcyBmYWlsZWQuPGJyPg0KKyoqLzxicj4NCitVTklUX1RFU1RfU1RBVFVT PGJyPg0KK0VGSUFQSTxicj4NCitCbG9iU3RhdFZhbGlkUmVzcG9uc2UgKDxicj4NCisgJm5ic3A7 SU4gVU5JVF9URVNUX0NPTlRFWFQgJm5ic3A7Q29udGV4dDxicj4NCisgJm5ic3A7KTxicj4NCit7 PGJyPg0KKyAmbmJzcDtFRklfU1RBVFVTICZuYnNwO1N0YXR1czs8YnI+DQorICZuYnNwO1VJTlQx NiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqQmxvYlN0YXRlOzxicj4NCisgJm5ic3A7 VUlOVDMyICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypTaXplOzxicj4NCisgJm5ic3A7 VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1ldGFkYXRhTGVuZ3Ro Ozxicj4NCisgJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Kk1ldGFkYXRhOzxicj4NCisgJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7KkV4cGVjdGVkTWV0YWRhdGE7PGJyPg0KKyAmbmJzcDtDSEFSOCAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqQmxvYklkOzxicj4NCisgJm5ic3A7Vk9JRCAmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqTW9ja1Jlc3BvbnNlUmVzdWx0 cyA9IE5VTEw7PGJyPg0KKzxicj4NCisgJm5ic3A7QmxvYlN0YXRlICZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9mIChVSU5U MTYpKTs8YnI+DQorICZuYnNwO1NpemUgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PSBBbGxvY2F0ZVplcm9Qb29s IChzaXplb2YgKFVJTlQzMikpOzxicj4NCisgJm5ic3A7QmxvYklkICZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gJnF1b3Q7QmxvYklk JnF1b3Q7Ozxicj4NCisgJm5ic3A7TWV0YWRhdGFMZW5ndGggJm5ic3A7Jm5ic3A7PSBBbGxvY2F0 ZVplcm9Qb29sIChzaXplb2YgKFVJTlQ4KSk7PGJyPg0KKyAmbmJzcDtNZXRhZGF0YSAmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs9IEFsbG9jYXRlWmVyb1Bv b2wgKDQgKiBzaXplb2YgKFVJTlQ4KSk7PGJyPg0KKyAmbmJzcDtFeHBlY3RlZE1ldGFkYXRhID0g QWxsb2NhdGVaZXJvUG9vbCAoNCAqIHNpemVvZiAoVUlOVDgpKTs8YnI+DQorPGJyPg0KKyAmbmJz cDtNb2NrUmVzcG9uc2VSZXN1bHRzID0gKFVJTlQ4ICopQWxsb2NhdGVaZXJvUG9vbCAoc2l6ZW9m IChWQUxJRF9CTE9CX1NUQVRfUkVTUE9OU0VfU0laRSkpOzxicj4NCisgJm5ic3A7Q29weU1lbSAo TW9ja1Jlc3BvbnNlUmVzdWx0cywgJmFtcDtWYWxpZEJsb2JTdGF0UmVzcG9uc2UsIFZBTElEX0JM T0JfU1RBVF9SRVNQT05TRV9TSVpFKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBNb2Nr SXBtaVN1Ym1pdENvbW1hbmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJlc3VsdHMsIFZBTElEX0JM T0JfU1RBVF9SRVNQT05TRV9TSVpFLCBFRklfU1VDQ0VTUyk7PGJyPg0KKyAmbmJzcDtpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtyZXR1cm4gVU5JVF9U RVNUX0VSUk9SX1RFU1RfRkFJTEVEOzxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNw O1N0YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJTdGF0IChCbG9iSWQsIEJsb2JTdGF0ZSwgU2l6ZSwg TWV0YWRhdGFMZW5ndGgsIE1ldGFkYXRhKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtVVF9BU1NFUlRf U1RBVFVTX0VRVUFMIChTdGF0dXMsIEVGSV9TVUNDRVNTKTs8YnI+DQorICZuYnNwO1VUX0FTU0VS VF9FUVVBTCAoKkJsb2JTdGF0ZSwgMSk7PGJyPg0KKyAmbmJzcDtVVF9BU1NFUlRfRVFVQUwgKCpT aXplLCAweDA1MDQwMzAyKTs8YnI+DQorICZuYnNwO1VUX0FTU0VSVF9FUVVBTCAoKk1ldGFkYXRh TGVuZ3RoLCA0KTs8YnI+DQorICZuYnNwO1VUX0FTU0VSVF9NRU1fRVFVQUwgKE1ldGFkYXRhLCBF eHBlY3RlZE1ldGFkYXRhLCA0KTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChNb2NrUmVzcG9uc2VS ZXN1bHRzKTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChCbG9iU3RhdGUpOzxicj4NCisgJm5ic3A7 RnJlZVBvb2wgKFNpemUpOzxicj4NCisgJm5ic3A7RnJlZVBvb2wgKE1ldGFkYXRhTGVuZ3RoKTs8 YnI+DQorICZuYnNwO0ZyZWVQb29sIChNZXRhZGF0YSk7PGJyPg0KKyAmbmJzcDtyZXR1cm4gVU5J VF9URVNUX1BBU1NFRDs8YnI+DQorfTxicj4NCis8YnI+DQorLyoqPGJyPg0KKyAmbmJzcDtAcGFy YW1baW5dICZuYnNwO0NvbnRleHQgJm5ic3A7Jm5ic3A7Jm5ic3A7W09wdGlvbmFsXSBBbiBvcHRp b25hbCBwYXJhbWV0ZXIgdGhhdCBlbmFibGVzOjxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7MSkgdGVzdC1jYXNlIHJldXNlIHdpdGggdmFyaWVkIHBhcmFtZXRlcnMgYW5kPGJy Pg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsyKSB0ZXN0LWNhc2UgcmUtZW50cnkg Zm9yIFRhcmdldCB0ZXN0cyB0aGF0IG5lZWQgYTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7cmVib290LiAmbmJzcDtUaGlzIHBhcmFtZXRlciBpcyBhIFZPSUQqIGFuZCBpdCBp cyB0aGU8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3Jlc3BvbnNpYmlsaXR5 IG9mIHRoZSB0ZXN0IGF1dGhvciB0byBlbnN1cmUgdGhhdCB0aGU8YnI+DQorICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwO2NvbnRlbnRzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYnkgYWxsIHRl c3QgY2FzZXMgdGhhdCBtYXk8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2Nv bnN1bWUgaXQuPGJyPg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO1VOSVRfVEVTVF9QQVNTRUQgJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7VGhlIFVuaXQgdGVzdCBoYXMgY29tcGxldGVkIGFuZCB0aGUgdGVzdDxicj4N CisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Y2FzZSB3YXMgc3VjY2Vzc2Z1bC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7 VU5JVF9URVNUX0VSUk9SX1RFU1RfRkFJTEVEICZuYnNwO0EgdGVzdCBjYXNlIGFzc2VydGlvbiBo YXMgZmFpbGVkLjxicj4NCisqKi88YnI+DQorVU5JVF9URVNUX1NUQVRVUzxicj4NCitFRklBUEk8 YnI+DQorQmxvYlN0YXRJbnZhbGlkQnVmZmVyICg8YnI+DQorICZuYnNwO0lOIFVOSVRfVEVTVF9D T05URVhUICZuYnNwO0NvbnRleHQ8YnI+DQorICZuYnNwOyk8YnI+DQorezxicj4NCisgJm5ic3A7 VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1ldGFkYXRhOzxicj4N CisgJm5ic3A7RUZJX1NUQVRVUyAmbmJzcDtTdGF0dXM7PGJyPg0KKyAmbmJzcDtWT0lEICZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypNb2NrUmVzcG9uc2VSZXN1bHRz ID0gTlVMTDs8YnI+DQorPGJyPg0KKyAmbmJzcDtNZXRhZGF0YSA9IE5VTEw7PGJyPg0KKzxicj4N CisgJm5ic3A7TW9ja1Jlc3BvbnNlUmVzdWx0cyA9IChVSU5UOCAqKUFsbG9jYXRlWmVyb1Bvb2wg KHNpemVvZiAoVkFMSURfQkxPQl9TVEFUX1JFU1BPTlNFX1NJWkUpKTs8YnI+DQorICZuYnNwO0Nv cHlNZW0gKE1vY2tSZXNwb25zZVJlc3VsdHMsICZhbXA7VmFsaWRCbG9iU3RhdFJlc3BvbnNlLCBW QUxJRF9CTE9CX1NUQVRfUkVTUE9OU0VfU0laRSk7PGJyPg0KKzxicj4NCisgJm5ic3A7U3RhdHVz ID0gTW9ja0lwbWlTdWJtaXRDb21tYW5kICgoVUlOVDggKilNb2NrUmVzcG9uc2VSZXN1bHRzLCBW QUxJRF9CTE9CX1NUQVRfUkVTUE9OU0VfU0laRSwgRUZJX1NVQ0NFU1MpOzxicj4NCisgJm5ic3A7 aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJu IFVOSVRfVEVTVF9FUlJPUl9URVNUX0ZBSUxFRDs8YnI+DQorICZuYnNwO308YnI+DQorPGJyPg0K KyAmbmJzcDtVVF9FWFBFQ1RfQVNTRVJUX0ZBSUxVUkUgKElwbWlCbG9iVHJhbnNmZXJTdGF0IChO VUxMLCAwLCAwLCAwLCBNZXRhZGF0YSksIE5VTEwpOzxicj4NCis8YnI+DQorICZuYnNwO0ZyZWVQ b29sIChNb2NrUmVzcG9uc2VSZXN1bHRzKTs8YnI+DQorICZuYnNwO3JldHVybiBVTklUX1RFU1Rf UEFTU0VEOzxicj4NCit9PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNwO0BwYXJhbVtpbl0g Jm5ic3A7Q29udGV4dCAmbmJzcDsmbmJzcDsmbmJzcDtbT3B0aW9uYWxdIEFuIG9wdGlvbmFsIHBh cmFtZXRlciB0aGF0IGVuYWJsZXM6PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsxKSB0ZXN0LWNhc2UgcmV1c2Ugd2l0aCB2YXJpZWQgcGFyYW1ldGVycyBhbmQ8YnI+DQorICZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzIpIHRlc3QtY2FzZSByZS1lbnRyeSBmb3IgVGFy Z2V0IHRlc3RzIHRoYXQgbmVlZCBhPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtyZWJvb3QuICZuYnNwO1RoaXMgcGFyYW1ldGVyIGlzIGEgVk9JRCogYW5kIGl0IGlzIHRoZTxi cj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7cmVzcG9uc2liaWxpdHkgb2YgdGhl IHRlc3QgYXV0aG9yIHRvIGVuc3VyZSB0aGF0IHRoZTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Y29udGVudHMgYXJlIHdlbGwgdW5kZXJzdG9vZCBieSBhbGwgdGVzdCBjYXNl cyB0aGF0IG1heTxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Y29uc3VtZSBp dC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5ic3A7VU5JVF9URVNUX1BBU1NFRCAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDtUaGUgVW5pdCB0ZXN0IGhhcyBjb21wbGV0ZWQgYW5kIHRoZSB0ZXN0PGJyPg0KKyAmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDtjYXNlIHdhcyBzdWNjZXNzZnVsLjxicj4NCisgJm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RF U1RfRVJST1JfVEVTVF9GQUlMRUQgJm5ic3A7QSB0ZXN0IGNhc2UgYXNzZXJ0aW9uIGhhcyBmYWls ZWQuPGJyPg0KKyoqLzxicj4NCitVTklUX1RFU1RfU1RBVFVTPGJyPg0KK0VGSUFQSTxicj4NCitT ZXNzaW9uU3RhdFZhbGlkUmVzcG9uc2UgKDxicj4NCisgJm5ic3A7SU4gVU5JVF9URVNUX0NPTlRF WFQgJm5ic3A7Q29udGV4dDxicj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAmbmJzcDtFRklf U1RBVFVTICZuYnNwO1N0YXR1czs8YnI+DQorICZuYnNwO1VJTlQxNiAmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsqQmxvYlN0YXRlOzxicj4NCisgJm5ic3A7VUlOVDMyICZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOypTaXplOzxicj4NCisgJm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1ldGFkYXRhTGVuZ3RoOzxicj4NCisgJm5ic3A7VUlO VDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1ldGFkYXRhOzxicj4NCisg Jm5ic3A7VUlOVDggJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7KkV4cGVjdGVk TWV0YWRhdGE7PGJyPg0KKyAmbmJzcDtWT0lEICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOypNb2NrUmVzcG9uc2VSZXN1bHRzID0gTlVMTDs8YnI+DQorPGJyPg0KKyAm bmJzcDtCbG9iU3RhdGUgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 PSBBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFVJTlQxNikpOzxicj4NCisgJm5ic3A7U2l6ZSAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDs9IEFsbG9jYXRlWmVyb1Bvb2wgKHNpemVvZiAoVUlOVDMyKSk7PGJyPg0K KyAmbmJzcDtNZXRhZGF0YUxlbmd0aCAmbmJzcDsmbmJzcDs9IEFsbG9jYXRlWmVyb1Bvb2wgKHNp emVvZiAoVUlOVDgpKTs8YnI+DQorICZuYnNwO01ldGFkYXRhICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOz0gQWxsb2NhdGVaZXJvUG9vbCAoNCAqIHNpemVv ZiAoVUlOVDgpKTs8YnI+DQorICZuYnNwO0V4cGVjdGVkTWV0YWRhdGEgPSBBbGxvY2F0ZVplcm9Q b29sICg0ICogc2l6ZW9mIChVSU5UOCkpOzxicj4NCis8YnI+DQorICZuYnNwO01vY2tSZXNwb25z ZVJlc3VsdHMgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2YgKFZBTElEX0JMT0Jf U1RBVF9SRVNQT05TRV9TSVpFKSk7PGJyPg0KKyAmbmJzcDtDb3B5TWVtIChNb2NrUmVzcG9uc2VS ZXN1bHRzLCAmYW1wO1ZhbGlkQmxvYlN0YXRSZXNwb25zZSwgVkFMSURfQkxPQl9TVEFUX1JFU1BP TlNFX1NJWkUpOzxicj4NCis8YnI+DQorICZuYnNwO1N0YXR1cyA9IE1vY2tJcG1pU3VibWl0Q29t bWFuZCAoKFVJTlQ4ICopTW9ja1Jlc3BvbnNlUmVzdWx0cywgVkFMSURfQkxPQl9TVEFUX1JFU1BP TlNFX1NJWkUsIEVGSV9TVUNDRVNTKTs8YnI+DQorICZuYnNwO2lmIChFRklfRVJST1IgKFN0YXR1 cykpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBVTklUX1RFU1RfRVJST1JfVEVT VF9GQUlMRUQ7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisgJm5ic3A7U3RhdHVzID0gSXBt aUJsb2JUcmFuc2ZlclNlc3Npb25TdGF0ICgwLCBCbG9iU3RhdGUsIFNpemUsIE1ldGFkYXRhTGVu Z3RoLCBNZXRhZGF0YSk7PGJyPg0KKzxicj4NCisgJm5ic3A7VVRfQVNTRVJUX1NUQVRVU19FUVVB TCAoU3RhdHVzLCBFRklfU1VDQ0VTUyk7PGJyPg0KKyAmbmJzcDtVVF9BU1NFUlRfRVFVQUwgKCpC bG9iU3RhdGUsIDEpOzxicj4NCisgJm5ic3A7VVRfQVNTRVJUX0VRVUFMICgqU2l6ZSwgMHgwNTA0 MDMwMik7PGJyPg0KKyAmbmJzcDtVVF9BU1NFUlRfRVFVQUwgKCpNZXRhZGF0YUxlbmd0aCwgNCk7 PGJyPg0KKyAmbmJzcDtVVF9BU1NFUlRfTUVNX0VRVUFMIChNZXRhZGF0YSwgRXhwZWN0ZWRNZXRh ZGF0YSwgNCk7PGJyPg0KKyAmbmJzcDtGcmVlUG9vbCAoTW9ja1Jlc3BvbnNlUmVzdWx0cyk7PGJy Pg0KKyAmbmJzcDtGcmVlUG9vbCAoQmxvYlN0YXRlKTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChT aXplKTs8YnI+DQorICZuYnNwO0ZyZWVQb29sIChNZXRhZGF0YUxlbmd0aCk7PGJyPg0KKyAmbmJz cDtGcmVlUG9vbCAoTWV0YWRhdGEpOzxicj4NCisgJm5ic3A7cmV0dXJuIFVOSVRfVEVTVF9QQVNT RUQ7PGJyPg0KK308YnI+DQorPGJyPg0KKy8qKjxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJz cDtDb250ZXh0ICZuYnNwOyZuYnNwOyZuYnNwO1tPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1l dGVyIHRoYXQgZW5hYmxlczo8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzEp IHRlc3QtY2FzZSByZXVzZSB3aXRoIHZhcmllZCBwYXJhbWV0ZXJzIGFuZDxicj4NCisgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7MikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQg dGVzdHMgdGhhdCBuZWVkIGE8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3Jl Ym9vdC4gJm5ic3A7VGhpcyBwYXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlPGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVz dCBhdXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDtjb250ZW50cyBhcmUgd2VsbCB1bmRlcnN0b29kIGJ5IGFsbCB0ZXN0IGNhc2VzIHRo YXQgbWF5PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjb25zdW1lIGl0Ljxi cj4NCisgJm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RFU1RfUEFTU0VEICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O1RoZSBVbml0IHRlc3QgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRlc3Q8YnI+DQorICZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2Nh c2Ugd2FzIHN1Y2Nlc3NmdWwuPGJyPg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO1VOSVRfVEVTVF9F UlJPUl9URVNUX0ZBSUxFRCAmbmJzcDtBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzIGZhaWxlZC48 YnI+DQorKiovPGJyPg0KK1VOSVRfVEVTVF9TVEFUVVM8YnI+DQorRUZJQVBJPGJyPg0KK1Nlc3Np b25TdGF0SW52YWxpZEJ1ZmZlciAoPGJyPg0KKyAmbmJzcDtJTiBVTklUX1RFU1RfQ09OVEVYVCAm bmJzcDtDb250ZXh0PGJyPg0KKyAmbmJzcDspPGJyPg0KK3s8YnI+DQorICZuYnNwO1VJTlQ4ICZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOypNZXRhZGF0YTs8YnI+DQorICZuYnNw O0VGSV9TVEFUVVMgJm5ic3A7U3RhdHVzOzxicj4NCisgJm5ic3A7Vk9JRCAmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsqTW9ja1Jlc3BvbnNlUmVzdWx0cyA9IE5VTEw7 PGJyPg0KKzxicj4NCisgJm5ic3A7TWV0YWRhdGEgPSBOVUxMOzxicj4NCis8YnI+DQorICZuYnNw O01vY2tSZXNwb25zZVJlc3VsdHMgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29sIChzaXplb2Yg KFZBTElEX0JMT0JfU1RBVF9SRVNQT05TRV9TSVpFKSk7PGJyPg0KKyAmbmJzcDtDb3B5TWVtIChN b2NrUmVzcG9uc2VSZXN1bHRzLCAmYW1wO1ZhbGlkQmxvYlN0YXRSZXNwb25zZSwgVkFMSURfQkxP Ql9TVEFUX1JFU1BPTlNFX1NJWkUpOzxicj4NCis8YnI+DQorICZuYnNwO1N0YXR1cyA9IE1vY2tJ cG1pU3VibWl0Q29tbWFuZCAoKFVJTlQ4ICopTW9ja1Jlc3BvbnNlUmVzdWx0cywgVkFMSURfQkxP Ql9TVEFUX1JFU1BPTlNFX1NJWkUsIEVGSV9TVUNDRVNTKTs8YnI+DQorICZuYnNwO2lmIChFRklf RVJST1IgKFN0YXR1cykpIHs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBVTklUX1RF U1RfRVJST1JfVEVTVF9GQUlMRUQ7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisgJm5ic3A7 VVRfRVhQRUNUX0FTU0VSVF9GQUlMVVJFIChJcG1pQmxvYlRyYW5zZmVyU2Vzc2lvblN0YXQgKDAs IDAsIDAsIDAsIE1ldGFkYXRhKSwgTlVMTCk7PGJyPg0KKzxicj4NCisgJm5ic3A7RnJlZVBvb2wg KE1vY2tSZXNwb25zZVJlc3VsdHMpOzxicj4NCisgJm5ic3A7cmV0dXJuIFVOSVRfVEVTVF9QQVNT RUQ7PGJyPg0KK308YnI+DQorPGJyPg0KKy8qKjxicj4NCisgJm5ic3A7QHBhcmFtW2luXSAmbmJz cDtDb250ZXh0ICZuYnNwOyZuYnNwOyZuYnNwO1tPcHRpb25hbF0gQW4gb3B0aW9uYWwgcGFyYW1l dGVyIHRoYXQgZW5hYmxlczo8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzEp IHRlc3QtY2FzZSByZXVzZSB3aXRoIHZhcmllZCBwYXJhbWV0ZXJzIGFuZDxicj4NCisgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7MikgdGVzdC1jYXNlIHJlLWVudHJ5IGZvciBUYXJnZXQg dGVzdHMgdGhhdCBuZWVkIGE8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3Jl Ym9vdC4gJm5ic3A7VGhpcyBwYXJhbWV0ZXIgaXMgYSBWT0lEKiBhbmQgaXQgaXMgdGhlPGJyPg0K KyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtyZXNwb25zaWJpbGl0eSBvZiB0aGUgdGVz dCBhdXRob3IgdG8gZW5zdXJlIHRoYXQgdGhlPGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDtjb250ZW50cyBhcmUgd2VsbCB1bmRlcnN0b29kIGJ5IGFsbCB0ZXN0IGNhc2VzIHRo YXQgbWF5PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtjb25zdW1lIGl0Ljxi cj4NCisgJm5ic3A7QHJldHZhbCAmbmJzcDtVTklUX1RFU1RfUEFTU0VEICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O1RoZSBVbml0IHRlc3QgaGFzIGNvbXBsZXRlZCBhbmQgdGhlIHRlc3Q8YnI+DQorICZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO2Nh c2Ugd2FzIHN1Y2Nlc3NmdWwuPGJyPg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO1VOSVRfVEVTVF9F UlJPUl9URVNUX0ZBSUxFRCAmbmJzcDtBIHRlc3QgY2FzZSBhc3NlcnRpb24gaGFzIGZhaWxlZC48 YnI+DQorKiovPGJyPg0KK1VOSVRfVEVTVF9TVEFUVVM8YnI+DQorRUZJQVBJPGJyPg0KK1dyaXRl TWV0YVZhbGlkUmVzcG9uc2UgKDxicj4NCisgJm5ic3A7SU4gVU5JVF9URVNUX0NPTlRFWFQgJm5i c3A7Q29udGV4dDxicj4NCisgJm5ic3A7KTxicj4NCit7PGJyPg0KKyAmbmJzcDtFRklfU1RBVFVT ICZuYnNwO1N0YXR1czs8YnI+DQorICZuYnNwO1ZPSUQgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Kk1vY2tSZXNwb25zZVJlc3VsdHMgPSBOVUxMOzxicj4NCis8YnI+ DQorICZuYnNwO01vY2tSZXNwb25zZVJlc3VsdHMgPSAoVUlOVDggKilBbGxvY2F0ZVplcm9Qb29s IChzaXplb2YgKFZBTElEX05PREFUQV9SRVNQT05TRV9TSVpFKSk7PGJyPg0KKyAmbmJzcDtDb3B5 TWVtIChNb2NrUmVzcG9uc2VSZXN1bHRzLCAmYW1wO1ZhbGlkTm9EYXRhUmVzcG9uc2UsIFZBTElE X05PREFUQV9SRVNQT05TRV9TSVpFKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBNb2Nr SXBtaVN1Ym1pdENvbW1hbmQgKChVSU5UOCAqKU1vY2tSZXNwb25zZVJlc3VsdHMsIFZBTElEX05P REFUQV9SRVNQT05TRV9TSVpFLCBFRklfU1VDQ0VTUyk7PGJyPg0KKyAmbmJzcDtpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtyZXR1cm4gVU5JVF9URVNU X0VSUk9SX1RFU1RfRkFJTEVEOzxicj4NCisgJm5ic3A7fTxicj4NCis8YnI+DQorICZuYnNwO1N0 YXR1cyA9IElwbWlCbG9iVHJhbnNmZXJXcml0ZU1ldGEgKDAsIDAsIE5VTEwsIDApOzxicj4NCis8 YnI+DQorICZuYnNwO1VUX0FTU0VSVF9TVEFUVVNfRVFVQUwgKFN0YXR1cywgRUZJX1NVQ0NFU1Mp Ozxicj4NCisgJm5ic3A7RnJlZVBvb2wgKE1vY2tSZXNwb25zZVJlc3VsdHMpOzxicj4NCisgJm5i c3A7cmV0dXJuIFVOSVRfVEVTVF9QQVNTRUQ7PGJyPg0KK308YnI+DQorPGJyPg0KKy8qKjxicj4N CisgJm5ic3A7SW5pdGlhbGl6ZSB0aGUgdW5pdCB0ZXN0IGZyYW1ld29yaywgc3VpdGUsIGFuZCB1 bml0IHRlc3RzIGZvciB0aGU8YnI+DQorICZuYnNwO3NhbXBsZSB1bml0IHRlc3RzIGFuZCBydW4g dGhlIHVuaXQgdGVzdHMuPGJyPg0KKyAmbmJzcDtAcmV0dmFsICZuYnNwO0VGSV9TVUNDRVNTICZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O0FsbCB0ZXN0IGNhc2VzIHdlcmUgZGlzcGF0Y2hlZC48YnI+DQorICZuYnNwO0ByZXR2YWwgJm5i c3A7RUZJX09VVF9PRl9SRVNPVVJDRVMgJm5ic3A7VGhlcmUgYXJlIG5vdCBlbm91Z2ggcmVzb3Vy Y2VzIGF2YWlsYWJsZSB0bzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7aW5pdGlhbGl6ZSB0 aGUgdW5pdCB0ZXN0cy48YnI+DQorKiovPGJyPg0KK0VGSV9TVEFUVVM8YnI+DQorRUZJQVBJPGJy Pg0KK1NldHVwQW5kUnVuVW5pdFRlc3RzICg8YnI+DQorICZuYnNwO1ZPSUQ8YnI+DQorICZuYnNw Oyk8YnI+DQorezxicj4NCisgJm5ic3A7RUZJX1NUQVRVUyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTdGF0dXM7PGJyPg0KKyAmbmJzcDtVTklUX1RFU1RfRlJB TUVXT1JLX0hBTkRMRSAmbmJzcDtGcmFtZXdvcms7PGJyPg0KKyAmbmJzcDtVTklUX1RFU1RfU1VJ VEVfSEFORExFICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0lwbWlCbG9iVHJhbnNmZXI7 PGJyPg0KKzxicj4NCisgJm5ic3A7RnJhbWV3b3JrID0gTlVMTDs8YnI+DQorICZuYnNwO0RFQlVH ICgoREVCVUdfSU5GTywgJnF1b3Q7JWE6IHYlYVxuJnF1b3Q7LCBVTklUX1RFU1RfTkFNRSwgVU5J VF9URVNUX1ZFUlNJT04pKTs8YnI+DQorPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBJbml0VW5pdFRl c3RGcmFtZXdvcmsgKCZhbXA7RnJhbWV3b3JrLCBVTklUX1RFU1RfTkFNRSwgZ0VmaUNhbGxlckJh c2VOYW1lLCBVTklUX1RFU1RfVkVSU0lPTik7PGJyPg0KKyAmbmJzcDtpZiAoRUZJX0VSUk9SIChT dGF0dXMpKSB7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtERUJVRyAoKERFQlVHX0VSUk9SLCAm cXVvdDtGYWlsZWQgdG8gc2V0dXAgVGVzdCBGcmFtZXdvcmsuIEV4aXRpbmcgd2l0aCBzdGF0dXMg PSAlclxuJnF1b3Q7LCBTdGF0dXMpKTs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO0FTU0VSVCAo RkFMU0UpOzxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7cmV0dXJuIFN0YXR1czs8YnI+DQorICZu YnNwO308YnI+DQorPGJyPg0KKyAmbmJzcDsvLzxicj4NCisgJm5ic3A7Ly8gUG9wdWxhdGUgdGhl IFVuaXQgVGVzdCBTdWl0ZS48YnI+DQorICZuYnNwOy8vPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBD cmVhdGVVbml0VGVzdFN1aXRlICgmYW1wO0lwbWlCbG9iVHJhbnNmZXIsIEZyYW1ld29yaywgJnF1 b3Q7SVBNSSBCbG9iIFRyYW5zZmVyIFRlc3RzJnF1b3Q7LCAmcXVvdDtVbml0VGVzdC5JcG1pQmxv YlRyYW5zZmVyQ0ImcXVvdDssIE5VTEwsIE5VTEwpOzxicj4NCisgJm5ic3A7aWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgezxicj4NCisgJm5ic3A7Jm5ic3A7Jm5ic3A7REVCVUcgKChERUJVR19FUlJP UiwgJnF1b3Q7RmFpbGVkIGluIENyZWF0ZVVuaXRUZXN0U3VpdGUgZm9yIElQTUkgQmxvYiBUcmFu c2ZlciBUZXN0c1xuJnF1b3Q7KSk7PGJyPg0KKyAmbmJzcDsmbmJzcDsmbmJzcDtTdGF0dXMgPSBF RklfT1VUX09GX1JFU09VUkNFUzs8YnI+DQorICZuYnNwOyZuYnNwOyZuYnNwO3JldHVybiBTdGF0 dXM7PGJyPg0KKyAmbmJzcDt9PGJyPg0KKzxicj4NCisgJm5ic3A7Ly8gQ2FsY3VsYXRlQ3JjMTY8 YnI+DQorICZuYnNwO1N0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAmcXVv dDtUZXN0IENSQyBDYWxjdWxhdGlvbiZxdW90OywgJnF1b3Q7R29vZENyYyZxdW90OywgR29vZENy YywgTlVMTCwgTlVMTCwgTlVMTCk7PGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBBZGRUZXN0Q2FzZSAo SXBtaUJsb2JUcmFuc2ZlciwgJnF1b3Q7VGVzdCBCYWQgQ1JDIENhbGN1bGF0aW9uJnF1b3Q7LCAm cXVvdDtCYWRDcmMmcXVvdDssIEJhZENyYywgTlVMTCwgTlVMTCwgTlVMTCk7PGJyPg0KKyAmbmJz cDsvLyBJcG1pQmxvYlRyYW5zZmVyU2VuZElwbWk8YnI+DQorICZuYnNwO1N0YXR1cyA9IEFkZFRl c3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAmcXVvdDtTZW5kIElQTUkgcmV0dXJucyBiYWQgY29t cGxldGlvbiZxdW90OywgJnF1b3Q7U2VuZElwbWlCYWRDb21wbGV0aW9uJnF1b3Q7LCBTZW5kSXBt aUJhZENvbXBsZXRpb24sIE5VTEwsIE5VTEwsIE5VTEwpOzxicj4NCisgJm5ic3A7U3RhdHVzID0g QWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICZxdW90O1NlbmQgSVBNSSByZXR1cm5zIHN1 Y2Nlc3NmdWxseSB3aXRoIG5vIGRhdGEmcXVvdDssICZxdW90O1NlbmRJcG1pTm9EYXRhUmVzcG9u c2UmcXVvdDssIFNlbmRJcG1pTm9EYXRhUmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOzxicj4N CisgJm5ic3A7U3RhdHVzID0gQWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICZxdW90O1Nl bmQgSVBNSSByZXR1cm5zIHN1Y2Nlc3NmdWxseSB3aXRoIGJhZCBPRU4mcXVvdDssICZxdW90O1Nl bmRJcG1pQmFkT2VuUmVzcG9uc2UmcXVvdDssIFNlbmRJcG1pQmFkT2VuUmVzcG9uc2UsIE5VTEws IE5VTEwsIE5VTEwpOzxicj4NCisgJm5ic3A7U3RhdHVzID0gQWRkVGVzdENhc2UgKElwbWlCbG9i VHJhbnNmZXIsICZxdW90O1NlbmQgSVBNSSByZXR1cm5zIHN1Y2Nlc3NmdWxseSB3aXRoIGJhZCBD UkMmcXVvdDssICZxdW90O1NlbmRJcG1pQmFkQ3JjUmVzcG9uc2UmcXVvdDssIFNlbmRJcG1pQmFk Q3JjUmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOzxicj4NCisgJm5ic3A7U3RhdHVzID0gQWRk VGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICZxdW90O1NlbmQgSVBNSSByZXR1cm5zIHdpdGgg dmFsaWQgR2V0Q291bnQgZGF0YSZxdW90OywgJnF1b3Q7U2VuZElwbWlWYWxpZENvdW50UmVzcG9u c2UmcXVvdDssIFNlbmRJcG1pVmFsaWRDb3VudFJlc3BvbnNlLCBOVUxMLCBOVUxMLCBOVUxMKTs8 YnI+DQorICZuYnNwOy8vIElwbWlCbG9iVHJhbnNmZXJHZXRDb3VudDxicj4NCisgJm5ic3A7U3Rh dHVzID0gQWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICZxdW90O0dldENvdW50IGNhbGwg d2l0aCB2YWxpZCBkYXRhJnF1b3Q7LCAmcXVvdDtHZXRDb3VudFZhbGlkQ291bnRSZXNwb25zZSZx dW90OywgR2V0Q291bnRWYWxpZENvdW50UmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOzxicj4N CisgJm5ic3A7Ly8gSXBtaUJsb2JUcmFuc2ZlckVudW1lcmF0ZTxicj4NCisgJm5ic3A7U3RhdHVz ID0gQWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICZxdW90O0VudW1lcmF0ZSBjYWxsIHdp dGggdmFsaWQgZGF0YSZxdW90OywgJnF1b3Q7RW51bWVyYXRlVmFsaWRSZXNwb25zZSZxdW90Oywg RW51bWVyYXRlVmFsaWRSZXNwb25zZSwgTlVMTCwgTlVMTCwgTlVMTCk7PGJyPg0KKyAmbmJzcDtT dGF0dXMgPSBBZGRUZXN0Q2FzZSAoSXBtaUJsb2JUcmFuc2ZlciwgJnF1b3Q7RW51bWVyYXRlIGNh bGwgd2l0aCBpbnZhbGlkIG91dHB1dCBidWZmZXImcXVvdDssICZxdW90O0VudW1lcmF0ZUludmFs aWRCdWZmZXImcXVvdDssIEVudW1lcmF0ZUludmFsaWRCdWZmZXIsIE5VTEwsIE5VTEwsIE5VTEwp Ozxicj4NCisgJm5ic3A7Ly8gSXBtaUJsb2JUcmFuc2Zlck9wZW48YnI+DQorICZuYnNwO1N0YXR1 cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAmcXVvdDtPcGVuIGNhbGwgd2l0aCB2 YWxpZCBkYXRhJnF1b3Q7LCAmcXVvdDtPcGVuVmFsaWRSZXNwb25zZSZxdW90OywgT3BlblZhbGlk UmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOzxicj4NCisgJm5ic3A7Ly8gSXBtaUJsb2JUcmFu c2ZlclJlYWQ8YnI+DQorICZuYnNwO1N0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5z ZmVyLCAmcXVvdDtSZWFkIGNhbGwgd2l0aCB2YWxpZCBkYXRhJnF1b3Q7LCAmcXVvdDtSZWFkVmFs aWRSZXNwb25zZSZxdW90OywgUmVhZFZhbGlkUmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwpOzxi cj4NCisgJm5ic3A7U3RhdHVzID0gQWRkVGVzdENhc2UgKElwbWlCbG9iVHJhbnNmZXIsICZxdW90 O1JlYWQgY2FsbCB3aXRoIGludmFsaWQgYnVmZmVyJnF1b3Q7LCAmcXVvdDtSZWFkSW52YWxpZEJ1 ZmZlciZxdW90OywgUmVhZEludmFsaWRCdWZmZXIsIE5VTEwsIE5VTEwsIE5VTEwpOzxicj4NCisg Jm5ic3A7Ly8gSXBtaUJsb2JUcmFuc2ZlcldyaXRlPGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBBZGRU ZXN0Q2FzZSAoSXBtaUJsb2JUcmFuc2ZlciwgJnF1b3Q7V3JpdGUgY2FsbCB3aXRoIHZhbGlkIGRh dGEmcXVvdDssICZxdW90O1dyaXRlVmFsaWRSZXNwb25zZSZxdW90OywgV3JpdGVWYWxpZFJlc3Bv bnNlLCBOVUxMLCBOVUxMLCBOVUxMKTs8YnI+DQorICZuYnNwOy8vIElwbWlCbG9iVHJhbnNmZXJD b21taXQ8YnI+DQorICZuYnNwO1N0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVy LCAmcXVvdDtDb21taXQgY2FsbCB3aXRoIHZhbGlkIGRhdGEmcXVvdDssICZxdW90O0NvbW1pdFZh bGlkUmVzcG9uc2UmcXVvdDssIENvbW1pdFZhbGlkUmVzcG9uc2UsIE5VTEwsIE5VTEwsIE5VTEwp Ozxicj4NCisgJm5ic3A7Ly8gSXBtaUJsb2JUcmFuc2ZlckNsb3NlPGJyPg0KKyAmbmJzcDtTdGF0 dXMgPSBBZGRUZXN0Q2FzZSAoSXBtaUJsb2JUcmFuc2ZlciwgJnF1b3Q7Q2xvc2UgY2FsbCB3aXRo IHZhbGlkIGRhdGEmcXVvdDssICZxdW90O0Nsb3NlVmFsaWRSZXNwb25zZSZxdW90OywgQ2xvc2VW YWxpZFJlc3BvbnNlLCBOVUxMLCBOVUxMLCBOVUxMKTs8YnI+DQorICZuYnNwOy8vIElwbWlCbG9i VHJhbnNmZXJEZWxldGU8YnI+DQorICZuYnNwO1N0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxv YlRyYW5zZmVyLCAmcXVvdDtEZWxldGUgY2FsbCB3aXRoIHZhbGlkIGRhdGEmcXVvdDssICZxdW90 O0RlbGV0ZVZhbGlkUmVzcG9uc2UmcXVvdDssIERlbGV0ZVZhbGlkUmVzcG9uc2UsIE5VTEwsIE5V TEwsIE5VTEwpOzxicj4NCisgJm5ic3A7Ly8gSXBtaUJsb2JUcmFuc2ZlclN0YXQ8YnI+DQorICZu YnNwO1N0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAmcXVvdDtCbG9iIFN0 YXQgY2FsbCB3aXRoIHZhbGlkIGRhdGEmcXVvdDssICZxdW90O0Jsb2JTdGF0VmFsaWRSZXNwb25z ZSZxdW90OywgQmxvYlN0YXRWYWxpZFJlc3BvbnNlLCBOVUxMLCBOVUxMLCBOVUxMKTs8YnI+DQor ICZuYnNwO1N0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAmcXVvdDtCbG9i IFN0YXQgY2FsbCB3aXRoIGludmFsaWQgYnVmZmVyJnF1b3Q7LCAmcXVvdDtCbG9iU3RhdEludmFs aWRCdWZmZXImcXVvdDssIEJsb2JTdGF0SW52YWxpZEJ1ZmZlciwgTlVMTCwgTlVMTCwgTlVMTCk7 PGJyPg0KKyAmbmJzcDsvLyBJcG1pQmxvYlRyYW5zZmVyU2Vzc2lvblN0YXQ8YnI+DQorICZuYnNw O1N0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAmcXVvdDtTZXNzaW9uIFN0 YXQgY2FsbCB3aXRoIHZhbGlkIGRhdGEmcXVvdDssICZxdW90O1Nlc3Npb25TdGF0VmFsaWRSZXNw b25zZSZxdW90OywgU2Vzc2lvblN0YXRWYWxpZFJlc3BvbnNlLCBOVUxMLCBOVUxMLCBOVUxMKTs8 YnI+DQorICZuYnNwO1N0YXR1cyA9IEFkZFRlc3RDYXNlIChJcG1pQmxvYlRyYW5zZmVyLCAmcXVv dDtTZXNzaW9uIFN0YXQgY2FsbCB3aXRoIGludmFsaWQgYnVmZmVyJnF1b3Q7LCAmcXVvdDtTZXNz aW9uU3RhdEludmFsaWRCdWZmZXImcXVvdDssIFNlc3Npb25TdGF0SW52YWxpZEJ1ZmZlciwgTlVM TCwgTlVMTCwgTlVMTCk7PGJyPg0KKyAmbmJzcDsvLyBJcG1pQmxvYlRyYW5zZmVyV3JpdGVNZXRh PGJyPg0KKyAmbmJzcDtTdGF0dXMgPSBBZGRUZXN0Q2FzZSAoSXBtaUJsb2JUcmFuc2ZlciwgJnF1 b3Q7V3JpdGVNZXRhIGNhbGwgd2l0aCB2YWxpZCBkYXRhJnF1b3Q7LCAmcXVvdDtXcml0ZU1ldGFW YWxpZFJlc3BvbnNlJnF1b3Q7LCBXcml0ZU1ldGFWYWxpZFJlc3BvbnNlLCBOVUxMLCBOVUxMLCBO VUxMKTs8YnI+DQorPGJyPg0KKyAmbmJzcDsvLyBFeGVjdXRlIHRoZSB0ZXN0cy48YnI+DQorICZu YnNwO1N0YXR1cyA9IFJ1bkFsbFRlc3RTdWl0ZXMgKEZyYW1ld29yayk7PGJyPg0KKyAmbmJzcDty ZXR1cm4gU3RhdHVzOzxicj4NCit9PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNwO1N0YW5k YXJkIFVFRkkgZW50cnkgcG9pbnQgZm9yIHRhcmdldCBiYXNlZDxicj4NCisgJm5ic3A7dW5pdCB0 ZXN0IGV4ZWN1dGlvbiBmcm9tIFVFRkkgU2hlbGwuPGJyPg0KKyoqLzxicj4NCitFRklfU1RBVFVT PGJyPg0KK0VGSUFQSTxicj4NCitCYXNlTGliVW5pdFRlc3RBcHBFbnRyeSAoPGJyPg0KKyAmbmJz cDtJTiBFRklfSEFORExFICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw O0ltYWdlSGFuZGxlLDxicj4NCisgJm5ic3A7SU4gRUZJX1NZU1RFTV9UQUJMRSAmbmJzcDsqU3lz dGVtVGFibGU8YnI+DQorICZuYnNwOyk8YnI+DQorezxicj4NCisgJm5ic3A7cmV0dXJuIFNldHVw QW5kUnVuVW5pdFRlc3RzICgpOzxicj4NCit9PGJyPg0KKzxicj4NCisvKio8YnI+DQorICZuYnNw O1N0YW5kYXJkIFBPU0lYIEMgZW50cnkgcG9pbnQgZm9yIGhvc3QgYmFzZWQgdW5pdCB0ZXN0IGV4 ZWN1dGlvbi48YnI+DQorKiovPGJyPg0KK2ludDxicj4NCittYWluICg8YnI+DQorICZuYnNwO2lu dCAmbmJzcDsmbmJzcDthcmdjLDxicj4NCisgJm5ic3A7Y2hhciAmbmJzcDsqYXJndltdPGJyPg0K KyAmbmJzcDspPGJyPg0KK3s8YnI+DQorICZuYnNwO3JldHVybiBTZXR1cEFuZFJ1blVuaXRUZXN0 cyAoKTs8YnI+DQorfTxicj4NCmRpZmYgLS1naXQgYS9GZWF0dXJlcy9NYW5hZ2VhYmlsaXR5UGtn L1VuaXZlcnNhbC9JcG1pQmxvYlRyYW5zZmVyRHhlL1JlYWRtZS5tZCBiL0ZlYXR1cmVzL01hbmFn ZWFiaWxpdHlQa2cvVW5pdmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJEeGUvUmVhZG1lLm1kPGJyPg0K bmV3IGZpbGUgbW9kZSAxMDA2NDQ8YnI+DQppbmRleCAwMDAwMDAwMDAwLi40NzgwMGY1ODAxPGJy Pg0KLS0tIC9kZXYvbnVsbDxicj4NCisrKyBiL0ZlYXR1cmVzL01hbmFnZWFiaWxpdHlQa2cvVW5p dmVyc2FsL0lwbWlCbG9iVHJhbnNmZXJEeGUvUmVhZG1lLm1kPGJyPg0KQEAgLTAsMCArMSwyNCBA QDxicj4NCisjIElQTUkgQmxvYiBUcmFuc2ZlciBJbnRlcmZhY2UgRHJpdmVyPGJyPg0KKzxicj4N CitUaGlzIERYRSBtb2R1bGUgaXMgYSBVRUZJIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQaG9ycGhv ciBCbG9iIFRyYW5zZmVyIEludGVyZmFjZSBkZWZpbmVkIGluIE9wZW5CTUM8YnI+DQoraHR0cHM6 Ly9naXRodWIuY29tL29wZW5ibWMvcGhvc3Bob3ItaXBtaS1ibG9iczxicj4NCis8YnI+DQorIyMg TlZJRElBJ3MgT3BlbkJNQyBpbXBsZW1lbnRzIHRoaXMgaW50ZXJmYWNlIGFzIGEgcHJvdG9jb2ws IGFsbG93aW5nIFVFRkkgYW5kIEJNQyB0byB0cmFuc2ZlciBibG9icyBvdmVyIElQTUkuPGJyPg0K Kzxicj4NCisjIyMgVXNhZ2U6PGJyPg0KK0FueSBEWEUgbW9kdWxlIHRoYXQgd2lzaGVzIHRvIHVz ZSB0aGlzIHByb3RvY29sIHNob3VsZCBkbyB0aGUgZm9sbG93aW5nOjxicj4NCisxKSBUaGUgbW9k dWxlIHNob3VsZCBoYXZlIGEgZGVwZW5kZW5jeSBvbiBnRWRraWlJcG1pQmxvYlRyYW5zZmVyUHJv dG9jb2xHdWlkIGluIGl0cyBpbmYgJnF1b3Q7RGVwZXgmcXVvdDsgc2VjdGlvbjxicj4NCisyKSBU aGUgbW9kdWxlIHNob3VsZCBsaXN0IGdFZGtpaUlwbWlCbG9iVHJhbnNmZXJQcm90b2NvbEd1aWQg aW4gaXRzIGluZiAmcXVvdDtQcm90b2NvbCZxdW90OyBzZWN0aW9uPGJyPg0KKzMpIFRoZSBtb2R1 bGUncyBlbnRyeSBwb2ludCBzaG91bGQgZG8gYSBMb2NhdGVQcm90b2NvbCBvbiBnRWRraWlJcG1p QmxvYlRyYW5zZmVyUHJvdG9jb2xHdWlkPGJyPg0KKzxicj4NCisjIyMgQSBzYW1wbGUgZmxvdyBv ZiBwcm90b2NvbCB1c2FnZSBpcyBhcyBmb2xsb3dzOjxicj4NCisxKSBBIGNhbGwgdG8gSXBtaUJs b2JUcmFuc2Zlck9wZW4gKCk8YnI+DQorMikgSXRlcmF0aXZlIGNhbGxzIHRvIElwbWlCbG9iVHJh bnNmZXJXcml0ZTxicj4NCiszKSBBIGNhbGwgdG8gSXBtaUJsb2JUcmFuc2ZlckNsb3NlICgpPGJy Pg0KKzxicj4NCisjIyMgVW5pdCBUZXN0czo8YnI+DQorSXBtaUJsb2JUcmFuc2ZlckR4ZS9Vbml0 VGVzdC8gY29udGFpbnMgaG9zdCBiYXNlZCB1bml0IHRlc3RzIG9mIHRoaXMgaW1wbGVtZW50YXRp b24uPGJyPg0KK0FueSBjaGFuZ2VzIHRvIElwbWlCbG9iVHJhbnNmZXJEeGUgc2hvdWxkIGluY2x1 ZGUgcHJvb2Ygb2Ygc3VjY2Vzc2Z1bCB1bml0IHRlc3RzLjxicj4NCis8YnI+DQorIyMjIERlYnVn Z2luZzxicj4NCitUbyBhc3Npc3QgaW4gZGVidWdnaW5nIGFueSBpc3N1ZXMsIGNoYW5nZSBCTE9C X1RSQU5TRkVSX0RFQlVHIHRvIDE8YnI+DQotLTxicj4NCjIuMTcuMTxicj4NCjxicj4NCjwvYmxv Y2txdW90ZT4NCjxiciBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1p bHk6IEhlbHZldGljYTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQt dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu b3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9y bTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQt dGV4dC1zdHJva2Utd2lkdGg6IDBweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyI+DQo8YnIgc3R5 bGU9ImNhcmV0LWNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZv bnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9y bWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWdu OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNw YWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRo OiAwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPg0KPHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9y OiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2E7IGZvbnQtc2l6ZTogMTJweDsg Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdv cmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHRleHQtZGVj b3JhdGlvbjogbm9uZTsgZmxvYXQ6IG5vbmU7IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyI+ PC9zcGFuPjwvZGl2Pg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+DQo8YnI+DQo8L2JvZHk+DQo8L2h0 bWw+DQo= --_000_1EAC4DCEEC614E99B82AE11890D18BD7amperemailonmicrosoftco_--