From nobody Mon Nov 17 23:54:13 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=nutanix.com); dmarc=pass(p=none dis=none) header.from=nutanix.com ARC-Seal: i=2; a=rsa-sha256; t=1606823081; cv=pass; d=zohomail.com; s=zohoarc; b=m2/DJqPpk3Q6rcldDSFMN5jR6noZdP+YWJkPAxO/7Xui7aYom0YvLzPgNP6DbT9xYtlPx63qTMUA+BuQexA1uCoV8NmLqcP6gffL5RzR+/8SjnGpNfYNZAO5kdhkUCJKblCCYnQVPCh8l3tupTNj0YR/RDzDIIv/26HZXI5yQ9s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1606823081; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=OyDg6jlsRqFnd6o/I5OT9UQX2PRuHI9eeXvb0pu6chM=; b=hHzFWvQho3d9S81Ei64K3f5E0huZq9x6RXQ73EJJW836O0ndtOdiOS9hhm4WMUjUOFvIcwEQ8qIhzRyCyFNkwBi1+uMZVEQyM0/bQZTl9+oDr4Hf0bRVf8CAKzGrqBEOKSMhjgiynX0vJKkrQj9dj6YMQ4DxCc5HYMwKZ9YxrJs= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=nutanix.com); dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1606823081188444.8488774290463; Tue, 1 Dec 2020 03:44:41 -0800 (PST) Received: from localhost ([::1]:44750 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kk45H-0004mG-C6 for importer@patchew.org; Tue, 01 Dec 2020 06:44:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60196) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kk43b-0003J8-Uz for qemu-devel@nongnu.org; Tue, 01 Dec 2020 06:42:56 -0500 Received: from mx0b-002c1b01.pphosted.com ([148.163.155.12]:43804) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kk43R-0002it-Jn for qemu-devel@nongnu.org; Tue, 01 Dec 2020 06:42:55 -0500 Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 0B1BNLdN005080; Tue, 1 Dec 2020 03:42:33 -0800 Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2044.outbound.protection.outlook.com [104.47.66.44]) by mx0b-002c1b01.pphosted.com with ESMTP id 353nhr5h2p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 01 Dec 2020 03:42:31 -0800 Received: from MW2PR02MB3723.namprd02.prod.outlook.com (2603:10b6:907:2::32) by CO6PR02MB7683.namprd02.prod.outlook.com (2603:10b6:303:a0::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3632.17; Tue, 1 Dec 2020 11:42:27 +0000 Received: from MW2PR02MB3723.namprd02.prod.outlook.com ([fe80::950e:a59c:cc5b:4908]) by MW2PR02MB3723.namprd02.prod.outlook.com ([fe80::950e:a59c:cc5b:4908%4]) with mapi id 15.20.3611.031; Tue, 1 Dec 2020 11:42:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=proofpoint20171006; bh=OyDg6jlsRqFnd6o/I5OT9UQX2PRuHI9eeXvb0pu6chM=; b=eQq/N2R1WM4FSFLdItVRuWIvvwAS1sG9qWLSKE22y8NOZVop8d8WGIg3hyNsON4WWMsq nAYaRJ3+yQCJPpCbiXVlLdvI3Ac8JINm3IdujrnO260SE9iZZ+64M4w993ezc/jQ1YtI XXj2iRWCVmAZX1BHotELLVJ3dN+QQgAH6HMkbPkx91Hh4uPBWPJZ7UXA/nCEkYLhOCUZ RN5NylbyrAfCwe8Pg0Zh73siZpriAt/WREep3OOz52SEUuUcEYCh2lXCrttDMo9nK5LF Smd5M57sZe/SNxqmHFAe8ismxz9yUArsZlk7vmB56LyS1fKeUIp3a5ksnwpUsod7UCol 6g== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gJzMGb/gIb4KDgkz/GubdNOcmGV0JElHs9vObTMzNZhzglNj5hnUiC5lZHnivhIHPAQNUnOIVbxnUhPsfurMqPfPTT5JrxF7/+EV0qUxocV+wByPa1Hceyh9dBflb8UDnLFl+hh3GKdA85xPNv4Be06XPcXm1hvgkY7y6UNi2PujBf0IcczxysX434FBy37VNAe2uJQj4PeXEv1EoafSrYEiOaT2OoSq6G3Yp6LBk+diTdAyivGDbT3hD0sViGgh+OPiBQWtfBGAoZ6ylm/5GIPkJ+mEjf5K843HgQZTq1aWJDu+GhJfr3ZH6Phk9XfWQzaBf093we3CgDD03IMWeQ== 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-SenderADCheck; bh=OyDg6jlsRqFnd6o/I5OT9UQX2PRuHI9eeXvb0pu6chM=; b=awszB0cbb0fvMN5IRpqoal2NIlY8o2X06sIkbrpK17+rSFCbxYueihPfzo4y2QXGul+lCZ2oVVH9buJTdpCLYRVFztlWckeXNDYKQTbg1wqn/+Uq4P0eAP0GmnrVHszDmobEXVRFvpvegFk3V8t+CH8dIB7Zvl/ATnEzVHHnbVJbvEc7v+I1EYsPXShl/m936rjjuzLLTVSBp8Ncw2iar4jtOOhHo4nROwegRcgYKj+mVSRHvMqnJ4bHkwC3qzfalTRJUbHIRtDrNGOMcMoodEsq0CkOf8SVt/JoUafHGpqGdxsWoYMv/W0gyWvHWnyR3hfHCUdWfTHbAZozkW0x6A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none From: Thanos Makatos To: =?utf-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= Subject: RE: [PATCH v7] introduce vfio-user protocol specification Thread-Topic: [PATCH v7] introduce vfio-user protocol specification Thread-Index: AQHWxzOll5FHsEt560WNurTBDLt6Manh6oWAgAAunZA= Date: Tue, 1 Dec 2020 11:42:27 +0000 Message-ID: References: <20201130161229.23164-1-thanos.makatos@nutanix.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=nutanix.com; x-originating-ip: [78.149.9.252] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5da9cc23-dcab-40db-8b24-08d895ee2de0 x-ms-traffictypediagnostic: CO6PR02MB7683: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-proofpoint-crosstenant: true x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: uq9qEKD+oQWpwDYkyu2X8v5lnS1vSYPZZMzWSvU7dyXBM1YM8BcBRdUC80XcQOEzB25YWGfV1EUwof/rtiy/ifm7n918a0dRL8zFAJvm+p9r6+BA6Vnwom8Jhse7TBTPSGjrwvEZogWWDD9z2zG9AnF+2ug1UCeNB00ZLHmsvxkIKF0nLSr4i+nXZd7rwzKu9LIerR5bdWrg54WEpHwLdTLDAD8kFT7Hgxif6ZbfxRjpidaXWMa4kUbKGOHD4ExkBMsdhOk1G1oqFHZ9+vATHOlKdyyVx/EyUObEocqpDzH1S2eQWSAnZAIOOVYvHj2HoRHrXK3j8zdi7R/b6Yb1l7YkOxv1KOYDwz21KymLOOu3BRnmFFnsBd2lt2AxrjYCgNWQ3Bh9ou2qKkzXSX6UXw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR02MB3723.namprd02.prod.outlook.com; PTR:; CAT:NONE; SFS:(136003)(366004)(39860400002)(376002)(396003)(346002)(7696005)(66446008)(52536014)(64756008)(66556008)(66476007)(478600001)(6506007)(66946007)(55236004)(6916009)(53546011)(166002)(76116006)(2906002)(9686003)(7416002)(55016002)(30864003)(186003)(86362001)(4326008)(83380400001)(8676002)(5660300002)(44832011)(8936002)(54906003)(26005)(71200400001)(316002)(33656002)(579004)(559001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?UTFHMmJsYXJwUmsxeEtQdnkyaFR2Vkk2bnNKVkNXengyK0c3aitJTjhBeVZU?= =?utf-8?B?ekxMQzFvTkZHRFZjMEtwOUZndVhBSFlINEYrR3RldXBiakNCdWlENGNHcHZO?= =?utf-8?B?WlVMWE9uOThUTmpnOTV6eER6czJoUkg3Y1dJd2lPbUoxWUdoeTFCZkZ4OUR6?= =?utf-8?B?b0tXS3UxL2NVUnlHZUZ4K0NGMWJoZ041bFpxSWphZk40ZGx0KzRNa0lncllD?= =?utf-8?B?Sm9zOW9OSjdLczZoMnEzaFdmN1FxcFhhVHFSc0FDbGNLZ1FPRzJ6UjgwSzBm?= =?utf-8?B?aUMwOEJnSCtBVnpPeGJEUUhmTWZaUGV3NVpwemlEWnl5SmxObzJkbDVzQVZF?= =?utf-8?B?akZ6b3Q2NWZ3WmZDRDU1SllJNmx2ZDlzR3NsYytHWFV5RkxZc09qUzl2TkhU?= =?utf-8?B?ejZwWXdta2thRExGR1RUVXdSTDJYTHdxMTFKZXJKY3c3NklNMFJhSnpYVTV1?= =?utf-8?B?S083N2krNVBRU1ZRYkh4TDd1Zy9RakV6WHptSTVKcG1xTlM4R0lIU1RHRndN?= =?utf-8?B?MElnN1B4T0pROFdtVllNZmR1V3IvUFhkZ2F6cEUwWEcrOUw2UVNFcE85MkdB?= =?utf-8?B?bzlxcWd1TDExRE1OOUpKdVp4KzdlSW5wVzBsOTNBdlByTTliSUFEbmUzb3dN?= =?utf-8?B?elN2RnZOYzhLbUltbnJLWG5wWlNFaDR3TnZkdHVVaE44L2FsWUwwdTRGbXlj?= =?utf-8?B?WlkveU5ZK3JxaDUrNTJ5RVk4aHNPcVFCMWMzSW5qODE4ZzVvcmpIcndXK3Ux?= =?utf-8?B?eVRyTkt6MkZ6RjFzZXEzcmNnU2w0SloyWUVhNEw0ZTFqZXNtaEw3dVNmOFBY?= =?utf-8?B?bWhaQUFRZGhiMWJaS2dJQlYxVDZ5K3JFTHV6T2pxODBVMEN2S25TYXByZDJN?= =?utf-8?B?aXJLUFZ5Q0VsNU1ON1dSV2UzbWJ5bXNrNGZCSGhvZjlwbGNrem5QVUVrakZB?= =?utf-8?B?QXNrQWQ3bHQxZ1lZUUVyTThzb0JTSnh1Y0lVWWR6U1NjWTIyVSs4ekRaL3p1?= =?utf-8?B?bXRHQ0U1NktJb0VGUDlkVW9FditxcDNxc0ZnWFMwV2ZvWHlSSURYcklZeHdK?= =?utf-8?B?TVRlVTBHVUVtYlE0STlhRE9rdUc4YUJ5VEFENWVPNHBzWHNjaGhORC80eWIw?= =?utf-8?B?dDdQY0VOVzBYUzZpZklENmpzNFVUblc5bENxeXhaSEJod2ZFUnBrNTZWbFUv?= =?utf-8?B?Z1p3VEhSZ1hFOWRkYzFSWDBCa2Z4QnpjRFN3c0dLMHMrT0RoZWt1MStpRVpr?= =?utf-8?B?NGVNeFFnZlJjNlA5NjhYV2xFcG5oL1prMFMwbnM3eWdOb05TMzFnTHUvbEFQ?= =?utf-8?Q?CIyKatN5XXIHc=3D?= Content-Type: multipart/alternative; boundary="_000_MW2PR02MB3723FB7118FC68E96C59E75B8BF40MW2PR02MB3723namp_" MIME-Version: 1.0 X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW2PR02MB3723.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5da9cc23-dcab-40db-8b24-08d895ee2de0 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Dec 2020 11:42:27.5511 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: AymB0hemdRXQB00m9L0m5XqIMKHZDG2/V4fUeNauJ9X60oULBi7f/douA8AdLKmPyvytamUAcXFafEgEWkmHrFrQXe3tjQAvWEwFl64fYRk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR02MB7683 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.312, 18.0.737 definitions=2020-12-01_04:2020-11-30, 2020-12-01 signatures=0 X-Proofpoint-Spam-Reason: safe Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=148.163.155.12; envelope-from=thanos.makatos@nutanix.com; helo=mx0b-002c1b01.pphosted.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, WEIRD_QUOTING=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Walker, Benjamin" , John G Johnson , Swapnil Ingle , "Michael S . Tsirkin" , Jason Wang , QEMU , John Levon , Kirti Wankhede , Gerd Hoffmann , Raphael Norwitz , Jagannathan Raman , "Harris, James R" , Alex Williamson , Elena Ufimtseva , Kanth Ghatraju , Felipe Franciosi , Yan Zhao , Konrad Rzeszutek Wilk , "yuvalkashtan@gmail.com" , "Dr. David Alan Gilbert" , "ismael@linux.com" , Stefan Hajnoczi , "Liu, Changpeng" , "tomassetti.andrea@gmail.com" , Cornelia Huck , Christophe de Dinechin , Tina Zhang , "xiuchun.lu@intel.com" , Paolo Bonzini Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) --_000_MW2PR02MB3723FB7118FC68E96C59E75B8BF40MW2PR02MB3723namp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 From: Marc-Andr=C3=A9 Lureau Sent: 01 December 2020 08:32 To: Thanos Makatos Cc: QEMU ; Walker, Benjamin ; John G Johnson ; Swapnil Ingle ; Michael S . Tsirkin ; Jason Wang ; John Levon ; Kirti Wankhede ; Gerd Hoffmann ; Tina Zhang ; Jagannathan Raman ; Harris, James R ; Elena Ufimtseva ; Kanth G= hatraju ; Felipe Franciosi ;= Christophe de Dinechin ; Yan Zhao ; Konrad Rzeszutek Wilk ; yuvalkashtan@gmail.com= ; Dr. David Alan Gilbert ; ismael@linux.com; Stefan Ha= jnoczi ; Liu, Changpeng ; tom= assetti.andrea@gmail.com; Cornelia Huck ; Alex Williamso= n ; Raphael Norwitz ; xiuchun.lu@intel.com; Paolo Bonzini Subject: Re: [PATCH v7] introduce vfio-user protocol specification Hi On Mon, Nov 30, 2020 at 8:14 PM Thanos Makatos > wrote: This patch introduces the vfio-user protocol specification (formerly known as VFIO-over-socket), which is designed to allow devices to be emulated outside QEMU, in a separate process. vfio-user reuses the existing VFIO defines, structs and concepts. It has been earlier discussed as an RFC in: "RFC: use VFIO over a UNIX domain socket to implement device offloading" Signed-off-by: John G Johnson > Signed-off-by: Thanos Makatos > I am taking a superficial look, as I don't have much experience from implem= enting it (recently). --- Changed since v1: * fix coding style issues * update MAINTAINERS for VFIO-over-socket * add vfio-over-socket to ToC Changed since v2: * fix whitespace Changed since v3: * rename protocol to vfio-user * add table of contents * fix Unicode problems * fix typos and various reStructuredText issues * various stylistic improvements * add backend program conventions * rewrite part of intro, drop QEMU-specific stuff * drop QEMU-specific paragraph about implementation * explain that passing of FDs isn't necessary * minor improvements in the VFIO section * various text substitutions for the sake of consistency * drop paragraph about client and server, already explained in * intro * drop device ID * drop type from version * elaborate on request concurrency * convert some inessential paragraphs into notes * explain why some existing VFIO defines cannot be reused * explain how to make changes to the protocol * improve text of DMA map * reword comment about existing VFIO commands * add reference to Version section * reset device on disconnection * reword live migration section * replace sys/vfio.h with linux/vfio.h * drop reference to iovec * use argz the same way it is used in VFIO * add type field in header for clarity Changed since v4: * introduce support for live migration as defined in * include/uapi/linux/vfio.h * introduce 'max_fds' and 'migration' capabilities: * remove 'index' from VFIO_USER_DEVICE_GET_IRQ_INFO * fix minor typos and reworded some text for clarity Changed since v5: * fix minor typos * separate VFIO_USER_DMA_MAP and VFIO_USER_DMA_UNMAP * clarify meaning of VFIO bitmap size field * move version major/minor outside JSON * client proposes version first What was the rationale? (See below) It felt more natural this way when we implemented it. * make Errno optional in message header * clarification about message ID uniqueness * clarify that server->client request can appear in between client->server request/reply Changed since v6: * put JSON strings in double quotes * clarify reply behavior on error * introduce max message size capability * clarify semantics when failing to map multiple DMA regions in a single command You can focus on v6 to v7 changes by cloning my fork (https://github.com/tmakatos/qemu [github.com]) and doing: git diff refs/tags/vfio-user/v6 refs/heads/vfio-user/v7 --- MAINTAINERS | 6 + docs/devel/index.rst | 1 + docs/devel/vfio-user.rst | 1662 ++++++++++++++++++++++++++++++++++++++++++= ++++ 3 files changed, 1669 insertions(+) create mode 100644 docs/devel/vfio-user.rst diff --git a/MAINTAINERS b/MAINTAINERS index 68bc160f41..6a4c662976 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1766,6 +1766,12 @@ F: hw/vfio/ap.c F: docs/system/s390x/vfio-ap.rst L: qemu-s390x@nongnu.org +vfio-user +M: John G Johnson > +M: Thanos Makatos > +S: Supported +F: docs/devel/vfio-user.rst + vhost M: Michael S. Tsirkin > S: Supported diff --git a/docs/devel/index.rst b/docs/devel/index.rst index f10ed77e4c..2e2cba28c6 100644 --- a/docs/devel/index.rst +++ b/docs/devel/index.rst @@ -35,3 +35,4 @@ Contents: clocks qom block-coroutine-wrapper + vfio-user diff --git a/docs/devel/vfio-user.rst b/docs/devel/vfio-user.rst new file mode 100644 index 0000000000..d15a228a1a --- /dev/null +++ b/docs/devel/vfio-user.rst @@ -0,0 +1,1662 @@ +.. include:: + +******************************** +vfio-user Protocol Specification +******************************** + +------------ +Version_ 0.1 +------------ + +.. contents:: Table of Contents + +Introduction +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +vfio-user is a protocol that allows a device to be emulated in a separate +process outside of a Virtual Machine Monitor (VMM). vfio-user devices cons= ist +of a generic VFIO device type, living inside the VMM, which we call the cl= ient, +and the core device implementation, living outside the VMM, which we call = the +server. + +The `Linux VFIO ioctl interface >`_ +been chosen as the base for this protocol for the following reasons: + +1) It is a mature and stable API, backed by an extensively used framework. +2) The existing VFIO client implementation in QEMU (qemu/hw/vfio/) can be + largely reused. + +.. Note:: + In a proof of concept implementation it has been demonstrated that usin= g VFIO + over a UNIX domain socket is a viable option. vfio-user is designed with + QEMU in mind, however it could be used by other client applications. The + vfio-user protocol does not require that QEMU's VFIO client implementa= tion + is used in QEMU. + +None of the VFIO kernel modules are required for supporting the protocol, +neither in the client nor the server, only the source header files are use= d. + +The main idea is to allow a virtual device to function in a separate proce= ss in +the same host over a UNIX domain socket. A UNIX domain socket (AF_UNIX) is +chosen because file descriptors can be trivially sent over it, which in tu= rn +allows: + +* Sharing of client memory for DMA with the server. +* Sharing of server memory with the client for fast MMIO. +* Efficient sharing of eventfd's for triggering interrupts. + +Other socket types could be used which allow the server to run in a separa= te +guest in the same host (AF_VSOCK) or remotely (AF_INET). Theoretically the +underlying transport does not necessarily have to be a socket, however we = do +not examine such alternatives. In this protocol version we focus on using a +UNIX domain socket and introduce basic support for the other two types of +sockets without considering performance implications. + +While passing of file descriptors is desirable for performance reasons, it= is +not necessary neither for the client nor for the server to support it in o= rder +to implement the protocol. There is always an in-band, message-passing fall +back mechanism. + +VFIO +=3D=3D=3D=3D +VFIO is a framework that allows a physical device to be securely passed th= rough +to a user space process; the device-specific kernel driver does not drive = the +device at all. Typically, the user space process is a VMM and the device = is +passed through to it in order to achieve high performance. VFIO provides a= n API +and the required functionality in the kernel. QEMU has adopted VFIO to all= ow a +guest to directly access physical devices, instead of emulating them in +software. + +vfio-user reuses the core VFIO concepts defined in its API, but implements= them +as messages to be sent over a socket. It does not change the kernel-based = VFIO +in any way, in fact none of the VFIO kernel modules need to be loaded to u= se +vfio-user. It is also possible for the client to concurrently use the curr= ent +kernel-based VFIO for one device, and vfio-user for another device. + +VFIO Device Model +----------------- +A device under VFIO presents a standard interface to the user process. Man= y of +the VFIO operations in the existing interface use the ioctl() system call,= and +references to the existing interface are called the ioctl() implementation= in +this document. + +The following sections describe the set of messages that implement the VFIO +interface over a socket. In many cases, the messages are direct translatio= ns of +data structures used in the ioctl() implementation. Messages derived from +ioctl()s will have a name derived from the ioctl() command name. E.g., the +VFIO_GET_INFO ioctl() command becomes a VFIO_USER_GET_INFO message. The +purpose of this reuse is to share as much code as feasible with the ioctl() +implementation. + +Connection Initiation +^^^^^^^^^^^^^^^^^^^^^ +After the client connects to the server, the initial server message is +VFIO_USER_VERSION to propose a protocol version and set of capabilities to +apply to the session. The client replies with a compatible version and set= of +capabilities it supports, or closes the connection if it cannot support the +advertised version. Ok, so the server announces first. (it makes sense to me, as the client is = more adjustable than the server - and it allows to discover server caps) The protocol is wrong, we missed updating the text when switching from the = server to the client sending the version first. So, it=E2=80=99s the client that announces the version first, we=E2=80=99ll= fix the text. + +DMA Memory Configuration +^^^^^^^^^^^^^^^^^^^^^^^^ +The client uses VFIO_USER_DMA_MAP and VFIO_USER_DMA_UNMAP messages to info= rm +the server of the valid DMA ranges that the server can access on behalf +of a device. DMA memory may be accessed by the server via VFIO_USER_DMA_RE= AD +and VFIO_USER_DMA_WRITE messages over the socket. + +An optimization for server access to client memory is for the client to pr= ovide +file descriptors the server can mmap() to directly access client memory. N= ote +that mmap() privileges cannot be revoked by the client, therefore file +descriptors should only be exported in environments where the client trust= s the +server not to corrupt guest memory. + +Device Information +^^^^^^^^^^^^^^^^^^ +The client uses a VFIO_USER_DEVICE_GET_INFO message to query the server for +information about the device. This information includes: + +* The device type and whether it supports reset (``VFIO_DEVICE_FLAGS_``), +* the number of device regions, and +* the device presents to the client the number of interrupt types the devi= ce + supports. + +Region Information +^^^^^^^^^^^^^^^^^^ +The client uses VFIO_USER_DEVICE_GET_REGION_INFO messages to query the ser= ver +for information about the device's memory regions. This information descri= bes: + +* Read and write permissions, whether it can be memory mapped, and whether= it + supports additional capabilities (``VFIO_REGION_INFO_CAP_``). +* Region index, size, and offset. + +When a region can be mapped by the client, the server provides a file +descriptor which the client can mmap(). The server is responsible for poll= ing +for client updates to memory mapped regions. + +Region Capabilities +""""""""""""""""""" +Some regions have additional capabilities that cannot be described adequat= ely +by the region info data structure. These capabilities are returned in the +region info reply in a list similar to PCI capabilities in a PCI device's +configuration space. + +Sparse Regions +"""""""""""""" +A region can be memory-mappable in whole or in part. When only a subset of= a +region can be mapped by the client, a VFIO_REGION_INFO_CAP_SPARSE_MMAP +capability is included in the region info reply. This capability describes +which portions can be mapped by the client. + +.. Note:: + For example, in a virtual NVMe controller, sparse regions can be used so + that accesses to the NVMe registers (found in the beginning of BAR0) are + trapped (an infrequent event), while allowing direct access to the door= bells + (an extremely frequent event as every I/O submission requires a write to + BAR0), found right after the NVMe registers in BAR0. + +Device-Specific Regions +""""""""""""""""""""""" + +A device can define regions additional to the standard ones (e.g. PCI inde= xes +0-8). This is achieved by including a VFIO_REGION_INFO_CAP_TYPE capability +in the region info reply of a device-specific region. Such regions are ref= lected +in ``struct vfio_device_info.num_regions``. Thus, for PCI devices this val= ue can +be equal to, or higher than, VFIO_PCI_NUM_REGIONS. + +Interrupts +^^^^^^^^^^ +The client uses VFIO_USER_DEVICE_GET_IRQ_INFO messages to query the server= for +the device's interrupt types. The interrupt types are specific to the bus = the +device is attached to, and the client is expected to know the capabilities= of +each interrupt type. The server can signal an interrupt either with +VFIO_USER_VM_INTERRUPT messages over the socket, or can directly inject +interrupts into the guest via an event file descriptor. The client configu= res +how the server signals an interrupt with VFIO_USER_SET_IRQS messages. + +Device Read and Write +^^^^^^^^^^^^^^^^^^^^^ +When the guest executes load or store operations to device memory, the cli= ent +forwards these operations to the server with VFIO_USER_REGION_READ or +VFIO_USER_REGION_WRITE messages. The server will reply with data from the +device on read operations or an acknowledgement on write operations. + +DMA +^^^ +When a device performs DMA accesses to guest memory, the server will forwa= rd +them to the client with VFIO_USER_DMA_READ and VFIO_USER_DMA_WRITE message= s. +These messages can only be used to access guest memory the client has +configured into the server. + +Protocol Specification +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +To distinguish from the base VFIO symbols, all vfio-user symbols are prefi= xed +with vfio_user or VFIO_USER. In revision 0.1, all data is in the little-en= dian +format, although this may be relaxed in future revision in cases where the +client and server are both big-endian. The messages are formatted for seam= less +reuse of the native VFIO structs. + +Socket +------ + +A server can serve: + +1) one or more clients, and/or +2) one or more virtual devices, belonging to one or more clients. + +The current protocol specification requires a dedicated socket per +client/server connection. It is a server-side implementation detail whethe= r a +single server handles multiple virtual devices from the same or multiple +clients. The location of the socket is implementation-specific. Multiplexi= ng +clients, devices, and servers over the same socket is not supported in this +version of the protocol. + +Authentication +-------------- +For AF_UNIX, we rely on OS mandatory access controls on the socket files, +therefore it is up to the management layer to set up the socket as require= d. +Socket types than span guests or hosts will require a proper authentication +mechanism. Defining that mechanism is deferred to a future version of the +protocol. + +Command Concurrency +------------------- +A client may pipeline multiple commands without waiting for previous comma= nd +replies. The server will process commands in the order they are received.= A +consequence of this is if a client issues a command with the *No_reply* bi= t, +then subseqently issues a command without *No_reply*, the older command wi= ll +have been processed before the reply to the younger command is sent by the +server. The client must be aware of the device's capability to process +concurrent commands if pipelining is used. For example, pipelining allows +multiple client threads to concurently access device memory; the client mu= st +ensure these acceses obey device semantics. + +An example is a frame buffer device, where the device may allow concurrent +access to different areas of video memory, but may have indeterminate beha= vior +if concurrent acceses are performed to command or status registers. + +Note that unrelated messages sent from the sevrer to the client can appear= in +between a client to server request/reply and vice versa. + +Socket Disconnection Behavior +----------------------------- +The server and the client can disconnect from each other, either intention= ally +or unexpectedly. Both the client and the server need to know how to handle= such +events. + +Server Disconnection +^^^^^^^^^^^^^^^^^^^^ +A server disconnecting from the client may indicate that: + +1) A virtual device has been restarted, either intentionally (e.g. because= of a + device update) or unintentionally (e.g. because of a crash). +2) A virtual device has been shut down with no intention to be restarted. + +It is impossible for the client to know whether or not a failure is +intermittent or innocuous and should be retried, therefore the client shou= ld +reset the VFIO device when it detects the socket has been disconnected. +Error recovery will be driven by the guest's device error handling +behavior. + +Client Disconnection +^^^^^^^^^^^^^^^^^^^^ +The client disconnecting from the server primarily means that the client +has exited. Currently, this means that the guest is shut down so the devic= e is +no longer needed therefore the server can automatically exit. However, the= re +can be cases where a client disconnection should not result in a server ex= it: + +1) A single server serving multiple clients. +2) A multi-process QEMU upgrading itself step by step, which is not yet + implemented. + +Therefore in order for the protocol to be forward compatible the server sh= ould +take no action when the client disconnects. If anything happens to the cli= ent +the control stack will know about it and can clean up resources +accordingly. + +Request Retry and Response Timeout +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +A failed command is a command that has been successfully sent and has been +responded to with an error code. Failure to send the command in the first = place +(e.g. because the socket is disconnected) is a different type of error exa= mined +earlier in the disconnect section. + +.. Note:: + QEMU's VFIO retries certain operations if they fail. While this makes s= ense + for real HW, we don't know for sure whether it makes sense for virtual + devices. + +Defining a retry and timeout scheme is deferred to a future version of the +protocol. + +.. _Commands: + +Commands +-------- +The following table lists the VFIO message command IDs, and whether the +message command is sent from the client or the server. + ++----------------------------------+---------+-------------------+ +| Name | Command | Request Direction | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| VFIO_USER_VERSION | 1 | server -> client | Ok Will fix as =E2=80=9Cclient -> server=E2=80=9D. ++----------------------------------+---------+-------------------+ +| VFIO_USER_DMA_MAP | 2 | client -> server | ++----------------------------------+---------+-------------------+ +| VFIO_USER_DMA_UNMAP | 3 | client -> server | ++----------------------------------+---------+-------------------+ +| VFIO_USER_DEVICE_GET_INFO | 4 | client -> server | ++----------------------------------+---------+-------------------+ +| VFIO_USER_DEVICE_GET_REGION_INFO | 5 | client -> server | ++----------------------------------+---------+-------------------+ +| VFIO_USER_DEVICE_GET_IRQ_INFO | 6 | client -> server | ++----------------------------------+---------+-------------------+ +| VFIO_USER_DEVICE_SET_IRQS | 7 | client -> server | ++----------------------------------+---------+-------------------+ +| VFIO_USER_REGION_READ | 8 | client -> server | ++----------------------------------+---------+-------------------+ +| VFIO_USER_REGION_WRITE | 9 | client -> server | ++----------------------------------+---------+-------------------+ +| VFIO_USER_DMA_READ | 10 | server -> client | ++----------------------------------+---------+-------------------+ +| VFIO_USER_DMA_WRITE | 11 | server -> client | ++----------------------------------+---------+-------------------+ +| VFIO_USER_VM_INTERRUPT | 12 | server -> client | ++----------------------------------+---------+-------------------+ +| VFIO_USER_DEVICE_RESET | 13 | client -> server | ++----------------------------------+---------+-------------------+ +| VFIO_USER_DIRTY_PAGES | 14 | client -> server | ++----------------------------------+---------+-------------------+ + + +.. Note:: Some VFIO defines cannot be reused since their values are + architecture-specific (e.g. VFIO_IOMMU_MAP_DMA). + +Header +------ +All messages, both command messages and reply messages, are preceded by a +header that contains basic information about the message. The header is +followed by message-specific data described in the sections below. + ++----------------+--------+-------------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D= +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | 0 | 2 | ++----------------+--------+-------------+ +| Command | 2 | 2 | ++----------------+--------+-------------+ +| Message size | 4 | 4 | ++----------------+--------+-------------+ +| Flags | 8 | 4 | ++----------------+--------+-------------+ +| | +-----+------------+ | +| | | Bit | Definition | | +| | +=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ | +| | | 0-3 | Type | | +| | +-----+------------+ | +| | | 4 | No_reply | | +| | +-----+------------+ | +| | | 5 | Error | | +| | +-----+------------+ | ++----------------+--------+-------------+ +| Error | 12 | 4 | ++----------------+--------+-------------+ +| | 16 | variable | ++----------------+--------+-------------+ + +* *Message ID* identifies the message, and is echoed in the command's reply + message. Message IDs belong entirely to the sender, can be re-used (even + concurrently) and the receiver must not make any assumptions about their + uniqueness. +* *Command* specifies the command to be executed, listed in Commands_. +* *Message size* contains the size of the entire message, including the he= ader. +* *Flags* contains attributes of the message: + + * The *Type* bits indicate the message type. + + * *Command* (value 0x0) indicates a command message. + * *Reply* (value 0x1) indicates a reply message acknowledging a previ= ous + command with the same message ID. + * *No_reply* in a command message indicates that no reply is needed for = this command. + This is commonly used when multiple commands are sent, and only the la= st needs + acknowledgement. + * *Error* in a reply message indicates the command being acknowledged had + an error. In this case, the *Error* field will be valid. + +* *Error* in a reply message is an optional UNIX errno value. It may be ze= ro + even if the Error bit is set in Flags. It is reserved in a command messa= ge. + +Each command message in Commands_ must be replied to with a reply message,= unless the +message sets the *No_Reply* bit. The reply consists of the header with th= e *Reply* +bit set, plus any additional data. + +If an error occurs, the reply message must only include the reply header. + +VFIO_USER_VERSION +----------------- + +This is the initial message sent by the client after the socket connection= is +established: Contradictory with the above. Indeed, this will be correct after we update the rest of the text. + +Message format +^^^^^^^^^^^^^^ + ++--------------+-------------------------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+-------------------------------------------+ +| Command | 1 | ++--------------+-------------------------------------------+ +| Message size | 16 + version header + version data length | ++--------------+-------------------------------------------+ +| Flags | Reply bit set in reply | ++--------------+-------------------------------------------+ +| Error | 0/errno | ++--------------+-------------------------------------------+ +| Version | version header | ++--------------+-------------------------------------------+ + +Version Header Format +^^^^^^^^^^^^^^^^^^^^^ + ++---------------+--------+------------------------------------------------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| version major | 16 | 2 | ++---------------+--------+------------------------------------------------+ +| version minor | 18 | 2 | ++---------------+--------+------------------------------------------------+ +| version data | 22 | variable (including terminating NUL | +| | | character). Optional. | ++---------------+--------+------------------------------------------------+ Annoying that this version won't be easily human-readable. (you can't simpl= y netcat to a vfio server and get the version) iirc, earlier versions of the proposal just sent a json message straight wi= thout a header. This initial text-phase is imho more interesting, as the binary protocol re= quirements are mostly for machine-convenience and performance reasons when = the device is actually running. It=E2=80=99s simpler to parse the JSON string knowing the exact version. + +Version Data Format +^^^^^^^^^^^^^^^^^^^ + +The version data is an optional JSON byte array with the following format: + ++--------------------+------------------+---------------------------------= --+ +| Name | Type | Description = | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| ``"capabilities"`` | collection of | Contains common capabilities tha= t | +| | name/value pairs | the sender supports. Optional. = | ++--------------------+------------------+---------------------------------= --+ + +Capabilities: + ++--------------------+------------------+---------------------------------= ----+ +| Name | Type | Description = | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D+ +| ``"max_fds"`` | number | Maximum number of file descripto= rs | +| | | the can be received by the sende= r. | +| | | Optional. If not specified then = the | +| | | receiver must assume = | +| | | ``"max_fds"=3D1``. = | ++--------------------+------------------+---------------------------------= ----+ +| ``"max_msg_size"`` | number | Maximum message size in bytes th= at | +| | | the receiver can handle, includi= ng | +| | | the header. Optional. If not = | +| | | specified then the receiver must= | +| | | assume ``"max_msg_size"=3D4096``= . | ++--------------------+------------------+---------------------------------= ----+ +| ``"migration"`` | collection of | Migration capability parameters.= If | +| | name/value pairs | missing then migration is not = | +| | | supported by the sender. = | ++--------------------+------------------+---------------------------------= ----+ + +The migration capability contains the following name/value pairs: + ++--------------+--------+-----------------------------------------------+ +| Name | Type | Description | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| ``"pgsize"`` | number | Page size of dirty pages bitmap. The smallest | +| | | between the client and the server is used. | ++--------------+--------+-----------------------------------------------+ + + +.. _Version: + +Versioning and Feature Support +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Upon accepting a connection, the client must send a VFIO_USER_VERSION mess= age +proposing a protocol version and a set of capabilities. The server compares +these with the versions and capabilities it supports and sends a +VFIO_USER_VERSION reply according to the following rules. I don't think the server will be as adaptable as the client. Again, it feel= s backward to me. + +* The major version in the reply must be the same as proposed. If the clie= nt + does not support the proposed major, it closes the connection. +* The minor version in the reply must be equal to or less than the minor + version proposed. +* The capability list must be a subset of those proposed. If the server + requires a capability the client did not include, it closes the connecti= on. + +The protocol major version will only change when incompatible protocol cha= nges +are made, such as changing the message format. The minor version may change +when compatible changes are made, such as adding new messages or capabilit= ies, +Both the client and server must support all minor versions less than the +maximum minor version it supports. E.g., an implementation that supports +version 1.3 must also support 1.0 through 1.2. + +When making a change to this specification, the protocol version number mu= st +be included in the form "added in version X.Y" + + +VFIO_USER_DMA_MAP +----------------- + +Message Format +^^^^^^^^^^^^^^ + ++--------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+------------------------+ +| Command | 2 | ++--------------+------------------------+ +| Message size | 16 + table size | ++--------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------+------------------------+ +| Error | 0/errno | ++--------------+------------------------+ +| Table | array of table entries | ++--------------+------------------------+ + +This command message is sent by the client to the server to inform it of t= he +memory regions the server can access. It must be sent before the server can +perform any DMA to the client. It is normally sent directly after the vers= ion +handshake is completed, but may also occur when memory is added to the cli= ent, +or if the client uses a vIOMMU. If the client does not expect the server to +perform DMA then it does not need to send to the server VFIO_USER_DMA_MAP +commands. If the server does not need to perform DMA then it can ignore su= ch +commands but it must still reply to them. The table is an array of the +following structure: + +Table entry format +^^^^^^^^^^^^^^^^^^ + ++-------------+--------+-------------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Address | 0 | 8 | ++-------------+--------+-------------+ +| Size | 8 | 8 | ++-------------+--------+-------------+ +| Offset | 16 | 8 | ++-------------+--------+-------------+ +| Protections | 24 | 4 | ++-------------+--------+-------------+ +| Flags | 28 | 4 | ++-------------+--------+-------------+ +| | +-----+------------+ | +| | | Bit | Definition | | +| | +=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ | +| | | 0 | Mappable | | +| | +-----+------------+ | ++-------------+--------+-------------+ + +* *Address* is the base DMA address of the region. +* *Size* is the size of the region. +* *Offset* is the file offset of the region with respect to the associated= file + descriptor. +* *Protections* are the region's protection attributes as encoded in + ````. +* *Flags* contains the following region attributes: + + * *Mappable* indicates that the region can be mapped via the mmap() syst= em + call using the file descriptor provided in the message meta-data. + +This structure is 32 bytes in size, so the message size is: +16 + (# of table entries * 32). + +If a DMA region being added can be directly mapped by the server, an array= of +file descriptors must be sent as part of the message meta-data. Each mappa= ble +region entry must have a corresponding file descriptor. On AF_UNIX sockets= , the +file descriptors must be passed as SCM_RIGHTS type ancillary data. Otherwi= se, +if a DMA region cannot be directly mapped by the server, it can be accesse= d by +the server using VFIO_USER_DMA_READ and VFIO_USER_DMA_WRITE messages, expl= ained +in `Read and Write Operations`_. A command to map over an existing region = must +be failed by the server with ``EEXIST`` set in error field in the reply. + +Adding multiple DMA regions can partially fail. The response does not indi= cate +which regions were added and which were not, therefore it is a client +implementation detail how to recover from the failure. + +.. Note:: + The server can optionally remove succesfully added DMA regions making t= his + operation atomic. + The client can recover by attempting to unmap one by one all the DMA re= gions + in the VFIO_USER_DMA_MAP command, ignoring failures for regions that do= not + exist. + + + +VFIO_USER_DMA_UNMAP +------------------- + +Message Format +^^^^^^^^^^^^^^ + ++--------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+------------------------+ +| Command | 3 | ++--------------+------------------------+ +| Message size | 16 + table size | ++--------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------+------------------------+ +| Error | 0/errno | ++--------------+------------------------+ +| Table | array of table entries | ++--------------+------------------------+ + +This command message is sent by the client to the server to inform it that= a +DMA region, previously made available via a VFIO_USER_DMA_MAP command mess= age, +is no longer available for DMA. It typically occurs when memory is subtrac= ted +from the client or if the client uses a vIOMMU. If the client does not exp= ect +the server to perform DMA then it does not need to send to the server +VFIO_USER_DMA_UNMAP commands. If the server does not need to perform DMA t= hen +it can ignore such commands but it must still reply to them. The table is = an +array of the following structure: + +Table entry format +^^^^^^^^^^^^^^^^^^ + ++--------------+--------+---------------------------------------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Address | 0 | 8 | ++--------------+--------+---------------------------------------+ +| Size | 8 | 8 | ++--------------+--------+---------------------------------------+ +| Offset | 16 | 8 | ++--------------+--------+---------------------------------------+ +| Protections | 24 | 4 | ++--------------+--------+---------------------------------------+ +| Flags | 28 | 4 | ++--------------+--------+---------------------------------------+ +| | +-----+--------------------------------------+ | +| | | Bit | Definition | | +| | +=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= + | +| | | 0 | VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP | | +| | +-----+--------------------------------------+ | ++--------------+--------+---------------------------------------+ +| VFIO Bitmaps | 32 | variable | ++--------------+--------+---------------------------------------+ + +* *Address* is the base DMA address of the region. +* *Size* is the size of the region. +* *Offset* is the file offset of the region with respect to the associated= file + descriptor. +* *Protections* are the region's protection attributes as encoded in + ````. +* *Flags* contains the following region attributes: + + * *VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP* indicates that a dirty page bit= map + must be populated before unmapping the DMA region. The client must pro= vide + a ``struct vfio_bitmap`` in the VFIO bitmaps field for each region, wi= th + the ``vfio_bitmap.pgsize`` and ``vfio_bitmap.size`` fields initialized. + +* *VFIO Bitmaps* contains one ``struct vfio_bitmap`` per region if + ``VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP`` is set in Flags. + +VFIO bitmap format +^^^^^^^^^^^^^^^^^^ + ++--------+--------+------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D+ +| pgsize | 0 | 8 | ++--------+--------+------+ +| size | 8 | 8 | ++--------+--------+------+ +| data | 16 | 8 | ++--------+--------+------+ + +* *pgsize* is the page size for the bitmap, in bytes. +* *size* is the size for the bitmap, in bytes, excluding the VFIO bitmap h= eader. +* *data* This field is unused in vfio-user. + +The VFIO bitmap structure is defined in ```` +(``struct vfio_bitmap``). + +If ``VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP`` is not set in Flags then the s= ize +of the message is: 16 + (# of table entries * 32). +If ``VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP`` is set in Flags then the size = of +the message is: 16 + (# of table entries * 56). + +Upon receiving a VFIO_USER_DMA_UNMAP command, if the file descriptor is ma= pped +then the server must release all references to that DMA region before repl= ying, +which includes potentially in flight DMA transactions. Removing a portion = of a +DMA region is possible. If the VFIO_DMA_UNMAP_FLAG_GET_DIRTY_BITMAP bit is= set +in the request, the server must append to the header the ``struct vfio_bit= map`` +received in the command followed by the bitmap, for each region. Thus, the +message size the client should expect is the size of the header plus the s= ize +of ``struct vfio_bitmap`` plus ``vfio_bitmap.size`` bytes for each region.= Each +bit in the bitmap represents one page of size ``vfio_bitmap.pgsize``. + + +VFIO_USER_DEVICE_GET_INFO +------------------------- + +Message format +^^^^^^^^^^^^^^ + ++--------------+----------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+----------------------------+ +| Command | 4 | ++--------------+----------------------------+ +| Message size | 16 in command, 32 in reply | ++--------------+----------------------------+ +| Flags | Reply bit set in reply | ++--------------+----------------------------+ +| Error | 0/errno | ++--------------+----------------------------+ +| Device info | VFIO device info | ++--------------+----------------------------+ + +This command message is sent by the client to the server to query for basic +information about the device. Only the message header is needed in the com= mand +message. The VFIO device info structure is defined in ```` +(``struct vfio_device_info``). + +VFIO device info format +^^^^^^^^^^^^^^^^^^^^^^^ + ++-------------+--------+--------------------------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| argsz | 16 | 4 | ++-------------+--------+--------------------------+ +| flags | 20 | 4 | ++-------------+--------+--------------------------+ +| | +-----+-------------------------+ | +| | | Bit | Definition | | +| | +=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ | +| | | 0 | VFIO_DEVICE_FLAGS_RESET | | +| | +-----+-------------------------+ | +| | | 1 | VFIO_DEVICE_FLAGS_PCI | | +| | +-----+-------------------------+ | ++-------------+--------+--------------------------+ +| num_regions | 24 | 4 | ++-------------+--------+--------------------------+ +| num_irqs | 28 | 4 | ++-------------+--------+--------------------------+ + +* *argsz* is the size of the VFIO device info structure. +* *flags* contains the following device attributes. + + * VFIO_DEVICE_FLAGS_RESET indicates that the device supports the + VFIO_USER_DEVICE_RESET message. + * VFIO_DEVICE_FLAGS_PCI indicates that the device is a PCI device. + +* *num_regions* is the number of memory regions that the device exposes. +* *num_irqs* is the number of distinct interrupt types that the device sup= ports. + +This version of the protocol only supports PCI devices. Additional devices= may +be supported in future versions. + +VFIO_USER_DEVICE_GET_REGION_INFO +-------------------------------- + +Message format +^^^^^^^^^^^^^^ + ++--------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+------------------------+ +| Command | 5 | ++--------------+------------------------+ +| Message size | 48 + any caps | ++--------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------+------------------------+ +| Error | 0/errno | ++--------------+------------------------+ +| Region info | VFIO region info | ++--------------+------------------------+ + +This command message is sent by the client to the server to query for +information about device memory regions. The VFIO region info structure is +defined in ```` (``struct vfio_region_info``). Since the cli= ent +does not know the size of the capabilities, the size of the reply it should +expect is 48 plus any capabilities whose size is indicated in the size fie= ld of +the reply header. + +VFIO region info format +^^^^^^^^^^^^^^^^^^^^^^^ + ++------------+--------+------------------------------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D+ +| argsz | 16 | 4 | ++------------+--------+------------------------------+ +| flags | 20 | 4 | ++------------+--------+------------------------------+ +| | +-----+-----------------------------+ | +| | | Bit | Definition | | +| | +=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ | +| | | 0 | VFIO_REGION_INFO_FLAG_READ | | +| | +-----+-----------------------------+ | +| | | 1 | VFIO_REGION_INFO_FLAG_WRITE | | +| | +-----+-----------------------------+ | +| | | 2 | VFIO_REGION_INFO_FLAG_MMAP | | +| | +-----+-----------------------------+ | +| | | 3 | VFIO_REGION_INFO_FLAG_CAPS | | +| | +-----+-----------------------------+ | ++------------+--------+------------------------------+ +| index | 24 | 4 | ++------------+--------+------------------------------+ +| cap_offset | 28 | 4 | ++------------+--------+------------------------------+ +| size | 32 | 8 | ++------------+--------+------------------------------+ +| offset | 40 | 8 | ++------------+--------+------------------------------+ + +* *argsz* is the size of the VFIO region info structure plus the + size of any region capabilities returned. +* *flags* are attributes of the region: + + * *VFIO_REGION_INFO_FLAG_READ* allows client read access to the region. + * *VFIO_REGION_INFO_FLAG_WRITE* allows client write access to the region. + * *VFIO_REGION_INFO_FLAG_MMAP* specifies the client can mmap() the regio= n. + When this flag is set, the reply will include a file descriptor in its + meta-data. On AF_UNIX sockets, the file descriptors will be passed as + SCM_RIGHTS type ancillary data. + * *VFIO_REGION_INFO_FLAG_CAPS* indicates additional capabilities found i= n the + reply. + +* *index* is the index of memory region being queried, it is the only field + that is required to be set in the command message. +* *cap_offset* describes where additional region capabilities can be found. + cap_offset is relative to the beginning of the VFIO region info structur= e. + The data structure it points is a VFIO cap header defined in + ````. +* *size* is the size of the region. +* *offset* is the offset given to the mmap() system call for regions with = the + MMAP attribute. It is also used as the base offset when mapping a VFIO + sparse mmap area, described below. + +VFIO Region capabilities +^^^^^^^^^^^^^^^^^^^^^^^^ +The VFIO region information can also include a capabilities list. This lis= t is +similar to a PCI capability list - each entry has a common header that +identifies a capability and where the next capability in the list can be f= ound. +The VFIO capability header format is defined in ```` (``stru= ct +vfio_info_cap_header``). + +VFIO cap header format +^^^^^^^^^^^^^^^^^^^^^^ + ++---------+--------+------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D+ +| id | 0 | 2 | ++---------+--------+------+ +| version | 2 | 2 | ++---------+--------+------+ +| next | 4 | 4 | ++---------+--------+------+ + +* *id* is the capability identity. +* *version* is a capability-specific version number. +* *next* specifies the offset of the next capability in the capability lis= t. It + is relative to the beginning of the VFIO region info structure. + +VFIO sparse mmap +^^^^^^^^^^^^^^^^ + ++------------------+----------------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D+ +| id | VFIO_REGION_INFO_CAP_SPARSE_MMAP | ++------------------+----------------------------------+ +| version | 0x1 | ++------------------+----------------------------------+ +| next | | ++------------------+----------------------------------+ +| sparse mmap info | VFIO region info sparse mmap | ++------------------+----------------------------------+ + +This capability is defined when only a subrange of the region supports +direct access by the client via mmap(). The VFIO sparse mmap area is defin= ed in +```` (``struct vfio_region_sparse_mmap_area``). + +VFIO region info cap sparse mmap +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ++----------+--------+------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D= =3D+ +| nr_areas | 0 | 4 | ++----------+--------+------+ +| reserved | 4 | 4 | ++----------+--------+------+ +| offset | 8 | 8 | ++----------+--------+------+ +| size | 16 | 9 | ++----------+--------+------+ +| ... | | | ++----------+--------+------+ + +* *nr_areas* is the number of sparse mmap areas in the region. +* *offset* and size describe a single area that can be mapped by the clien= t. + There will be nr_areas pairs of offset and size. The offset will be adde= d to + the base offset given in the VFIO_USER_DEVICE_GET_REGION_INFO to form the + offset argument of the subsequent mmap() call. + +The VFIO sparse mmap area is defined in ```` (``struct +vfio_region_info_cap_sparse_mmap``). + +VFIO Region Type +^^^^^^^^^^^^^^^^ + ++------------------+---------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| id | VFIO_REGION_INFO_CAP_TYPE | ++------------------+---------------------------+ +| version | 0x1 | ++------------------+---------------------------+ +| next | | ++------------------+---------------------------+ +| region info type | VFIO region info type | ++------------------+---------------------------+ + +This capability is defined when a region is specific to the device. + +VFIO region info type +^^^^^^^^^^^^^^^^^^^^^ + +The VFIO region info type is defined in ```` +(``struct vfio_region_info_cap_type``). + ++---------+--------+------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D+ +| type | 0 | 4 | ++---------+--------+------+ +| subtype | 4 | 4 | ++---------+--------+------+ + +The only device-specific region type and subtype supported by vfio-user is +VFIO_REGION_TYPE_MIGRATION (3) and VFIO_REGION_SUBTYPE_MIGRATION (1). + +VFIO Device Migration Info +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The beginning of the subregion must contain +``struct vfio_device_migration_info``, defined in ````. This +subregion is accessed like any other part of a standard vfio-user PCI regi= on +using VFIO_USER_REGION_READ/VFIO_USER_REGION_WRITE. + ++---------------+--------+-----------------------------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D+ +| device_state | 0 | 4 | ++---------------+--------+-----------------------------+ +| | +-----+----------------------------+ | +| | | Bit | Definition | | +| | +=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ | +| | | 0 | VFIO_DEVICE_STATE_RUNNING | | +| | +-----+----------------------------+ | +| | | 1 | VFIO_DEVICE_STATE_SAVING | | +| | +-----+----------------------------+ | +| | | 2 | VFIO_DEVICE_STATE_RESUMING | | +| | +-----+----------------------------+ | ++---------------+--------+-----------------------------+ +| reserved | 4 | 4 | ++---------------+--------+-----------------------------+ +| pending_bytes | 8 | 8 | ++---------------+--------+-----------------------------+ +| data_offset | 16 | 8 | ++---------------+--------+-----------------------------+ +| data_size | 24 | 8 | ++---------------+--------+-----------------------------+ + +* *device_state* defines the state of the device: + + The client initiates device state transition by writing the intended sta= te. + The server must respond only after it has succesfully transitioned to th= e new + state. If an error occurs then the server must respond to the + VFIO_USER_REGION_WRITE operation with the Error field set accordingly and + must remain at the previous state, or in case of internal error it must + transtition to the error state, defined as + VFIO_DEVICE_STATE_RESUMING | VFIO_DEVICE_STATE_SAVING. The client must + re-read the device state in order to determine it afresh. + + The following device states are defined: + + +-----------+---------+----------+-----------------------------------+ + | _RESUMING | _SAVING | _RUNNING | Description | + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ + | 0 | 0 | 0 | Device is stopped. | + +-----------+---------+----------+-----------------------------------+ + | 0 | 0 | 1 | Device is running, default state. | + +-----------+---------+----------+-----------------------------------+ + | 0 | 1 | 0 | Stop-and-copy state | + +-----------+---------+----------+-----------------------------------+ + | 0 | 1 | 1 | Pre-copy state | + +-----------+---------+----------+-----------------------------------+ + | 1 | 0 | 0 | Resuming | + +-----------+---------+----------+-----------------------------------+ + | 1 | 0 | 1 | Invalid state | + +-----------+---------+----------+-----------------------------------+ + | 1 | 1 | 0 | Error state | + +-----------+---------+----------+-----------------------------------+ + | 1 | 1 | 1 | Invalid state | + +-----------+---------+----------+-----------------------------------+ + + Valid state transitions are shown in the following table: + + +-------------------------+---------+---------+---------------+---------= -+----------+ + | |darr| From / To |rarr| | Stopped | Running | Stop-and-copy | Pre-copy= | Resuming | + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D+ + | Stopped | \- | 0 | 0 | 0 = | 0 | + +-------------------------+---------+---------+---------------+---------= -+----------+ + | Running | 1 | \- | 1 | 1 = | 1 | + +-------------------------+---------+---------+---------------+---------= -+----------+ + | Stop-and-copy | 1 | 0 | \- | 0 = | 0 | + +-------------------------+---------+---------+---------------+---------= -+----------+ + | Pre-copy | 0 | 0 | 1 | \- = | 0 | + +-------------------------+---------+---------+---------------+---------= -+----------+ + | Resuming | 0 | 1 | 0 | 0 = | \- | + +-------------------------+---------+---------+---------------+---------= -+----------+ + + A device is migrated to the destination as follows: + + * The source client transitions the device state from the running state = to + the pre-copy state. This transition is optional for the client but mus= t be + supported by the server. The souce server starts sending device state = data + to the source client through the migration region while the device is + running. + + * The source client transitions the device state from the running state = or the + pre-copy state to the stop-and-copy state. The source server stops the + device, saves device state and sends it to the source client through t= he + migration region. + + The source client is responsible for sending the migration data to the + destination client. + + A device is resumed on the destination as follows: + + * The destination client transitions the device state from the running s= tate + to the resuming state. The destination server uses the device state da= ta + received through the migration region to resume the device. + + * The destination client provides saved device state to the destination + server and then transitions the device to back to the running state. + +* *reserved* This field is reserved and any access to it must be ignored b= y the + server. + +* *pending_bytes* Remaining bytes to be migrated by the server. This field= is + read only. + +* *data_offset* Offset in the migration region where the client must: + + * read from, during the pre-copy or stop-and-copy state, or + + * write to, during the resuming state. + + This field is read only. + +* *data_size* Contains the size, in bytes, of the amount of data copied to: + + * the source migration region by the source server during the pre-copy or + stop-and copy state, or + + * the destination migration region by the destination client during the + resuming state. + +Device-specific data must be stored at any position after +`struct vfio_device_migration_info`. Note that the migration region can be +memory mappable, even partially. In practise, only the migration data port= ion +can be memory mapped. + +The client processes device state data during the pre-copy and the +stop-and-copy state in the following iterative manner: + + 1. The client reads `pending_bytes` to mark a new iteration. Repeated re= ads + of this field is an idempotent operation. If there are no migration d= ata + to be consumed then the next step depends on the current device state: + + * pre-copy: the client must try again. + + * stop-and-copy: this procedure can end and the device can now start + resuming on the destination. + + 2. The client reads `data_offset`; at thich point the server must make + available a portion of migration data at this offset to be read by the + client, which must happen *before* completing the read operation. The + amount of data to be read must be stored in the `data_size` field, wh= ich + the client reads next. + + 3. The client reads `data_size` to determine the amount of migration data + available. + + 4. The client reads and processes the migration data. + + 5. Go to step 1. + +Note that the client can transition the device from the pre-copy state to = the +stop-and-copy state at any time; `pending_bytes` does not need to become z= ero. + +The client initializes the device state on the destination by setting the +device state in the resuming state and writing the migration data to the +destination migration region at `data_offset` offset. The client can write= the +source migration data in an iterative manner and the server must consume t= his +data before completing each write operation, updating the `data_offset` fi= eld. +The server must apply the source migration data on the device resume state= . The +client must write data on the same order and transction size as read. + +If an error occurs then the server must fail the read or write operation. = It is +an implementation detail of the client how to handle errors. + +VFIO_USER_DEVICE_GET_IRQ_INFO +----------------------------- + +Message format +^^^^^^^^^^^^^^ + ++--------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+------------------------+ +| Command | 6 | ++--------------+------------------------+ +| Message size | 32 | ++--------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------+------------------------+ +| Error | 0/errno | ++--------------+------------------------+ +| IRQ info | VFIO IRQ info | ++--------------+------------------------+ + +This command message is sent by the client to the server to query for +information about device interrupt types. The VFIO IRQ info structure is +defined in ```` (``struct vfio_irq_info``). + +VFIO IRQ info format +^^^^^^^^^^^^^^^^^^^^ + ++-------+--------+---------------------------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| argsz | 16 | 4 | ++-------+--------+---------------------------+ +| flags | 20 | 4 | ++-------+--------+---------------------------+ +| | +-----+--------------------------+ | +| | | Bit | Definition | | +| | +=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ | +| | | 0 | VFIO_IRQ_INFO_EVENTFD | | +| | +-----+--------------------------+ | +| | | 1 | VFIO_IRQ_INFO_MASKABLE | | +| | +-----+--------------------------+ | +| | | 2 | VFIO_IRQ_INFO_AUTOMASKED | | +| | +-----+--------------------------+ | +| | | 3 | VFIO_IRQ_INFO_NORESIZE | | +| | +-----+--------------------------+ | ++-------+--------+---------------------------+ +| index | 24 | 4 | ++-------+--------+---------------------------+ +| count | 28 | 4 | ++-------+--------+---------------------------+ + +* *argsz* is the size of the VFIO IRQ info structure. +* *flags* defines IRQ attributes: + + * *VFIO_IRQ_INFO_EVENTFD* indicates the IRQ type can support server even= tfd + signalling. + * *VFIO_IRQ_INFO_MASKABLE* indicates that the IRQ type supports the MASK= and + UNMASK actions in a VFIO_USER_DEVICE_SET_IRQS message. + * *VFIO_IRQ_INFO_AUTOMASKED* indicates the IRQ type masks itself after b= eing + triggered, and the client must send an UNMASK action to receive new + interrupts. + * *VFIO_IRQ_INFO_NORESIZE* indicates VFIO_USER_SET_IRQS operations setup + interrupts as a set, and new sub-indexes cannot be enabled without dis= abling + the entire type. + +* index is the index of IRQ type being queried, it is the only field that = is + required to be set in the command message. +* count describes the number of interrupts of the queried type. + +VFIO_USER_DEVICE_SET_IRQS +------------------------- + +Message format +^^^^^^^^^^^^^^ + ++--------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+------------------------+ +| Command | 7 | ++--------------+------------------------+ +| Message size | 36 + any data | ++--------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------+------------------------+ +| Error | 0/errno | ++--------------+------------------------+ +| IRQ set | VFIO IRQ set | ++--------------+------------------------+ + +This command message is sent by the client to the server to set actions for +device interrupt types. The VFIO IRQ set structure is defined in +```` (``struct vfio_irq_set``). + +VFIO IRQ set format +^^^^^^^^^^^^^^^^^^^ + ++-------+--------+------------------------------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| argsz | 16 | 4 | ++-------+--------+------------------------------+ +| flags | 20 | 4 | ++-------+--------+------------------------------+ +| | +-----+-----------------------------+ | +| | | Bit | Definition | | +| | +=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ | +| | | 0 | VFIO_IRQ_SET_DATA_NONE | | +| | +-----+-----------------------------+ | +| | | 1 | VFIO_IRQ_SET_DATA_BOOL | | +| | +-----+-----------------------------+ | +| | | 2 | VFIO_IRQ_SET_DATA_EVENTFD | | +| | +-----+-----------------------------+ | +| | | 3 | VFIO_IRQ_SET_ACTION_MASK | | +| | +-----+-----------------------------+ | +| | | 4 | VFIO_IRQ_SET_ACTION_UNMASK | | +| | +-----+-----------------------------+ | +| | | 5 | VFIO_IRQ_SET_ACTION_TRIGGER | | +| | +-----+-----------------------------+ | ++-------+--------+------------------------------+ +| index | 24 | 4 | ++-------+--------+------------------------------+ +| start | 28 | 4 | ++-------+--------+------------------------------+ +| count | 32 | 4 | ++-------+--------+------------------------------+ +| data | 36 | variable | ++-------+--------+------------------------------+ + +* *argsz* is the size of the VFIO IRQ set structure, including any *data* = field. +* *flags* defines the action performed on the interrupt range. The DATA fl= ags + describe the data field sent in the message; the ACTION flags describe t= he + action to be performed. The flags are mutually exclusive for both sets. + + * *VFIO_IRQ_SET_DATA_NONE* indicates there is no data field in the comma= nd. + The action is performed unconditionally. + * *VFIO_IRQ_SET_DATA_BOOL* indicates the data field is an array of boole= an + bytes. The action is performed if the corresponding boolean is true. + * *VFIO_IRQ_SET_DATA_EVENTFD* indicates an array of event file descripto= rs + was sent in the message meta-data. These descriptors will be signalled= when + the action defined by the action flags occurs. In AF_UNIX sockets, the + descriptors are sent as SCM_RIGHTS type ancillary data. + * *VFIO_IRQ_SET_ACTION_MASK* indicates a masking event. It can be used w= ith + VFIO_IRQ_SET_DATA_BOOL or VFIO_IRQ_SET_DATA_NONE to mask an interrupt,= or + with VFIO_IRQ_SET_DATA_EVENTFD to generate an event when the guest mas= ks + the interrupt. + * *VFIO_IRQ_SET_ACTION_UNMASK* indicates an unmasking event. It can be u= sed + with VFIO_IRQ_SET_DATA_BOOL or VFIO_IRQ_SET_DATA_NONE to unmask an + interrupt, or with VFIO_IRQ_SET_DATA_EVENTFD to generate an event when= the + guest unmasks the interrupt. + * *VFIO_IRQ_SET_ACTION_TRIGGER* indicates a triggering event. It can be = used + with VFIO_IRQ_SET_DATA_BOOL or VFIO_IRQ_SET_DATA_NONE to trigger an + interrupt, or with VFIO_IRQ_SET_DATA_EVENTFD to generate an event when= the + server triggers the interrupt. + +* *index* is the index of IRQ type being setup. +* *start* is the start of the sub-index being set. +* *count* describes the number of sub-indexes being set. As a special case= , a + count of 0 with data flags of VFIO_IRQ_SET_DATA_NONE disables all interr= upts + of the index. +* *data* is an optional field included when the + VFIO_IRQ_SET_DATA_BOOL flag is present. It contains an array of booleans + that specify whether the action is to be performed on the corresponding + index. It's used when the action is only performed on a subset of the ra= nge + specified. + +Not all interrupt types support every combination of data and action flags. +The client must know the capabilities of the device and IRQ index before it +sends a VFIO_USER_DEVICE_SET_IRQ message. + +.. _Read and Write Operations: + +Read and Write Operations +------------------------- + +Not all I/O operations between the client and server can be done via direct +access of memory mapped with an mmap() call. In these cases, the client and +server use messages sent over the socket. It is expected that these operat= ions +will have lower performance than direct access. + +The client can access server memory with VFIO_USER_REGION_READ and +VFIO_USER_REGION_WRITE commands. These share a common data structure that +appears after the message header. + +REGION Read/Write Data +^^^^^^^^^^^^^^^^^^^^^^ + ++--------+--------+----------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D+ +| Offset | 16 | 8 | ++--------+--------+----------+ +| Region | 24 | 4 | ++--------+--------+----------+ +| Count | 28 | 4 | ++--------+--------+----------+ +| Data | 32 | variable | ++--------+--------+----------+ + +* *Offset* into the region being accessed. +* *Region* is the index of the region being accessed. +* *Count* is the size of the data to be transferred. +* *Data* is the data to be read or written. + +The server can access client memory with VFIO_USER_DMA_READ and +VFIO_USER_DMA_WRITE messages. These also share a common data structure that +appears after the message header. + +DMA Read/Write Data +^^^^^^^^^^^^^^^^^^^ + ++---------+--------+----------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D+ +| Address | 16 | 8 | ++---------+--------+----------+ +| Count | 24 | 4 | ++---------+--------+----------+ +| Data | 28 | variable | ++---------+--------+----------+ + +* *Address* is the area of client memory being accessed. This address must= have + been previously exported to the server with a VFIO_USER_DMA_MAP message. +* *Count* is the size of the data to be transferred. +* *Data* is the data to be read or written. + +VFIO_USER_REGION_READ +--------------------- + +Message format +^^^^^^^^^^^^^^ + ++--------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+------------------------+ +| Command | 8 | ++--------------+------------------------+ +| Message size | 32 + data size | ++--------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------+------------------------+ +| Error | 0/errno | ++--------------+------------------------+ +| Read info | REGION read/write data | ++--------------+------------------------+ + +This command message is sent from the client to the server to read from se= rver +memory. In the command messages, there is no data, and the count is the a= mount +of data to be read. The reply message must include the data read, and its = count +field is the amount of data read. + +VFIO_USER_REGION_WRITE +---------------------- + +Message format +^^^^^^^^^^^^^^ + ++--------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+------------------------+ +| Command | 9 | ++--------------+------------------------+ +| Message size | 32 + data size | ++--------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------+------------------------+ +| Error | 0/errno | ++--------------+------------------------+ +| Write info | REGION read/write data | ++--------------+------------------------+ + +This command message is sent from the client to the server to write to ser= ver +memory. The command message must contain the data to be written, and its = count +field must contain the amount of write data. The count field in the reply +message must be zero. + +VFIO_USER_DMA_READ +------------------ + +Message format +^^^^^^^^^^^^^^ + ++--------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+------------------------+ +| Command | 10 | ++--------------+------------------------+ +| Message size | 28 + data size | ++--------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------+------------------------+ +| Error | 0/errno | ++--------------+------------------------+ +| DMA info | DMA read/write data | ++--------------+------------------------+ + +This command message is sent from the server to the client to read from cl= ient +memory. In the command message, there is no data, and the count must will= be +the amount of data to be read. The reply message must include the data rea= d, +and its count field must be the amount of data read. + +VFIO_USER_DMA_WRITE +------------------- + +Message format +^^^^^^^^^^^^^^ + ++--------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+------------------------+ +| Command | 11 | ++--------------+------------------------+ +| Message size | 28 + data size | ++--------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------+------------------------+ +| Error | 0/errno | ++--------------+------------------------+ +| DMA info | DMA read/write data | ++--------------+------------------------+ + +This command message is sent from the server to the client to write to cli= ent +memory. The command message must contain the data to be written, and its = count +field must contain the amount of write data. The count field in the reply +message must be zero. + +VFIO_USER_VM_INTERRUPT +---------------------- + +Message format +^^^^^^^^^^^^^^ + ++----------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++----------------+------------------------+ +| Command | 12 | ++----------------+------------------------+ +| Message size | 20 | ++----------------+------------------------+ +| Flags | Reply bit set in reply | ++----------------+------------------------+ +| Error | 0/errno | ++----------------+------------------------+ +| Interrupt info | | ++----------------+------------------------+ + +This command message is sent from the server to the client to signal the d= evice +has raised an interrupt. + +Interrupt info format +^^^^^^^^^^^^^^^^^^^^^ + ++-----------+--------+------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D= =3D=3D+ +| Sub-index | 16 | 4 | ++-----------+--------+------+ + +* *Sub-index* is relative to the IRQ index, e.g., the vector number used i= n PCI + MSI/X type interrupts. + +VFIO_USER_DEVICE_RESET +---------------------- + +Message format +^^^^^^^^^^^^^^ + ++--------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------+------------------------+ +| Command | 13 | ++--------------+------------------------+ +| Message size | 16 | ++--------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------+------------------------+ +| Error | 0/errno | ++--------------+------------------------+ + +This command message is sent from the client to the server to reset the de= vice. + +VFIO_USER_DIRTY_PAGES +--------------------- + +Message format +^^^^^^^^^^^^^^ + ++--------------------+------------------------+ +| Name | Value | ++=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ +| Message ID | | ++--------------------+------------------------+ +| Command | 14 | ++--------------------+------------------------+ +| Message size | 16 | ++--------------------+------------------------+ +| Flags | Reply bit set in reply | ++--------------------+------------------------+ +| Error | 0/errno | ++--------------------+------------------------+ +| VFIO Dirty bitmap | | ++--------------------+------------------------+ + +This command is analogous to VFIO_IOMMU_DIRTY_PAGES. It is sent by the cli= ent +to the server in order to control logging of dirty pages, usually during a= live +migration. The VFIO dirty bitmap structure is defined in ```` +(``struct vfio_iommu_type1_dirty_bitmap``). + +VFIO Dirty Bitmap Format +^^^^^^^^^^^^^^^^^^^^^^^^ + ++-------+--------+-----------------------------------------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D+ +| argsz | 0 | 4 | ++-------+--------+-----------------------------------------+ +| flags | 4 | 4 | ++-------+--------+-----------------------------------------+ +| | +-----+----------------------------------------+ | +| | | Bit | Definition | | +| | +=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= + | +| | | 0 | VFIO_IOMMU_DIRTY_PAGES_FLAG_START | | +| | +-----+----------------------------------------+ | +| | | 1 | VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP | | +| | +-----+----------------------------------------+ | +| | | 2 | VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP | | +| | +-----+----------------------------------------+ | ++-------+--------+-----------------------------------------+ +| data | 8 | 4 | ++-------+--------+-----------------------------------------+ + +* *argsz* is the size of the VFIO dirty bitmap info structure. + +* *flags* defines the action to be performed by the server: + + * *VFIO_IOMMU_DIRTY_PAGES_FLAG_START* instructs the server to start logg= ing + pages it dirties. Logging continues until explicitly disabled by + VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP. + + * *VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP* instructs the server to stop logging + dirty pages. + + * *VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP* requests from the server to r= eturn + the dirty bitmap for a specific IOVA range. The IOVA range is specifie= d by + "VFIO dirty bitmap get" structure, which must immediatelly follow the + "VFIO dirty bitmap" structure, explained next. This operation is only = valid + if logging of dirty pages has been previously started. The server must + respond the same way it does for VFIO_USER_DMA_UNMAP (the dirty pages + bitmap must follow the response header). + + These flags are mutually exclusive with each other. + +* *data* This field is unused in vfio-user. + +VFIO Dirty Bitmap Get Format +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++--------+--------+------+ +| Name | Offset | Size | ++=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D=3D=3D=3D=3D+ +| iova | 0 | 8 | ++--------+--------+------+ +| size | 8 | 8 | ++--------+--------+------+ +| bitmap | 16 | 24 | ++--------+--------+------+ + +* *iova* is the IOVA offset + +* *size* is the size of the IOVA region + +* *bitmap* is the VFIO bitmap (``struct vfio_bitmap``), with the same sema= ntics + as VFIO_USER_DMA_UNMAP. + + +Appendices +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Unused VFIO ioctl() commands +---------------------------- + +The following VFIO commands do not have an equivalent vfio-user command: + +* VFIO_GET_API_VERSION +* VFIO_CHECK_EXTENSION +* VFIO_SET_IOMMU +* VFIO_GROUP_GET_STATUS +* VFIO_GROUP_SET_CONTAINER +* VFIO_GROUP_UNSET_CONTAINER +* VFIO_GROUP_GET_DEVICE_FD +* VFIO_IOMMU_GET_INFO + +However, once support for live migration for VFIO devices is finalized some +of the above commands may have to be handled by the client in their +corresponding vfio-user form. This will be addressed in a future protocol +version. + +VFIO groups and containers +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The current VFIO implementation includes group and container idioms that +describe how a device relates to the host IOMMU. In the vfio-user +implementation, the IOMMU is implemented in SW by the client, and is not +visible to the server. The simplest idea would be that the client put each +device into its own group and container. + +Backend Program Conventions +--------------------------- + +vfio-user backend program conventions are based on the vhost-user ones. + +* The backend program must not daemonize itself. +* No assumptions must be made as to what access the backend program has on= the + system. +* File descriptors 0, 1 and 2 must exist, must have regular + stdin/stdout/stderr semantics, and can be redirected. +* The backend program must honor the SIGTERM signal. +* The backend program must accept the following commands line options: + + * ``--socket-path=3DPATH``: path to UNIX domain socket, + * ``--fd=3DFDNUM``: file descriptor for UNIX domain socket, incompatible= with + ``--socket-path`` +* The backend program must be accompanied with a JSON file stored under + ``/usr/share/vfio-user``. -- 2.12.2 Is there a schema for it? (similar to docs/interop/vhost-user.json). If it'= s left for later, then a TODO note should be left. Not yet, that=E2=80=99s a good suggestion. -- Marc-Andr=C3=A9 Lureau --_000_MW2PR02MB3723FB7118FC68E96C59E75B8BF40MW2PR02MB3723namp_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IlByb2dJZCIg Y29udGVudD0iV29yZC5Eb2N1bWVudCI+DQo8bWV0YSBuYW1lPSJHZW5lcmF0b3IiIGNvbnRlbnQ9 Ik1pY3Jvc29mdCBXb3JkIDE1Ij4NCjxtZXRhIG5hbWU9Ik9yaWdpbmF0b3IiIGNvbnRlbnQ9Ik1p Y3Jvc29mdCBXb3JkIDE1Ij4NCjxsaW5rIHJlbD0iRmlsZS1MaXN0IiBocmVmPSJjaWQ6ZmlsZWxp c3QueG1sQDAxRDZDN0Q3LjA5REUwNjkwIj48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOk9m ZmljZURvY3VtZW50U2V0dGluZ3M+DQo8bzpBbGxvd1BORy8+DQo8bzpEb05vdFJlbHlPbkNTUy8+ DQo8L286T2ZmaWNlRG9jdW1lbnRTZXR0aW5ncz4NCjwveG1sPjwhW2VuZGlmXS0tPjwhLS1baWYg Z3RlIG1zbyA5XT48eG1sPg0KPHc6V29yZERvY3VtZW50Pg0KPHc6U3BlbGxpbmdTdGF0ZT5DbGVh bjwvdzpTcGVsbGluZ1N0YXRlPg0KPHc6R3JhbW1hclN0YXRlPkNsZWFuPC93OkdyYW1tYXJTdGF0 ZT4NCjx3OkRvY3VtZW50S2luZD5Eb2N1bWVudEVtYWlsPC93OkRvY3VtZW50S2luZD4NCjx3OlRy YWNrTW92ZXMvPg0KPHc6VHJhY2tGb3JtYXR0aW5nLz4NCjx3OkVudmVsb3BlVmlzLz4NCjx3OlZh bGlkYXRlQWdhaW5zdFNjaGVtYXMvPg0KPHc6U2F2ZUlmWE1MSW52YWxpZD5mYWxzZTwvdzpTYXZl SWZYTUxJbnZhbGlkPg0KPHc6SWdub3JlTWl4ZWRDb250ZW50PmZhbHNlPC93Oklnbm9yZU1peGVk Q29udGVudD4NCjx3OkFsd2F5c1Nob3dQbGFjZWhvbGRlclRleHQ+ZmFsc2U8L3c6QWx3YXlzU2hv d1BsYWNlaG9sZGVyVGV4dD4NCjx3OkRvTm90UHJvbW90ZVFGLz4NCjx3OkxpZFRoZW1lT3RoZXI+ RU4tVVM8L3c6TGlkVGhlbWVPdGhlcj4NCjx3OkxpZFRoZW1lQXNpYW4+WC1OT05FPC93OkxpZFRo ZW1lQXNpYW4+DQo8dzpMaWRUaGVtZUNvbXBsZXhTY3JpcHQ+WC1OT05FPC93OkxpZFRoZW1lQ29t cGxleFNjcmlwdD4NCjx3OkNvbXBhdGliaWxpdHk+DQo8dzpEb05vdEV4cGFuZFNoaWZ0UmV0dXJu Lz4NCjx3OkJyZWFrV3JhcHBlZFRhYmxlcy8+DQo8dzpTbmFwVG9HcmlkSW5DZWxsLz4NCjx3Oldy YXBUZXh0V2l0aFB1bmN0Lz4NCjx3OlVzZUFzaWFuQnJlYWtSdWxlcy8+DQo8dzpEb250R3Jvd0F1 dG9maXQvPg0KPHc6U3BsaXRQZ0JyZWFrQW5kUGFyYU1hcmsvPg0KPHc6RW5hYmxlT3BlblR5cGVL ZXJuaW5nLz4NCjx3OkRvbnRGbGlwTWlycm9ySW5kZW50cy8+DQo8dzpPdmVycmlkZVRhYmxlU3R5 bGVIcHMvPg0KPC93OkNvbXBhdGliaWxpdHk+DQo8bTptYXRoUHI+DQo8bTptYXRoRm9udCBtOnZh bD0iQ2FtYnJpYSBNYXRoIi8+DQo8bTpicmtCaW4gbTp2YWw9ImJlZm9yZSIvPg0KPG06YnJrQmlu U3ViIG06dmFsPSImIzQ1Oy0iLz4NCjxtOnNtYWxsRnJhYyBtOnZhbD0ib2ZmIi8+DQo8bTpkaXNw RGVmLz4NCjxtOmxNYXJnaW4gbTp2YWw9IjAiLz4NCjxtOnJNYXJnaW4gbTp2YWw9IjAiLz4NCjxt OmRlZkpjIG06dmFsPSJjZW50ZXJHcm91cCIvPg0KPG06d3JhcEluZGVudCBtOnZhbD0iMTQ0MCIv Pg0KPG06aW50TGltIG06dmFsPSJzdWJTdXAiLz4NCjxtOm5hcnlMaW0gbTp2YWw9InVuZE92ciIv Pg0KPC9tOm1hdGhQcj48L3c6V29yZERvY3VtZW50Pg0KPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtp ZiBndGUgbXNvIDldPjx4bWw+DQo8dzpMYXRlbnRTdHlsZXMgRGVmTG9ja2VkU3RhdGU9ImZhbHNl IiBEZWZVbmhpZGVXaGVuVXNlZD0iZmFsc2UiIERlZlNlbWlIaWRkZW49ImZhbHNlIiBEZWZRRm9y bWF0PSJmYWxzZSIgRGVmUHJpb3JpdHk9Ijk5IiBMYXRlbnRTdHlsZUNvdW50PSIzNzYiPg0KPHc6 THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIwIiBRRm9ybWF0PSJ0cnVlIiBO YW1lPSJOb3JtYWwiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i OSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j a2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2Vk PSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDIiLz4NCjx3OkxzZEV4Y2VwdGlv biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hl blVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMyIvPg0KPHc6THNkRXhj ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhp ZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA0Ii8+DQo8dzpM c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUi IFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDUiLz4N Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0i dHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcg NiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlk ZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVh ZGluZyA3Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNl bWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1l PSJoZWFkaW5nIDgiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i OSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUi IE5hbWU9ImhlYWRpbmcgOSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJpbmRleCAxIi8+DQo8dzpM c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVz ZWQ9InRydWUiIE5hbWU9ImluZGV4IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iaW5kZXggMyIv Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlk ZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJpbmRleCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk PSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Imlu ZGV4IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVl IiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iaW5kZXggNiIvPg0KPHc6THNkRXhjZXB0aW9u IExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBO YW1lPSJpbmRleCA3Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRl bj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9ImluZGV4IDgiLz4NCjx3OkxzZEV4 Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0i dHJ1ZSIgTmFtZT0iaW5kZXggOSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy aW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9 InRvYyAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBT ZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDIiLz4NCjx3 OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRy dWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgMyIvPg0KPHc6THNkRXhjZXB0aW9u IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hl blVzZWQ9InRydWUiIE5hbWU9InRvYyA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz ZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIg TmFtZT0idG9jIDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i MzkiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNiIv Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRl bj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA3Ii8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhp ZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDgiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9 ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0 cnVlIiBOYW1lPSJ0b2MgOSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJOb3JtYWwgSW5kZW50Ii8+ DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRl V2hlblVzZWQ9InRydWUiIE5hbWU9ImZvb3Rub3RlIHRleHQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM b2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFt ZT0iYW5ub3RhdGlvbiB0ZXh0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2Vt aUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9ImhlYWRlciIvPg0KPHc6 THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5V c2VkPSJ0cnVlIiBOYW1lPSJmb290ZXIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iaW5kZXggaGVh ZGluZyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNSIgU2Vt aUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9 ImNhcHRpb24iLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0 cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idGFibGUgb2YgZmlndXJlcyIvPg0KPHc6 THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5V c2VkPSJ0cnVlIiBOYW1lPSJlbnZlbG9wZSBhZGRyZXNzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j a2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9 ImVudmVsb3BlIHJldHVybiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJmb290bm90ZSByZWZlcmVu Y2UiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iYW5ub3RhdGlvbiByZWZlcmVuY2UiLz4NCjx3Okxz ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl ZD0idHJ1ZSIgTmFtZT0ibGluZSBudW1iZXIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0icGFnZSBu dW1iZXIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVl IiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iZW5kbm90ZSByZWZlcmVuY2UiLz4NCjx3Okxz ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl ZD0idHJ1ZSIgTmFtZT0iZW5kbm90ZSB0ZXh0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm YWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRhYmxl IG9mIGF1dGhvcml0aWVzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhp ZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Im1hY3JvIi8+DQo8dzpMc2RF eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9 InRydWUiIE5hbWU9InRvYSBoZWFkaW5nIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz ZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Ikxpc3QiLz4N Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVX aGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCBCdWxsZXQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0i TGlzdCBOdW1iZXIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVu PSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCAyIi8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRy dWUiIE5hbWU9Ikxpc3QgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJMaXN0IDQiLz4NCjx3Okxz ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl ZD0idHJ1ZSIgTmFtZT0iTGlzdCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Ikxpc3QgQnVsbGV0 IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCBCdWxsZXQgMyIvPg0KPHc6THNkRXhjZXB0 aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVl IiBOYW1lPSJMaXN0IEJ1bGxldCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Ikxpc3QgQnVsbGV0 IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCBOdW1iZXIgMiIvPg0KPHc6THNkRXhjZXB0 aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVl IiBOYW1lPSJMaXN0IE51bWJlciAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Ikxpc3QgTnVtYmVy IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCBOdW1iZXIgNSIvPg0KPHc6THNkRXhjZXB0 aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxMCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iVGl0 bGUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iQ2xvc2luZyIvPg0KPHc6THNkRXhjZXB0aW9uIExv Y2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1l PSJTaWduYXR1cmUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i MSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkRlZmF1bHQg UGFyYWdyYXBoIEZvbnQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlk ZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iQm9keSBUZXh0Ii8+DQo8dzpM c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVz ZWQ9InRydWUiIE5hbWU9IkJvZHkgVGV4dCBJbmRlbnQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0i TGlzdCBDb250aW51ZSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRk ZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJMaXN0IENvbnRpbnVlIDIiLz4N Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVX aGVuVXNlZD0idHJ1ZSIgTmFtZT0iTGlzdCBDb250aW51ZSAzIi8+DQo8dzpMc2RFeGNlcHRpb24g TG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5h bWU9Ikxpc3QgQ29udGludWUgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNl bWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJMaXN0IENvbnRpbnVl IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iTWVzc2FnZSBIZWFkZXIiLz4NCjx3OkxzZEV4Y2Vw dGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMTEiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlN1 YnRpdGxlIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1 ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlNhbHV0YXRpb24iLz4NCjx3OkxzZEV4Y2Vw dGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1 ZSIgTmFtZT0iRGF0ZSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRk ZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJCb2R5IFRleHQgRmlyc3QgSW5k ZW50Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIg VW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkJvZHkgVGV4dCBGaXJzdCBJbmRlbnQgMiIvPg0K PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdo ZW5Vc2VkPSJ0cnVlIiBOYW1lPSJOb3RlIEhlYWRpbmciLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0i Qm9keSBUZXh0IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVu PSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iQm9keSBUZXh0IDMiLz4NCjx3Okxz ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl ZD0idHJ1ZSIgTmFtZT0iQm9keSBUZXh0IEluZGVudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j a2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9 IkJvZHkgVGV4dCBJbmRlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNl bWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJCbG9jayBUZXh0Ii8+ DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRl V2hlblVzZWQ9InRydWUiIE5hbWU9Ikh5cGVybGluayIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tl ZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJG b2xsb3dlZEh5cGVybGluayIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y aXR5PSIyMiIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iU3Ryb25nIi8+DQo8dzpMc2RFeGNlcHRpb24g TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIwIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJFbXBoYXNp cyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVu aGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJEb2N1bWVudCBNYXAiLz4NCjx3OkxzZEV4Y2VwdGlv biBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIg TmFtZT0iUGxhaW4gVGV4dCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJFLW1haWwgU2lnbmF0dXJl Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5o aWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkhUTUwgVG9wIG9mIEZvcm0iLz4NCjx3OkxzZEV4Y2Vw dGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1 ZSIgTmFtZT0iSFRNTCBCb3R0b20gb2YgRm9ybSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i ZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJOb3Jt YWwgKFdlYikiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0 cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iSFRNTCBBY3JvbnltIi8+DQo8dzpMc2RF eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9 InRydWUiIE5hbWU9IkhUTUwgQWRkcmVzcyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs c2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJIVE1MIENp dGUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iSFRNTCBDb2RlIi8+DQo8dzpMc2RFeGNlcHRpb24g TG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5h bWU9IkhUTUwgRGVmaW5pdGlvbiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNl bWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJIVE1MIEtleWJvYXJk Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5o aWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkhUTUwgUHJlZm9ybWF0dGVkIi8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRy dWUiIE5hbWU9IkhUTUwgU2FtcGxlIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkhUTUwgVHlwZXdy aXRlciIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUi IFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJIVE1MIFZhcmlhYmxlIi8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRy dWUiIE5hbWU9ImFubm90YXRpb24gc3ViamVjdCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i ZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJObyBM aXN0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIg VW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Ik91dGxpbmUgTGlzdCAxIi8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRy dWUiIE5hbWU9Ik91dGxpbmUgTGlzdCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz ZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9Ik91dGxpbmUg TGlzdCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1 ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIFNpbXBsZSAxIi8+DQo8dzpMc2RF eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9 InRydWUiIE5hbWU9IlRhYmxlIFNpbXBsZSAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm YWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxl IFNpbXBsZSAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0i dHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIENsYXNzaWMgMSIvPg0KPHc6 THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5V c2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBDbGFzc2ljIDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0i VGFibGUgQ2xhc3NpYyAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhp ZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIENsYXNzaWMgNCIv Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlk ZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBDb2xvcmZ1bCAxIi8+DQo8dzpMc2RFeGNlcHRp b24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUi IE5hbWU9IlRhYmxlIENvbG9yZnVsIDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgQ29s b3JmdWwgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRy dWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBDb2x1bW5zIDEiLz4NCjx3Okxz ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl ZD0idHJ1ZSIgTmFtZT0iVGFibGUgQ29sdW1ucyAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk PSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRh YmxlIENvbHVtbnMgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRk ZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBDb2x1bW5zIDQiLz4N Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVX aGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgQ29sdW1ucyA1Ii8+DQo8dzpMc2RFeGNlcHRpb24g TG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5h bWU9IlRhYmxlIEdyaWQgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBHcmlkIDIiLz4N Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVX aGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgR3JpZCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j a2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9 IlRhYmxlIEdyaWQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRk ZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBHcmlkIDUiLz4NCjx3 OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVu VXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgR3JpZCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk PSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRh YmxlIEdyaWQgNyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49 InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBHcmlkIDgiLz4NCjx3Okxz ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl ZD0idHJ1ZSIgTmFtZT0iVGFibGUgTGlzdCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm YWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxl IExpc3QgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRy dWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBMaXN0IDMiLz4NCjx3OkxzZEV4 Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0i dHJ1ZSIgTmFtZT0iVGFibGUgTGlzdCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz ZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIExp c3QgNSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUi IFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBMaXN0IDYiLz4NCjx3OkxzZEV4Y2Vw dGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1 ZSIgTmFtZT0iVGFibGUgTGlzdCA3Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg U2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRhYmxlIExpc3Qg OCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVu aGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSAzRCBlZmZlY3RzIDEiLz4NCjx3OkxzZEV4 Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0i dHJ1ZSIgTmFtZT0iVGFibGUgM0QgZWZmZWN0cyAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk PSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IlRh YmxlIDNEIGVmZmVjdHMgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlI aWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJUYWJsZSBDb250ZW1wb3Jh cnkiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBV bmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgRWxlZ2FudCIvPg0KPHc6THNkRXhjZXB0 aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVl IiBOYW1lPSJUYWJsZSBQcm9mZXNzaW9uYWwiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUg U3VidGxlIDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0 cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUgU3VidGxlIDIiLz4NCjx3Okxz ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNl ZD0idHJ1ZSIgTmFtZT0iVGFibGUgV2ViIDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iVGFibGUg V2ViIDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVl IiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iQmFsbG9vbiBUZXh0Ii8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBOYW1lPSJUYWJsZSBHcmlkIi8+DQo8 dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgTmFtZT0iUGxh Y2Vob2xkZXIgVGV4dCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5 PSIxIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJObyBTcGFjaW5nIi8+DQo8dzpMc2RFeGNlcHRpb24g TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIi8+DQo8dzpM c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0 Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJM aWdodCBHcmlkIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYz IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz ZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIi8+DQo8dzpMc2RFeGNlcHRp b24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIi8+DQo8 dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0g TGlzdCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBO YW1lPSJNZWRpdW0gR3JpZCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp b3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk PSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIi8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QiLz4NCjx3 OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVs IFNoYWRpbmciLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIi IE5hbWU9IkNvbG9yZnVsIExpc3QiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQ cmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDEiLz4N Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0 IExpc3QgQWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0 eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDEi Lz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1l ZGl1bSBTaGFkaW5nIDIgQWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl IiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDEiLz4NCjx3OkxzZEV4 Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBOYW1lPSJSZXZpc2lvbiIv Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNCIgUUZvcm1hdD0i dHJ1ZSIgTmFtZT0iTGlzdCBQYXJhZ3JhcGgiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBQcmlvcml0eT0iMjkiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlF1b3RlIi8+DQo8dzpMc2RF eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMwIiBRRm9ybWF0PSJ0cnVlIiBOYW1l PSJJbnRlbnNlIFF1b3RlIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3Jp dHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCAxIi8+DQo8dzpMc2RFeGNlcHRpb24g TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAx Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJN ZWRpdW0gR3JpZCAyIEFjY2VudCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg UHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCAxIi8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50 IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9 IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDEiLz4NCjx3Okxz ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdy aWQgQWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i NjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDIiLz4NCjx3 OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdy aWQgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i NjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50 IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9 Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl IiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIgQWNjZW50IDIiLz4NCjx3OkxzZEV4 Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEg QWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgi IE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9 ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMgQWNjZW50IDIiLz4NCjx3 OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlz dCBBY2NlbnQgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3 MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExv Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCBBY2NlbnQgMiIv Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29s b3JmdWwgR3JpZCBBY2NlbnQgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy aW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0 aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQg MyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0i TGlnaHQgR3JpZCBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy aW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMyIvPg0KPHc6THNkRXhj ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcg MiBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2 NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tl ZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMyIvPg0K PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVt IEdyaWQgMSBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y aXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9u IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQg MyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0i RGFyayBMaXN0IEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp b3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCAzIi8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFj Y2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBO YW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm YWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCA0Ii8+DQo8dzpM c2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0 IEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYy IiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm YWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCA0Ii8+DQo8 dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0g U2hhZGluZyAyIEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp b3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRp b24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2Vu dCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1l PSJNZWRpdW0gR3JpZCAxIEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz ZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIEFjY2VudCA0Ii8+DQo8dzpMc2RF eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAz IEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9Ijcw IiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmcgQWNjZW50IDQiLz4NCjx3 OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVs IExpc3QgQWNjZW50IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0 eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDUi Lz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9Ikxp Z2h0IExpc3QgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv cml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50 IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9 Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDUiLz4NCjx3Okxz ZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0 IDIgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i NjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDUiLz4N Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1 bSBHcmlkIDMgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv cml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgNSIvPg0KPHc6THNkRXhjZXB0aW9uIExv Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQg NSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0i Q29sb3JmdWwgTGlzdCBBY2NlbnQgNSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2Ui IFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgNSIvPg0KPHc6THNkRXhj ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBB Y2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIg TmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs c2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgNiIvPg0KPHc6THNkRXhj ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcg MSBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2 NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExv Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgNiIv Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVk aXVtIExpc3QgMiBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy aW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0 aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2Nl bnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFt ZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs c2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0IEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5n IEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9Ijcy IiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk PSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIEFjY2VudCA2Ii8+DQo8 dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjE5IiBRRm9ybWF0PSJ0cnVl IiBOYW1lPSJTdWJ0bGUgRW1waGFzaXMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl IiBQcmlvcml0eT0iMjEiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkludGVuc2UgRW1waGFzaXMiLz4N Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzEiIFFGb3JtYXQ9InRy dWUiIE5hbWU9IlN1YnRsZSBSZWZlcmVuY2UiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBQcmlvcml0eT0iMzIiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkludGVuc2UgUmVmZXJlbmNl Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMzIiBRRm9ybWF0 PSJ0cnVlIiBOYW1lPSJCb29rIFRpdGxlIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz ZSIgUHJpb3JpdHk9IjM3IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIg TmFtZT0iQmlibGlvZ3JhcGh5Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJp b3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1h dD0idHJ1ZSIgTmFtZT0iVE9DIEhlYWRpbmciLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBQcmlvcml0eT0iNDEiIE5hbWU9IlBsYWluIFRhYmxlIDEiLz4NCjx3OkxzZEV4Y2VwdGlv biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDIiIE5hbWU9IlBsYWluIFRhYmxlIDIiLz4NCjx3 OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDMiIE5hbWU9IlBsYWluIFRh YmxlIDMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDQiIE5h bWU9IlBsYWluIFRhYmxlIDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv cml0eT0iNDUiIE5hbWU9IlBsYWluIFRhYmxlIDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9 ImZhbHNlIiBQcmlvcml0eT0iNDAiIE5hbWU9IkdyaWQgVGFibGUgTGlnaHQiLz4NCjx3OkxzZEV4 Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9IkdyaWQgVGFibGUgMSBM aWdodCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFt ZT0iR3JpZCBUYWJsZSAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3Jp dHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCIvPg0KPHc6THNkRXhjZXB0aW9u IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsiLz4N Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiIE5hbWU9IkdyaWQg VGFibGUgNiBDb2xvcmZ1bCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y aXR5PSI1MiIgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIi8+DQo8dzpMc2RFeGNlcHRpb24g TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IiBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNj ZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5h bWU9IkdyaWQgVGFibGUgMiBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs c2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIEFjY2VudCAxIi8+DQo8dzpMc2RF eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQg QWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAi IE5hbWU9IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCAxIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j a2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNj ZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5h bWU9IkdyaWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExv Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NiIgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2Vu dCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1l PSJHcmlkIFRhYmxlIDIgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl IiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMiIvPg0KPHc6THNkRXhj ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFj Y2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBO YW1lPSJHcmlkIFRhYmxlIDUgRGFyayBBY2NlbnQgMiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tl ZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIEFjY2Vu dCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1l PSJHcmlkIFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCBBY2NlbnQg MyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0i R3JpZCBUYWJsZSAyIEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg UHJpb3JpdHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2Vw dGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCBBY2Nl bnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFt ZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9 ImZhbHNlIiBQcmlvcml0eT0iNTEiIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQg MyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0i R3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2Vk PSJmYWxzZSIgUHJpb3JpdHk9IjQ2IiBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDQi Lz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikdy aWQgVGFibGUgMiBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy aW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRp b24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50 IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9 IkdyaWQgVGFibGUgNSBEYXJrIEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJm YWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDQi Lz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9Ikdy aWQgVGFibGUgNyBDb2xvcmZ1bCBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0i ZmFsc2UiIFByaW9yaXR5PSI0NiIgTmFtZT0iR3JpZCBUYWJsZSAxIExpZ2h0IEFjY2VudCA1Ii8+ DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlk IFRhYmxlIDIgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv cml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNSIvPg0KPHc6THNkRXhjZXB0aW9u IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iR3JpZCBUYWJsZSA0IEFjY2VudCA1 Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJH cmlkIFRhYmxlIDUgRGFyayBBY2NlbnQgNSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs c2UiIFByaW9yaXR5PSI1MSIgTmFtZT0iR3JpZCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCA1Ii8+ DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1lPSJHcmlk IFRhYmxlIDcgQ29sb3JmdWwgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZh bHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCBBY2NlbnQgNiIvPg0K PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBU YWJsZSAyIEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3Jp dHk9IjQ4IiBOYW1lPSJHcmlkIFRhYmxlIDMgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCBBY2NlbnQgNiIv Pg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3Jp ZCBUYWJsZSA1IERhcmsgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl IiBQcmlvcml0eT0iNTEiIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNiIvPg0K PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iR3JpZCBU YWJsZSA3IENvbG9yZnVsIEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxz ZSIgUHJpb3JpdHk9IjQ2IiBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQiLz4NCjx3OkxzZEV4Y2Vw dGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiIvPg0K PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBU YWJsZSAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBO YW1lPSJMaXN0IFRhYmxlIDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv cml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9j a2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwiLz4N Cjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9Ikxpc3Qg VGFibGUgNyBDb2xvcmZ1bCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9y aXR5PSI0NiIgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCAxIi8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIgQWNj ZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5h bWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFs c2UiIFByaW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCAxIi8+DQo8dzpMc2RF eGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUg RGFyayBBY2NlbnQgMSIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5 PSI1MSIgTmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCAxIi8+DQo8dzpMc2RFeGNl cHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1lPSJMaXN0IFRhYmxlIDcgQ29s b3JmdWwgQWNjZW50IDEiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0 eT0iNDYiIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCBBY2NlbnQgMiIvPg0KPHc6THNkRXhjZXB0 aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2Vu dCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1l PSJMaXN0IFRhYmxlIDMgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNl IiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCBBY2NlbnQgMiIvPg0KPHc6THNkRXhj ZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERh cmsgQWNjZW50IDIiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0i NTEiIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMiIvPg0KPHc6THNkRXhjZXB0 aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9y ZnVsIEFjY2VudCAyIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9 IjQ2IiBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlv biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQg MyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0i TGlzdCBUYWJsZSAzIEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIg UHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2Vw dGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJr IEFjY2VudCAzIi8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUx IiBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDMiLz4NCjx3OkxzZEV4Y2VwdGlv biBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1 bCBBY2NlbnQgMyIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0 NiIgTmFtZT0iTGlzdCBUYWJsZSAxIExpZ2h0IEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24g TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIgQWNjZW50IDQi Lz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxp c3QgVGFibGUgMyBBY2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFBy aW9yaXR5PSI0OSIgTmFtZT0iTGlzdCBUYWJsZSA0IEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRp b24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayBB Y2NlbnQgNCIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIg TmFtZT0iTGlzdCBUYWJsZSA2IENvbG9yZnVsIEFjY2VudCA0Ii8+DQo8dzpMc2RFeGNlcHRpb24g TG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIiBOYW1lPSJMaXN0IFRhYmxlIDcgQ29sb3JmdWwg QWNjZW50IDQiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYi IE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCBBY2NlbnQgNSIvPg0KPHc6THNkRXhjZXB0aW9uIExv Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA1Ii8+ DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ4IiBOYW1lPSJMaXN0 IFRhYmxlIDMgQWNjZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlv cml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCBBY2NlbnQgNSIvPg0KPHc6THNkRXhjZXB0aW9u IExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNj ZW50IDUiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTEiIE5h bWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNSIvPg0KPHc6THNkRXhjZXB0aW9uIExv Y2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFj Y2VudCA1Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ2IiBO YW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDciIE5hbWU9Ikxpc3QgVGFibGUgMiBBY2NlbnQgNiIvPg0K PHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBU YWJsZSAzIEFjY2VudCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3Jp dHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBM b2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTAiIE5hbWU9Ikxpc3QgVGFibGUgNSBEYXJrIEFjY2Vu dCA2Ii8+DQo8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1l PSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwgQWNjZW50IDYiLz4NCjx3OkxzZEV4Y2VwdGlvbiBMb2Nr ZWQ9ImZhbHNlIiBQcmlvcml0eT0iNTIiIE5hbWU9Ikxpc3QgVGFibGUgNyBDb2xvcmZ1bCBBY2Nl bnQgNiIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUi IFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJNZW50aW9uIi8+DQo8dzpMc2RFeGNlcHRpb24g TG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5h bWU9IlNtYXJ0IEh5cGVybGluayIvPg0KPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNl bWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJIYXNodGFnIi8+DQo8 dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hl blVzZWQ9InRydWUiIE5hbWU9IlVucmVzb2x2ZWQgTWVudGlvbiIvPg0KPHc6THNkRXhjZXB0aW9u IExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBO YW1lPSJTbWFydCBMaW5rIi8+DQo8L3c6TGF0ZW50U3R5bGVzPg0KPC94bWw+PCFbZW5kaWZdLS0+ PHN0eWxlPjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1m YW1pbHk6IkNhbWJyaWEgTWF0aCI7DQoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDsNCglt c28tZm9udC1jaGFyc2V0OjA7DQoJbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6cm9tYW47DQoJbXNv LWZvbnQtcGl0Y2g6dmFyaWFibGU7DQoJbXNvLWZvbnQtc2lnbmF0dXJlOjMgMCAwIDAgMSAwO30N CkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToyIDE1IDUgMiAy IDIgNCAzIDIgNDsNCgltc28tZm9udC1jaGFyc2V0OjA7DQoJbXNvLWdlbmVyaWMtZm9udC1mYW1p bHk6c3dpc3M7DQoJbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7DQoJbXNvLWZvbnQtc2lnbmF0dXJl Oi00Njk3NTAwMTcgLTEwNzM3MzI0ODUgOSAwIDUxMSAwO30NCi8qIFN0eWxlIERlZmluaXRpb25z ICovDQpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsDQoJe21zby1zdHls ZS11bmhpZGU6bm87DQoJbXNvLXN0eWxlLXFmb3JtYXQ6eWVzOw0KCW1zby1zdHlsZS1wYXJlbnQ6 IiI7DQoJbWFyZ2luOjBjbTsNCgltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47DQoJZm9udC1z aXplOjExLjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgltc28tZmFy ZWFzdC1mb250LWZhbWlseTpDYWxpYnJpO30NCmE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsNCgl7 bXNvLXN0eWxlLW5vc2hvdzp5ZXM7DQoJbXNvLXN0eWxlLXByaW9yaXR5Ojk5Ow0KCWNvbG9yOmJs dWU7DQoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsNCgl0ZXh0LXVuZGVybGluZTpzaW5nbGU7 fQ0KYTp2aXNpdGVkLCBzcGFuLk1zb0h5cGVybGlua0ZvbGxvd2VkDQoJe21zby1zdHlsZS1ub3No b3c6eWVzOw0KCW1zby1zdHlsZS1wcmlvcml0eTo5OTsNCgljb2xvcjpwdXJwbGU7DQoJdGV4dC1k ZWNvcmF0aW9uOnVuZGVybGluZTsNCgl0ZXh0LXVuZGVybGluZTpzaW5nbGU7fQ0KcC5tc29ub3Jt YWwwLCBsaS5tc29ub3JtYWwwLCBkaXYubXNvbm9ybWFsMA0KCXttc28tc3R5bGUtbmFtZTptc29u b3JtYWw7DQoJbXNvLXN0eWxlLXVuaGlkZTpubzsNCgltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsN CgltYXJnaW4tcmlnaHQ6MGNtOw0KCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOw0KCW1hcmdp bi1sZWZ0OjBjbTsNCgltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47DQoJZm9udC1zaXplOjEx LjBwdDsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgltc28tZmFyZWFzdC1m b250LWZhbWlseTpDYWxpYnJpO30NCnNwYW4uRW1haWxTdHlsZTE4DQoJe21zby1zdHlsZS10eXBl OnBlcnNvbmFsLXJlcGx5Ow0KCW1zby1zdHlsZS1ub3Nob3c6eWVzOw0KCW1zby1zdHlsZS11bmhp ZGU6bm87DQoJbXNvLWFuc2ktZm9udC1zaXplOjExLjBwdDsNCgltc28tYmlkaS1mb250LXNpemU6 MTEuMHB0Ow0KCWZvbnQtZmFtaWx5OiJDYWxpYnJpIixzYW5zLXNlcmlmOw0KCW1zby1hc2NpaS1m b250LWZhbWlseTpDYWxpYnJpOw0KCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OkNhbGlicmk7DQoJ bXNvLWhhbnNpLWZvbnQtZmFtaWx5OkNhbGlicmk7DQoJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRp bWVzIE5ldyBSb21hbiI7DQoJY29sb3I6d2luZG93dGV4dDt9DQpzcGFuLkdyYW1FDQoJe21zby1z dHlsZS1uYW1lOiIiOw0KCW1zby1ncmFtLWU6eWVzO30NCi5Nc29DaHBEZWZhdWx0DQoJe21zby1z dHlsZS10eXBlOmV4cG9ydC1vbmx5Ow0KCW1zby1kZWZhdWx0LXByb3BzOnllczsNCglmb250LWZh bWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsNCgltc28tYXNjaWktZm9udC1mYW1pbHk6Q2FsaWJy aTsNCgltc28tZmFyZWFzdC1mb250LWZhbWlseTpDYWxpYnJpOw0KCW1zby1oYW5zaS1mb250LWZh bWlseTpDYWxpYnJpOw0KCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30N CkBwYWdlIFdvcmRTZWN0aW9uMQ0KCXtzaXplOjYxMi4wcHQgNzkyLjBwdDsNCgltYXJnaW46NzIu MHB0IDcyLjBwdCA3Mi4wcHQgNzIuMHB0Ow0KCW1zby1oZWFkZXItbWFyZ2luOjM2LjBwdDsNCglt c28tZm9vdGVyLW1hcmdpbjozNi4wcHQ7DQoJbXNvLXBhcGVyLXNvdXJjZTowO30NCmRpdi5Xb3Jk U2VjdGlvbjENCgl7cGFnZTpXb3JkU2VjdGlvbjE7fQ0KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBt c28gMTBdPjxzdHlsZT4vKiBTdHlsZSBEZWZpbml0aW9ucyAqLw0KdGFibGUuTXNvTm9ybWFsVGFi bGUNCgl7bXNvLXN0eWxlLW5hbWU6IlRhYmxlIE5vcm1hbCI7DQoJbXNvLXRzdHlsZS1yb3diYW5k LXNpemU6MDsNCgltc28tdHN0eWxlLWNvbGJhbmQtc2l6ZTowOw0KCW1zby1zdHlsZS1ub3Nob3c6 eWVzOw0KCW1zby1zdHlsZS1wcmlvcml0eTo5OTsNCgltc28tc3R5bGUtcGFyZW50OiIiOw0KCW1z by1wYWRkaW5nLWFsdDowY20gNS40cHQgMGNtIDUuNHB0Ow0KCW1zby1wYXJhLW1hcmdpbjowY207 DQoJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOw0KCWZvbnQtc2l6ZToxMS4wcHQ7DQoJZm9u dC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7DQoJbXNvLWFzY2lpLWZvbnQtZmFtaWx5OkNh bGlicmk7DQoJbXNvLWhhbnNpLWZvbnQtZmFtaWx5OkNhbGlicmk7DQoJbXNvLWJpZGktZm9udC1m YW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQ0KPC9zdHlsZT48IVtlbmRpZl0tLT48IS0tW2lmIGd0 ZSBtc28gOV0+PHhtbD4NCjxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNwaWRtYXg9IjEw MjYiIC8+DQo8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4NCjxvOnNo YXBlbGF5b3V0IHY6ZXh0PSJlZGl0Ij4NCjxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIiAv Pg0KPC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPg0KPC9oZWFkPg0KPGJvZHkgbGFu Zz0iRU4tVVMiIGxpbms9ImJsdWUiIHZsaW5rPSJwdXJwbGUiIHN0eWxlPSJ0YWItaW50ZXJ2YWw6 MzYuMHB0O3dvcmQtd3JhcDpicmVhay13b3JkIj4NCjxkaXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+ DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCBibHVlIDEuNXB0O3Bh ZGRpbmc6MGNtIDBjbSAwY20gNC4wcHQiPg0KPGRpdj4NCjxkaXYgc3R5bGU9ImJvcmRlcjpub25l O2JvcmRlci10b3A6c29saWQgI0UxRTFFMSAxLjBwdDtwYWRkaW5nOjMuMHB0IDBjbSAwY20gMGNt Ij4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmki PjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O21zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiZx dW90O1RpbWVzIE5ldyBSb21hbiZxdW90Oztmb250LXdlaWdodDpib2xkIj5Gcm9tOjwvc3Bhbj48 L2ZvbnQ+PC9iPjxzcGFuIHN0eWxlPSJtc28tZmFyZWFzdC1mb250LWZhbWlseTomcXVvdDtUaW1l cyBOZXcgUm9tYW4mcXVvdDsiPiBNYXJjLUFuZHLDqSBMdXJlYXUgJmx0O21hcmNhbmRyZS5sdXJl YXVAZ21haWwuY29tJmd0Ow0KPGJyPg0KPGI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQi PlNlbnQ6PC9zcGFuPjwvYj4gMDEgRGVjZW1iZXIgMjAyMCAwODozMjxicj4NCjxiPjxzcGFuIHN0 eWxlPSJmb250LXdlaWdodDpib2xkIj5Ubzo8L3NwYW4+PC9iPiBUaGFub3MgTWFrYXRvcyAmbHQ7 dGhhbm9zLm1ha2F0b3NAbnV0YW5peC5jb20mZ3Q7PGJyPg0KPGI+PHNwYW4gc3R5bGU9ImZvbnQt d2VpZ2h0OmJvbGQiPkNjOjwvc3Bhbj48L2I+IFFFTVUgJmx0O3FlbXUtZGV2ZWxAbm9uZ251Lm9y ZyZndDs7IFdhbGtlciwgQmVuamFtaW4gJmx0O2JlbmphbWluLndhbGtlckBpbnRlbC5jb20mZ3Q7 OyBKb2huIEcgSm9obnNvbiAmbHQ7am9obi5nLmpvaG5zb25Ab3JhY2xlLmNvbSZndDs7IFN3YXBu aWwgSW5nbGUgJmx0O3N3YXBuaWwuaW5nbGVAbnV0YW5peC5jb20mZ3Q7OyBNaWNoYWVsIFMgLiBU c2lya2luICZsdDttc3RAcmVkaGF0LmNvbSZndDs7IEphc29uIFdhbmcNCiAmbHQ7amFzb3dhbmdA cmVkaGF0LmNvbSZndDs7IEpvaG4gTGV2b24gJmx0O2xldm9uQG1vdmVtZW50YXJpYW4ub3JnJmd0 OzsgS2lydGkgV2Fua2hlZGUgJmx0O2t3YW5raGVkZUBudmlkaWEuY29tJmd0OzsgR2VyZCBIb2Zm bWFubiAmbHQ7a3JheGVsQHJlZGhhdC5jb20mZ3Q7OyBUaW5hIFpoYW5nICZsdDt0aW5hLnpoYW5n QGludGVsLmNvbSZndDs7IEphZ2FubmF0aGFuIFJhbWFuICZsdDtqYWcucmFtYW5Ab3JhY2xlLmNv bSZndDs7IEhhcnJpcywgSmFtZXMgUiAmbHQ7amFtZXMuci5oYXJyaXNAaW50ZWwuY29tJmd0OzsN CiBFbGVuYSBVZmltdHNldmEgJmx0O2VsZW5hLnVmaW10c2V2YUBvcmFjbGUuY29tJmd0OzsgS2Fu dGggR2hhdHJhanUgJmx0O0thbnRoLkdoYXRyYWp1QG9yYWNsZS5jb20mZ3Q7OyBGZWxpcGUgRnJh bmNpb3NpICZsdDtmZWxpcGVAbnV0YW5peC5jb20mZ3Q7OyBDaHJpc3RvcGhlIGRlIERpbmVjaGlu ICZsdDtjZHVwb250ZEByZWRoYXQuY29tJmd0OzsgWWFuIFpoYW8gJmx0O3lhbi55LnpoYW9AaW50 ZWwuY29tJmd0OzsgS29ucmFkIFJ6ZXN6dXRlayBXaWxrICZsdDtrb25yYWQud2lsa0BvcmFjbGUu Y29tJmd0OzsNCiB5dXZhbGthc2h0YW5AZ21haWwuY29tOyBEci4gRGF2aWQgQWxhbiBHaWxiZXJ0 ICZsdDtkZ2lsYmVydEByZWRoYXQuY29tJmd0OzsgaXNtYWVsQGxpbnV4LmNvbTsgU3RlZmFuIEhh am5vY3ppICZsdDtzdGVmYW5oYUByZWRoYXQuY29tJmd0OzsgTGl1LCBDaGFuZ3BlbmcgJmx0O2No YW5ncGVuZy5saXVAaW50ZWwuY29tJmd0OzsgdG9tYXNzZXR0aS5hbmRyZWFAZ21haWwuY29tOyBD b3JuZWxpYSBIdWNrICZsdDtjb2h1Y2tAcmVkaGF0LmNvbSZndDs7IEFsZXggV2lsbGlhbXNvbiAm bHQ7YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20mZ3Q7Ow0KIFJhcGhhZWwgTm9yd2l0eiAmbHQ7 cmFwaGFlbC5ub3J3aXR6QG51dGFuaXguY29tJmd0OzsgeGl1Y2h1bi5sdUBpbnRlbC5jb207IFBh b2xvIEJvbnppbmkgJmx0O3Bib256aW5pQHJlZGhhdC5jb20mZ3Q7PGJyPg0KPGI+PHNwYW4gc3R5 bGU9ImZvbnQtd2VpZ2h0OmJvbGQiPlN1YmplY3Q6PC9zcGFuPjwvYj4gUmU6IFtQQVRDSCB2N10g aW50cm9kdWNlIHZmaW8tdXNlciBwcm90b2NvbCBzcGVjaWZpY2F0aW9uPG86cD48L286cD48L3Nw YW4+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNpemU9 IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0Ij48bzpwPiZu YnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPGRpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNv Tm9ybWFsIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1z aXplOjExLjBwdCI+SGk8bzpwPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExLjBwdCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvcD4N CjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJp Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdCI+T24gTW9uLCBOb3YgMzAsIDIwMjAgYXQg ODoxNCBQTSBUaGFub3MgTWFrYXRvcyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnRoYW5vcy5tYWthdG9z QG51dGFuaXguY29tIj50aGFub3MubWFrYXRvc0BudXRhbml4LmNvbTwvYT4mZ3Q7IHdyb3RlOjxv OnA+PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJi b3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEuMHB0O21zby1ib3JkZXItbGVm dC1hbHQ6c29saWQgI0NDQ0NDQyAuNzVwdDtwYWRkaW5nOjBjbSAwY20gMGNtIDYuMHB0O21hcmdp bi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowY20iPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5 bGU9Im1hcmdpbi1ib3R0b206MTIuMHB0Ij48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdCI+VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSB2 ZmlvLXVzZXIgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiAoZm9ybWVybHk8YnI+DQprbm93biBhcyBW RklPLW92ZXItc29ja2V0KSwgd2hpY2ggaXMgZGVzaWduZWQgdG8gYWxsb3cgZGV2aWNlcyB0byBi ZTxicj4NCmVtdWxhdGVkIG91dHNpZGUgUUVNVSwgaW4gYSBzZXBhcmF0ZSBwcm9jZXNzLiB2Zmlv LXVzZXIgcmV1c2VzIHRoZTxicj4NCmV4aXN0aW5nIFZGSU8gZGVmaW5lcywgc3RydWN0cyBhbmQg Y29uY2VwdHMuPGJyPg0KPGJyPg0KSXQgaGFzIGJlZW4gZWFybGllciBkaXNjdXNzZWQgYXMgYW4g UkZDIGluOjxicj4NCiZxdW90O1JGQzogdXNlIFZGSU8gb3ZlciBhIFVOSVggZG9tYWluIHNvY2tl dCB0byBpbXBsZW1lbnQgZGV2aWNlIG9mZmxvYWRpbmcmcXVvdDs8YnI+DQo8YnI+DQpTaWduZWQt b2ZmLWJ5OiBKb2huIEcgSm9obnNvbiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmpvaG4uZy5qb2huc29u QG9yYWNsZS5jb20iIHRhcmdldD0iX2JsYW5rIj5qb2huLmcuam9obnNvbkBvcmFjbGUuY29tPC9h PiZndDs8YnI+DQpTaWduZWQtb2ZmLWJ5OiBUaGFub3MgTWFrYXRvcyAmbHQ7PGEgaHJlZj0ibWFp bHRvOnRoYW5vcy5tYWthdG9zQG51dGFuaXguY29tIiB0YXJnZXQ9Il9ibGFuayI+dGhhbm9zLm1h a2F0b3NAbnV0YW5peC5jb208L2E+Jmd0OzxvOnA+PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8 L2Jsb2NrcXVvdGU+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIg ZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQiPjxvOnA+Jm5ic3A7 PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OjExLjBwdCI+SSBhbSB0YWtpbmcgYSBzdXBlcmZpY2lhbCBsb29rLCBhcyBJIGRvbid0IGhhdmUg bXVjaCBleHBlcmllbmNlIGZyb20gaW1wbGVtZW50aW5nIGl0IChyZWNlbnRseSkuPG86cD48L286 cD48L3NwYW4+PC9mb250PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi Pjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEu MHB0Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8YmxvY2tx dW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDtt c28tYm9yZGVyLWxlZnQtYWx0OnNvbGlkICNDQ0NDQ0MgLjc1cHQ7cGFkZGluZzowY20gMGNtIDBj bSA2LjBwdDttYXJnaW4tbGVmdDo0LjhwdDttYXJnaW4tcmlnaHQ6MGNtIj4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250 LXNpemU6MTEuMHB0Ij4tLS08YnI+DQo8YnI+DQpDaGFuZ2VkIHNpbmNlIHYxOjxicj4NCiZuYnNw OyAqIGZpeCBjb2Rpbmcgc3R5bGUgaXNzdWVzPGJyPg0KJm5ic3A7ICogdXBkYXRlIE1BSU5UQUlO RVJTIGZvciBWRklPLW92ZXItc29ja2V0PGJyPg0KJm5ic3A7ICogYWRkIHZmaW8tb3Zlci1zb2Nr ZXQgdG8gVG9DPGJyPg0KPGJyPg0KQ2hhbmdlZCBzaW5jZSB2Mjo8YnI+DQombmJzcDsgKiBmaXgg d2hpdGVzcGFjZTxicj4NCjxicj4NCkNoYW5nZWQgc2luY2UgdjM6PGJyPg0KJm5ic3A7ICogcmVu YW1lIHByb3RvY29sIHRvIHZmaW8tdXNlcjxicj4NCiZuYnNwOyAqIGFkZCB0YWJsZSBvZiBjb250 ZW50czxicj4NCiZuYnNwOyAqIGZpeCBVbmljb2RlIHByb2JsZW1zPGJyPg0KJm5ic3A7ICogZml4 IHR5cG9zIGFuZCB2YXJpb3VzIHJlU3RydWN0dXJlZFRleHQgaXNzdWVzPGJyPg0KJm5ic3A7ICog dmFyaW91cyBzdHlsaXN0aWMgaW1wcm92ZW1lbnRzPGJyPg0KJm5ic3A7ICogYWRkIGJhY2tlbmQg cHJvZ3JhbSBjb252ZW50aW9uczxicj4NCiZuYnNwOyAqIHJld3JpdGUgcGFydCBvZiBpbnRybywg ZHJvcCBRRU1VLXNwZWNpZmljIHN0dWZmPGJyPg0KJm5ic3A7ICogZHJvcCBRRU1VLXNwZWNpZmlj IHBhcmFncmFwaCBhYm91dCBpbXBsZW1lbnRhdGlvbjxicj4NCiZuYnNwOyAqIGV4cGxhaW4gdGhh dCBwYXNzaW5nIG9mIEZEcyBpc24ndCBuZWNlc3Nhcnk8YnI+DQombmJzcDsgKiBtaW5vciBpbXBy b3ZlbWVudHMgaW4gdGhlIFZGSU8gc2VjdGlvbjxicj4NCiZuYnNwOyAqIHZhcmlvdXMgdGV4dCBz dWJzdGl0dXRpb25zIGZvciB0aGUgc2FrZSBvZiBjb25zaXN0ZW5jeTxicj4NCiZuYnNwOyAqIGRy b3AgcGFyYWdyYXBoIGFib3V0IGNsaWVudCBhbmQgc2VydmVyLCBhbHJlYWR5IGV4cGxhaW5lZCBp bjxicj4NCiZuYnNwOyAqIGludHJvPGJyPg0KJm5ic3A7ICogZHJvcCBkZXZpY2UgSUQ8YnI+DQom bmJzcDsgKiBkcm9wIHR5cGUgZnJvbSB2ZXJzaW9uPGJyPg0KJm5ic3A7ICogZWxhYm9yYXRlIG9u IHJlcXVlc3QgY29uY3VycmVuY3k8YnI+DQombmJzcDsgKiBjb252ZXJ0IHNvbWUgaW5lc3NlbnRp YWwgcGFyYWdyYXBocyBpbnRvIG5vdGVzPGJyPg0KJm5ic3A7ICogZXhwbGFpbiB3aHkgc29tZSBl eGlzdGluZyBWRklPIGRlZmluZXMgY2Fubm90IGJlIHJldXNlZDxicj4NCiZuYnNwOyAqIGV4cGxh aW4gaG93IHRvIG1ha2UgY2hhbmdlcyB0byB0aGUgcHJvdG9jb2w8YnI+DQombmJzcDsgKiBpbXBy b3ZlIHRleHQgb2YgRE1BIG1hcDxicj4NCiZuYnNwOyAqIHJld29yZCBjb21tZW50IGFib3V0IGV4 aXN0aW5nIFZGSU8gY29tbWFuZHM8YnI+DQombmJzcDsgKiBhZGQgcmVmZXJlbmNlIHRvIFZlcnNp b24gc2VjdGlvbjxicj4NCiZuYnNwOyAqIHJlc2V0IGRldmljZSBvbiBkaXNjb25uZWN0aW9uPGJy Pg0KJm5ic3A7ICogcmV3b3JkIGxpdmUgbWlncmF0aW9uIHNlY3Rpb248YnI+DQombmJzcDsgKiBy ZXBsYWNlIHN5cy92ZmlvLmggd2l0aCBsaW51eC92ZmlvLmg8YnI+DQombmJzcDsgKiBkcm9wIHJl ZmVyZW5jZSB0byBpb3ZlYzxicj4NCiZuYnNwOyAqIHVzZSBhcmd6IHRoZSBzYW1lIHdheSBpdCBp cyB1c2VkIGluIFZGSU88YnI+DQombmJzcDsgKiBhZGQgdHlwZSBmaWVsZCBpbiBoZWFkZXIgZm9y IGNsYXJpdHk8YnI+DQo8YnI+DQpDaGFuZ2VkIHNpbmNlIHY0Ojxicj4NCiZuYnNwOyAqIGludHJv ZHVjZSBzdXBwb3J0IGZvciBsaXZlIG1pZ3JhdGlvbiBhcyBkZWZpbmVkIGluPGJyPg0KJm5ic3A7 ICogaW5jbHVkZS91YXBpL2xpbnV4L3ZmaW8uaDxicj4NCiZuYnNwOyAqIGludHJvZHVjZSAnbWF4 X2ZkcycgYW5kICdtaWdyYXRpb24nIGNhcGFiaWxpdGllczo8YnI+DQombmJzcDsgKiByZW1vdmUg J2luZGV4JyBmcm9tIFZGSU9fVVNFUl9ERVZJQ0VfR0VUX0lSUV9JTkZPPGJyPg0KJm5ic3A7ICog Zml4IG1pbm9yIHR5cG9zIGFuZCByZXdvcmRlZCBzb21lIHRleHQgZm9yIGNsYXJpdHk8YnI+DQo8 YnI+DQpDaGFuZ2VkIHNpbmNlIHY1Ojxicj4NCiZuYnNwOyAqIGZpeCBtaW5vciB0eXBvczxicj4N CiZuYnNwOyAqIHNlcGFyYXRlIFZGSU9fVVNFUl9ETUFfTUFQIGFuZCBWRklPX1VTRVJfRE1BX1VO TUFQPGJyPg0KJm5ic3A7ICogY2xhcmlmeSBtZWFuaW5nIG9mIFZGSU8gYml0bWFwIHNpemUgZmll bGQ8YnI+DQombmJzcDsgKiBtb3ZlIHZlcnNpb24gbWFqb3IvbWlub3Igb3V0c2lkZSBKU09OPGJy Pg0KJm5ic3A7ICogY2xpZW50IHByb3Bvc2VzIHZlcnNpb24gZmlyc3Q8bzpwPjwvbzpwPjwvc3Bh bj48L2ZvbnQ+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwi Pjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEu MHB0Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQiPldoYXQgd2FzIHRoZSByYXRpb25hbGU/IChTZWUgYmVs b3cpPG86cD48L286cD48L3NwYW4+PC9mb250PjwvcD4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7bXNvLWFzY2lpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWhhbnNpLWZvbnQtZmFt aWx5OkNhbGlicmk7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1 b3Q7Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7bXNvLWFzY2lpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWhhbnNpLWZvbnQtZmFt aWx5OkNhbGlicmk7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1 b3Q7Ij5JdCBmZWx0IG1vcmUgbmF0dXJhbCB0aGlzIHdheSB3aGVuIHdlIGltcGxlbWVudGVkIGl0 LjxvOnA+PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9u dCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtt c28tYXNjaWktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28taGFuc2ktZm9udC1mYW1pbHk6Q2FsaWJy aTttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPjxvOnA+ Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MS4wcHQiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8L2Rpdj4NCjxibG9j a3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEuMHB0 O21zby1ib3JkZXItbGVmdC1hbHQ6c29saWQgI0NDQ0NDQyAuNzVwdDtwYWRkaW5nOjBjbSAwY20g MGNtIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowY20iPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQiPiZuYnNwOyAqIG1ha2UgRXJybm8gb3B0aW9uYWwgaW4gbWVzc2FnZSBo ZWFkZXI8YnI+DQombmJzcDsgKiBjbGFyaWZpY2F0aW9uIGFib3V0IG1lc3NhZ2UgSUQgdW5pcXVl bmVzczxicj4NCiZuYnNwOyAqIGNsYXJpZnkgdGhhdCBzZXJ2ZXItJmd0O2NsaWVudCByZXF1ZXN0 IGNhbiBhcHBlYXIgaW4gYmV0d2Vlbjxicj4NCiZuYnNwOyAmbmJzcDsgY2xpZW50LSZndDtzZXJ2 ZXIgcmVxdWVzdC9yZXBseTxicj4NCjxicj4NCkNoYW5nZWQgc2luY2UgdjY6PGJyPg0KJm5ic3A7 ICogcHV0IEpTT04gc3RyaW5ncyBpbiBkb3VibGUgcXVvdGVzPGJyPg0KJm5ic3A7ICogY2xhcmlm eSByZXBseSBiZWhhdmlvciBvbiBlcnJvcjxicj4NCiZuYnNwOyAqIGludHJvZHVjZSBtYXggbWVz c2FnZSBzaXplIGNhcGFiaWxpdHk8YnI+DQombmJzcDsgKiBjbGFyaWZ5IHNlbWFudGljcyB3aGVu IGZhaWxpbmcgdG8gbWFwIG11bHRpcGxlIERNQSByZWdpb25zIGluIGE8YnI+DQombmJzcDsgJm5i c3A7IHNpbmdsZSBjb21tYW5kPGJyPg0KPGJyPg0KWW91IGNhbiBmb2N1cyBvbiB2NiB0byB2NyBj aGFuZ2VzIGJ5IGNsb25pbmcgbXkgZm9yazxicj4NCig8YSBocmVmPSJodHRwczovL3VybGRlZmVu c2UucHJvb2Zwb2ludC5jb20vdjIvdXJsP3U9aHR0cHMtM0FfX2dpdGh1Yi5jb21fdG1ha2F0b3Nf cWVtdSZhbXA7ZD1Ed01GYVEmYW1wO2M9czg4M0dwVUNPQ2hLT0hpb2NZdEdjZyZhbXA7cj1YVHBZ c2g1UHMyekp2dHc2b2d0dGk0NmF0azczNlNJNHZnc0ppVUtJeURFJmFtcDttPVdYNG5nU3ZuZzRm endjNGNyM3lTRGRYVXFHNEFsYU15ZDF5em4zTDF2bkUmYW1wO3M9Zm5EMWstMEszRjFzYUtZUlFQ NlVnanBjbFNVRkI3Zy10eUNZeUlYTWdfTSZhbXA7ZT0iIHRhcmdldD0iX2JsYW5rIj5odHRwczov L2dpdGh1Yi5jb20vdG1ha2F0b3MvcWVtdQ0KIFtnaXRodWIuY29tXTwvYT4pIGFuZCBkb2luZzo8 YnI+DQo8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgZ2l0IGRpZmYgcmVmcy90YWdz L3ZmaW8tdXNlci92NiByZWZzL2hlYWRzL3ZmaW8tdXNlci92Nzxicj4NCi0tLTxicj4NCiZuYnNw O01BSU5UQUlORVJTJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7IHwmbmJzcDsgJm5ic3A7IDYgKzxicj4NCiZuYnNwO2RvY3MvZGV2ZWwvaW5kZXgucnN0Jm5i c3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAxICs8YnI+DQombmJzcDtkb2NzL2RldmVs L3ZmaW8tdXNlci5yc3QgfCAxNjYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKys8YnI+DQombmJzcDszIGZpbGVzIGNoYW5nZWQsIDE2NjkgaW5zZXJ0aW9ucygr KTxicj4NCiZuYnNwO2NyZWF0ZSBtb2RlIDEwMDY0NCBkb2NzL2RldmVsL3ZmaW8tdXNlci5yc3Q8 YnI+DQo8YnI+DQpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUzxicj4NCmlu ZGV4IDY4YmMxNjBmNDEuLjZhNGM2NjI5NzYgMTAwNjQ0PGJyPg0KLS0tIGEvTUFJTlRBSU5FUlM8 YnI+DQorKysgYi9NQUlOVEFJTkVSUzxicj4NCkBAIC0xNzY2LDYgKzE3NjYsMTIgQEAgRjogaHcv dmZpby9hcC5jPGJyPg0KJm5ic3A7RjogZG9jcy9zeXN0ZW0vczM5MHgvdmZpby1hcC5yc3Q8YnI+ DQombmJzcDtMOiA8YSBocmVmPSJtYWlsdG86cWVtdS1zMzkweEBub25nbnUub3JnIiB0YXJnZXQ9 Il9ibGFuayI+cWVtdS1zMzkweEBub25nbnUub3JnPC9hPjxicj4NCjxicj4NCit2ZmlvLXVzZXI8 YnI+DQorTTogSm9obiBHIEpvaG5zb24gJmx0OzxhIGhyZWY9Im1haWx0bzpqb2huLmcuam9obnNv bkBvcmFjbGUuY29tIiB0YXJnZXQ9Il9ibGFuayI+am9obi5nLmpvaG5zb25Ab3JhY2xlLmNvbTwv YT4mZ3Q7PGJyPg0KK006IFRoYW5vcyBNYWthdG9zICZsdDs8YSBocmVmPSJtYWlsdG86dGhhbm9z Lm1ha2F0b3NAbnV0YW5peC5jb20iIHRhcmdldD0iX2JsYW5rIj50aGFub3MubWFrYXRvc0BudXRh bml4LmNvbTwvYT4mZ3Q7PGJyPg0KK1M6IFN1cHBvcnRlZDxicj4NCitGOiBkb2NzL2RldmVsL3Zm aW8tdXNlci5yc3Q8YnI+DQorPGJyPg0KJm5ic3A7dmhvc3Q8YnI+DQombmJzcDtNOiBNaWNoYWVs IFMuIFRzaXJraW4gJmx0OzxhIGhyZWY9Im1haWx0bzptc3RAcmVkaGF0LmNvbSIgdGFyZ2V0PSJf YmxhbmsiPm1zdEByZWRoYXQuY29tPC9hPiZndDs8YnI+DQombmJzcDtTOiBTdXBwb3J0ZWQ8YnI+ DQpkaWZmIC0tZ2l0IGEvZG9jcy9kZXZlbC9pbmRleC5yc3QgYi9kb2NzL2RldmVsL2luZGV4LnJz dDxicj4NCmluZGV4IGYxMGVkNzdlNGMuLjJlMmNiYTI4YzYgMTAwNjQ0PGJyPg0KLS0tIGEvZG9j cy9kZXZlbC9pbmRleC5yc3Q8YnI+DQorKysgYi9kb2NzL2RldmVsL2luZGV4LnJzdDxicj4NCkBA IC0zNSwzICszNSw0IEBAIENvbnRlbnRzOjxicj4NCiZuYnNwOyAmbmJzcDsgY2xvY2tzPGJyPg0K Jm5ic3A7ICZuYnNwOyBxb208YnI+DQombmJzcDsgJm5ic3A7IGJsb2NrLWNvcm91dGluZS13cmFw cGVyPGJyPg0KKyZuYnNwOyAmbmJzcDt2ZmlvLXVzZXI8YnI+DQpkaWZmIC0tZ2l0IGEvZG9jcy9k ZXZlbC92ZmlvLXVzZXIucnN0IGIvZG9jcy9kZXZlbC92ZmlvLXVzZXIucnN0PGJyPg0KbmV3IGZp bGUgbW9kZSAxMDA2NDQ8YnI+DQppbmRleCAwMDAwMDAwMDAwLi5kMTVhMjI4YTFhPGJyPg0KLS0t IC9kZXYvbnVsbDxicj4NCisrKyBiL2RvY3MvZGV2ZWwvdmZpby11c2VyLnJzdDxicj4NCkBAIC0w LDAgKzEsMTY2MiBAQDxicj4NCisuLiBpbmNsdWRlOjogJmx0O2lzb251bS50eHQmZ3Q7PGJyPg0K Kzxicj4NCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKjxicj4NCit2ZmlvLXVzZXIg UHJvdG9jb2wgU3BlY2lmaWNhdGlvbjxicj4NCisqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKjxicj4NCis8YnI+DQorLS0tLS0tLS0tLS0tPGJyPg0KK1ZlcnNpb25fIDAuMTxicj4NCist LS0tLS0tLS0tLS08YnI+DQorPGJyPg0KKy4uIGNvbnRlbnRzOjogVGFibGUgb2YgQ29udGVudHM8 YnI+DQorPGJyPg0KK0ludHJvZHVjdGlvbjxicj4NCis9PT09PT09PT09PT08YnI+DQordmZpby11 c2VyIGlzIGEgcHJvdG9jb2wgdGhhdCBhbGxvd3MgYSBkZXZpY2UgdG8gYmUgZW11bGF0ZWQgaW4g YSBzZXBhcmF0ZTxicj4NCitwcm9jZXNzIG91dHNpZGUgb2YgYSBWaXJ0dWFsIE1hY2hpbmUgTW9u aXRvciAoVk1NKS4gdmZpby11c2VyIGRldmljZXMgY29uc2lzdDxicj4NCitvZiBhIGdlbmVyaWMg VkZJTyBkZXZpY2UgdHlwZSwgbGl2aW5nIGluc2lkZSB0aGUgVk1NLCB3aGljaCB3ZSBjYWxsIHRo ZSBjbGllbnQsPGJyPg0KK2FuZCB0aGUgY29yZSBkZXZpY2UgaW1wbGVtZW50YXRpb24sIGxpdmlu ZyBvdXRzaWRlIHRoZSBWTU0sIHdoaWNoIHdlIGNhbGwgdGhlPGJyPg0KK3NlcnZlci48YnI+DQor PGJyPg0KK1RoZSBgTGludXggVkZJTyBpb2N0bCBpbnRlcmZhY2UgJmx0OzxhIGhyZWY9Imh0dHBz Oi8vdXJsZGVmZW5zZS5wcm9vZnBvaW50LmNvbS92Mi91cmw/dT1odHRwcy0zQV9fd3d3Lmtlcm5l bC5vcmdfZG9jX2h0bWxfbGF0ZXN0X2RyaXZlci0yRGFwaV92ZmlvLmh0bWwmYW1wO2Q9RHdNRmFR JmFtcDtjPXM4ODNHcFVDT0NoS09IaW9jWXRHY2cmYW1wO3I9WFRwWXNoNVBzMnpKdnR3Nm9ndHRp NDZhdGs3MzZTSTR2Z3NKaVVLSXlERSZhbXA7bT1XWDRuZ1N2bmc0Znp3YzRjcjN5U0RkWFVxRzRB bGFNeWQxeXpuM0wxdm5FJmFtcDtzPS1uVE1xT3hFSFc0bS1GbFk3RmV5emFabG9STk1rY3pnaEs3 UUphM1MzZVEmYW1wO2U9IiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly93d3cua2VybmVsLm9yZy9k b2MvaHRtbC9sYXRlc3QvZHJpdmVyLWFwaS92ZmlvLmh0bWwNCiBba2VybmVsLm9yZ108L2E+Jmd0 O2BfPGJyPg0KK2JlZW4gY2hvc2VuIGFzIHRoZSBiYXNlIGZvciB0aGlzIHByb3RvY29sIGZvciB0 aGUgZm9sbG93aW5nIHJlYXNvbnM6PGJyPg0KKzxicj4NCisxKSBJdCBpcyBhIG1hdHVyZSBhbmQg c3RhYmxlIEFQSSwgYmFja2VkIGJ5IGFuIGV4dGVuc2l2ZWx5IHVzZWQgZnJhbWV3b3JrLjxicj4N CisyKSBUaGUgZXhpc3RpbmcgVkZJTyBjbGllbnQgaW1wbGVtZW50YXRpb24gaW4gUUVNVSAocWVt dS9ody92ZmlvLykgY2FuIGJlPGJyPg0KKyZuYnNwOyAmbmJzcDtsYXJnZWx5IHJldXNlZC48YnI+ DQorPGJyPg0KKy4uIE5vdGU6Ojxicj4NCismbmJzcDsgJm5ic3A7SW4gYSBwcm9vZiBvZiBjb25j ZXB0IGltcGxlbWVudGF0aW9uIGl0IGhhcyBiZWVuIGRlbW9uc3RyYXRlZCB0aGF0IHVzaW5nIFZG SU88YnI+DQorJm5ic3A7ICZuYnNwO292ZXIgYSBVTklYIGRvbWFpbiBzb2NrZXQgaXMgYSB2aWFi bGUgb3B0aW9uLiB2ZmlvLXVzZXIgaXMgZGVzaWduZWQgd2l0aDxicj4NCismbmJzcDsgJm5ic3A7 UUVNVSBpbiBtaW5kLCBob3dldmVyIGl0IGNvdWxkIGJlIHVzZWQgYnkgb3RoZXIgY2xpZW50IGFw cGxpY2F0aW9ucy4gVGhlPGJyPg0KKyZuYnNwOyAmbmJzcDt2ZmlvLXVzZXIgcHJvdG9jb2wgZG9l cyBub3QgcmVxdWlyZSB0aGF0IFFFTVUncyBWRklPIGNsaWVudCZuYnNwOyBpbXBsZW1lbnRhdGlv bjxicj4NCismbmJzcDsgJm5ic3A7aXMgdXNlZCBpbiBRRU1VLjxicj4NCis8YnI+DQorTm9uZSBv ZiB0aGUgVkZJTyBrZXJuZWwgbW9kdWxlcyBhcmUgcmVxdWlyZWQgZm9yIHN1cHBvcnRpbmcgdGhl IHByb3RvY29sLDxicj4NCituZWl0aGVyIGluIHRoZSBjbGllbnQgbm9yIHRoZSBzZXJ2ZXIsIG9u bHkgdGhlIHNvdXJjZSBoZWFkZXIgZmlsZXMgYXJlIHVzZWQuPGJyPg0KKzxicj4NCitUaGUgbWFp biBpZGVhIGlzIHRvIGFsbG93IGEgdmlydHVhbCBkZXZpY2UgdG8gZnVuY3Rpb24gaW4gYSBzZXBh cmF0ZSBwcm9jZXNzIGluPGJyPg0KK3RoZSBzYW1lIGhvc3Qgb3ZlciBhIFVOSVggZG9tYWluIHNv Y2tldC4gQSBVTklYIGRvbWFpbiBzb2NrZXQgKEFGX1VOSVgpIGlzPGJyPg0KK2Nob3NlbiBiZWNh dXNlIGZpbGUgZGVzY3JpcHRvcnMgY2FuIGJlIHRyaXZpYWxseSBzZW50IG92ZXIgaXQsIHdoaWNo IGluIHR1cm48YnI+DQorYWxsb3dzOjxicj4NCis8YnI+DQorKiBTaGFyaW5nIG9mIGNsaWVudCBt ZW1vcnkgZm9yIERNQSB3aXRoIHRoZSBzZXJ2ZXIuPGJyPg0KKyogU2hhcmluZyBvZiBzZXJ2ZXIg bWVtb3J5IHdpdGggdGhlIGNsaWVudCBmb3IgZmFzdCBNTUlPLjxicj4NCisqIEVmZmljaWVudCBz aGFyaW5nIG9mIGV2ZW50ZmQncyBmb3IgdHJpZ2dlcmluZyBpbnRlcnJ1cHRzLjxicj4NCis8YnI+ DQorT3RoZXIgc29ja2V0IHR5cGVzIGNvdWxkIGJlIHVzZWQgd2hpY2ggYWxsb3cgdGhlIHNlcnZl ciB0byBydW4gaW4gYSBzZXBhcmF0ZTxicj4NCitndWVzdCBpbiB0aGUgc2FtZSBob3N0IChBRl9W U09DSykgb3IgcmVtb3RlbHkgKEFGX0lORVQpLiBUaGVvcmV0aWNhbGx5IHRoZTxicj4NCit1bmRl cmx5aW5nIHRyYW5zcG9ydCBkb2VzIG5vdCBuZWNlc3NhcmlseSBoYXZlIHRvIGJlIGEgc29ja2V0 LCBob3dldmVyIHdlIGRvPGJyPg0KK25vdCBleGFtaW5lIHN1Y2ggYWx0ZXJuYXRpdmVzLiBJbiB0 aGlzIHByb3RvY29sIHZlcnNpb24gd2UgZm9jdXMgb24gdXNpbmcgYTxicj4NCitVTklYIGRvbWFp biBzb2NrZXQgYW5kIGludHJvZHVjZSBiYXNpYyBzdXBwb3J0IGZvciB0aGUgb3RoZXIgdHdvIHR5 cGVzIG9mPGJyPg0KK3NvY2tldHMgd2l0aG91dCBjb25zaWRlcmluZyBwZXJmb3JtYW5jZSBpbXBs aWNhdGlvbnMuPGJyPg0KKzxicj4NCitXaGlsZSBwYXNzaW5nIG9mIGZpbGUgZGVzY3JpcHRvcnMg aXMgZGVzaXJhYmxlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBpdCBpczxicj4NCitub3QgbmVj ZXNzYXJ5IG5laXRoZXIgZm9yIHRoZSBjbGllbnQgbm9yIGZvciB0aGUgc2VydmVyIHRvIHN1cHBv cnQgaXQgaW4gb3JkZXI8YnI+DQordG8gaW1wbGVtZW50IHRoZSBwcm90b2NvbC4gVGhlcmUgaXMg YWx3YXlzIGFuIGluLWJhbmQsIG1lc3NhZ2UtcGFzc2luZyBmYWxsPGJyPg0KK2JhY2sgbWVjaGFu aXNtLjxicj4NCis8YnI+DQorVkZJTzxicj4NCis9PT09PGJyPg0KK1ZGSU8gaXMgYSBmcmFtZXdv cmsgdGhhdCBhbGxvd3MgYSBwaHlzaWNhbCBkZXZpY2UgdG8gYmUgc2VjdXJlbHkgcGFzc2VkIHRo cm91Z2g8YnI+DQordG8gYSB1c2VyIHNwYWNlIHByb2Nlc3M7IHRoZSBkZXZpY2Utc3BlY2lmaWMg a2VybmVsIGRyaXZlciBkb2VzIG5vdCBkcml2ZSB0aGU8YnI+DQorZGV2aWNlIGF0IGFsbC4mbmJz cDsgVHlwaWNhbGx5LCB0aGUgdXNlciBzcGFjZSBwcm9jZXNzIGlzIGEgVk1NIGFuZCB0aGUgZGV2 aWNlIGlzPGJyPg0KK3Bhc3NlZCB0aHJvdWdoIHRvIGl0IGluIG9yZGVyIHRvIGFjaGlldmUgaGln aCBwZXJmb3JtYW5jZS4gVkZJTyBwcm92aWRlcyBhbiBBUEk8YnI+DQorYW5kIHRoZSByZXF1aXJl ZCBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJuZWwuIFFFTVUgaGFzIGFkb3B0ZWQgVkZJTyB0byBh bGxvdyBhPGJyPg0KK2d1ZXN0IHRvIGRpcmVjdGx5IGFjY2VzcyBwaHlzaWNhbCBkZXZpY2VzLCBp bnN0ZWFkIG9mIGVtdWxhdGluZyB0aGVtIGluPGJyPg0KK3NvZnR3YXJlLjxicj4NCis8YnI+DQor dmZpby11c2VyIHJldXNlcyB0aGUgY29yZSBWRklPIGNvbmNlcHRzIGRlZmluZWQgaW4gaXRzIEFQ SSwgYnV0IGltcGxlbWVudHMgdGhlbTxicj4NCithcyBtZXNzYWdlcyB0byBiZSBzZW50IG92ZXIg YSBzb2NrZXQuIEl0IGRvZXMgbm90IGNoYW5nZSB0aGUga2VybmVsLWJhc2VkIFZGSU88YnI+DQor aW4gYW55IHdheSwgaW4gZmFjdCBub25lIG9mIHRoZSBWRklPIGtlcm5lbCBtb2R1bGVzIG5lZWQg dG8gYmUgbG9hZGVkIHRvIHVzZTxicj4NCit2ZmlvLXVzZXIuIEl0IGlzIGFsc28gcG9zc2libGUg Zm9yIHRoZSBjbGllbnQgdG8gY29uY3VycmVudGx5IHVzZSB0aGUgY3VycmVudDxicj4NCitrZXJu ZWwtYmFzZWQgVkZJTyBmb3Igb25lIGRldmljZSwgYW5kIHZmaW8tdXNlciBmb3IgYW5vdGhlciBk ZXZpY2UuPGJyPg0KKzxicj4NCitWRklPIERldmljZSBNb2RlbDxicj4NCistLS0tLS0tLS0tLS0t LS0tLTxicj4NCitBIGRldmljZSB1bmRlciBWRklPIHByZXNlbnRzIGEgc3RhbmRhcmQgaW50ZXJm YWNlIHRvIHRoZSB1c2VyIHByb2Nlc3MuIE1hbnkgb2Y8YnI+DQordGhlIFZGSU8gb3BlcmF0aW9u cyBpbiB0aGUgZXhpc3RpbmcgaW50ZXJmYWNlIHVzZSB0aGUgaW9jdGwoKSBzeXN0ZW0gY2FsbCwg YW5kPGJyPg0KK3JlZmVyZW5jZXMgdG8gdGhlIGV4aXN0aW5nIGludGVyZmFjZSBhcmUgY2FsbGVk IHRoZSBpb2N0bCgpIGltcGxlbWVudGF0aW9uIGluPGJyPg0KK3RoaXMgZG9jdW1lbnQuPGJyPg0K Kzxicj4NCitUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIHRoZSBzZXQgb2YgbWVzc2Fn ZXMgdGhhdCBpbXBsZW1lbnQgdGhlIFZGSU88YnI+DQoraW50ZXJmYWNlIG92ZXIgYSBzb2NrZXQu IEluIG1hbnkgY2FzZXMsIHRoZSBtZXNzYWdlcyBhcmUgZGlyZWN0IHRyYW5zbGF0aW9ucyBvZjxi cj4NCitkYXRhIHN0cnVjdHVyZXMgdXNlZCBpbiB0aGUgaW9jdGwoKSBpbXBsZW1lbnRhdGlvbi4g TWVzc2FnZXMgZGVyaXZlZCBmcm9tPGJyPg0KK2lvY3RsKClzIHdpbGwgaGF2ZSBhIG5hbWUgZGVy aXZlZCBmcm9tIHRoZSBpb2N0bCgpIGNvbW1hbmQgbmFtZS4mbmJzcDsgRS5nLiwgdGhlPGJyPg0K K1ZGSU9fR0VUX0lORk8gaW9jdGwoKSBjb21tYW5kIGJlY29tZXMgYSBWRklPX1VTRVJfR0VUX0lO Rk8gbWVzc2FnZS4mbmJzcDsgVGhlPGJyPg0KK3B1cnBvc2Ugb2YgdGhpcyByZXVzZSBpcyB0byBz aGFyZSBhcyBtdWNoIGNvZGUgYXMgZmVhc2libGUgd2l0aCB0aGUgaW9jdGwoKTxicj4NCitpbXBs ZW1lbnRhdGlvbi48YnI+DQorPGJyPg0KK0Nvbm5lY3Rpb24gSW5pdGlhdGlvbjxicj4NCiteXl5e Xl5eXl5eXl5eXl5eXl5eXl48YnI+DQorQWZ0ZXIgdGhlIGNsaWVudCBjb25uZWN0cyB0byB0aGUg c2VydmVyLCB0aGUgaW5pdGlhbCBzZXJ2ZXIgbWVzc2FnZSBpczxicj4NCitWRklPX1VTRVJfVkVS U0lPTiB0byBwcm9wb3NlIGEgcHJvdG9jb2wgdmVyc2lvbiBhbmQgc2V0IG9mIGNhcGFiaWxpdGll cyB0bzxicj4NCithcHBseSB0byB0aGUgc2Vzc2lvbi4gVGhlIGNsaWVudCByZXBsaWVzIHdpdGgg YSBjb21wYXRpYmxlIHZlcnNpb24gYW5kIHNldCBvZjxicj4NCitjYXBhYmlsaXRpZXMgaXQgc3Vw cG9ydHMsIG9yIGNsb3NlcyB0aGUgY29ubmVjdGlvbiBpZiBpdCBjYW5ub3Qgc3VwcG9ydCB0aGU8 YnI+DQorYWR2ZXJ0aXNlZCB2ZXJzaW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8 L2Jsb2NrcXVvdGU+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIg ZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQiPjxvOnA+Jm5ic3A7 PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9y bWFsIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OjExLjBwdCI+T2ssIHNvIHRoZSBzZXJ2ZXIgYW5ub3VuY2VzIGZpcnN0LiAoaXQgbWFrZXMgc2Vu c2UgdG8gbWUsIGFzIHRoZSBjbGllbnQgaXMgbW9yZSBhZGp1c3RhYmxlIHRoYW4gdGhlIHNlcnZl ciAtIGFuZCBpdCBhbGxvd3MgdG8gZGlzY292ZXIgc2VydmVyIGNhcHMpPG86cD48L286cD48L3Nw YW4+PC9mb250PjwvcD4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0i MiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7bXNvLWFzY2lp LWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWhhbnNpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWJp ZGktZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij48bzpwPiZuYnNwOzwv bzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0i MiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7bXNvLWFzY2lp LWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWhhbnNpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWJp ZGktZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij5UaGUgcHJvdG9jb2wg aXMgd3JvbmcsIHdlIG1pc3NlZCB1cGRhdGluZyB0aGUgdGV4dCB3aGVuIHN3aXRjaGluZyBmcm9t IHRoZSBzZXJ2ZXINCiB0byB0aGUgY2xpZW50IHNlbmRpbmcgdGhlIHZlcnNpb24gZmlyc3QuPG86 cD48L286cD48L3NwYW4+PC9mb250PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNp emU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O21zby1h c2NpaS1mb250LWZhbWlseTpDYWxpYnJpO21zby1oYW5zaS1mb250LWZhbWlseTpDYWxpYnJpO21z by1iaWRpLWZvbnQtZmFtaWx5OiZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyI+U28sIGl04oCZ cyB0aGUgY2xpZW50IHRoYXQgYW5ub3VuY2VzIHRoZSB2ZXJzaW9uIGZpcnN0LCB3ZeKAmWxsIGZp eCB0aGUgdGV4dC48bzpwPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQ7bXNvLWFzY2lpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWhhbnNpLWZvbnQtZmFt aWx5OkNhbGlicmk7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1 b3Q7Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPGRpdj4NCjxwIGNsYXNz PSJNc29Ob3JtYWwiPjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJm b250LXNpemU6MTEuMHB0Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9k aXY+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0ND Q0NDQyAxLjBwdDttc28tYm9yZGVyLWxlZnQtYWx0OnNvbGlkICNDQ0NDQ0MgLjc1cHQ7cGFkZGlu ZzowY20gMGNtIDBjbSA2LjBwdDttYXJnaW4tbGVmdDo0LjhwdDttYXJnaW4tcmlnaHQ6MGNtIj4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6MTEuMHB0Ij4rPGJyPg0KK0RNQSBNZW1vcnkgQ29uZmlndXJhdGlv bjxicj4NCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl48YnI+DQorVGhlIGNsaWVudCB1c2VzIFZG SU9fVVNFUl9ETUFfTUFQIGFuZCBWRklPX1VTRVJfRE1BX1VOTUFQIG1lc3NhZ2VzIHRvIGluZm9y bTxicj4NCit0aGUgc2VydmVyIG9mIHRoZSB2YWxpZCBETUEgcmFuZ2VzIHRoYXQgdGhlIHNlcnZl ciBjYW4gYWNjZXNzIG9uIGJlaGFsZjxicj4NCitvZiBhIGRldmljZS4gRE1BIG1lbW9yeSBtYXkg YmUgYWNjZXNzZWQgYnkgdGhlIHNlcnZlciB2aWEgVkZJT19VU0VSX0RNQV9SRUFEPGJyPg0KK2Fu ZCBWRklPX1VTRVJfRE1BX1dSSVRFIG1lc3NhZ2VzIG92ZXIgdGhlIHNvY2tldC48YnI+DQorPGJy Pg0KK0FuIG9wdGltaXphdGlvbiBmb3Igc2VydmVyIGFjY2VzcyB0byBjbGllbnQgbWVtb3J5IGlz IGZvciB0aGUgY2xpZW50IHRvIHByb3ZpZGU8YnI+DQorZmlsZSBkZXNjcmlwdG9ycyB0aGUgc2Vy dmVyIGNhbiBtbWFwKCkgdG8gZGlyZWN0bHkgYWNjZXNzIGNsaWVudCBtZW1vcnkuIE5vdGU8YnI+ DQordGhhdCBtbWFwKCkgcHJpdmlsZWdlcyBjYW5ub3QgYmUgcmV2b2tlZCBieSB0aGUgY2xpZW50 LCB0aGVyZWZvcmUgZmlsZTxicj4NCitkZXNjcmlwdG9ycyBzaG91bGQgb25seSBiZSBleHBvcnRl ZCBpbiBlbnZpcm9ubWVudHMgd2hlcmUgdGhlIGNsaWVudCB0cnVzdHMgdGhlPGJyPg0KK3NlcnZl ciBub3QgdG8gY29ycnVwdCBndWVzdCBtZW1vcnkuPGJyPg0KKzxicj4NCitEZXZpY2UgSW5mb3Jt YXRpb248YnI+DQorXl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0KK1RoZSBjbGllbnQgdXNlcyBhIFZG SU9fVVNFUl9ERVZJQ0VfR0VUX0lORk8gbWVzc2FnZSB0byBxdWVyeSB0aGUgc2VydmVyIGZvcjxi cj4NCitpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGV2aWNlLiBUaGlzIGluZm9ybWF0aW9uIGluY2x1 ZGVzOjxicj4NCis8YnI+DQorKiBUaGUgZGV2aWNlIHR5cGUgYW5kIHdoZXRoZXIgaXQgc3VwcG9y dHMgcmVzZXQgKGBgVkZJT19ERVZJQ0VfRkxBR1NfYGApLDxicj4NCisqIHRoZSBudW1iZXIgb2Yg ZGV2aWNlIHJlZ2lvbnMsIGFuZDxicj4NCisqIHRoZSBkZXZpY2UgcHJlc2VudHMgdG8gdGhlIGNs aWVudCB0aGUgbnVtYmVyIG9mIGludGVycnVwdCB0eXBlcyB0aGUgZGV2aWNlPGJyPg0KKyZuYnNw OyBzdXBwb3J0cy48YnI+DQorPGJyPg0KK1JlZ2lvbiBJbmZvcm1hdGlvbjxicj4NCiteXl5eXl5e Xl5eXl5eXl5eXl48YnI+DQorVGhlIGNsaWVudCB1c2VzIFZGSU9fVVNFUl9ERVZJQ0VfR0VUX1JF R0lPTl9JTkZPIG1lc3NhZ2VzIHRvIHF1ZXJ5IHRoZSBzZXJ2ZXI8YnI+DQorZm9yIGluZm9ybWF0 aW9uIGFib3V0IHRoZSBkZXZpY2UncyBtZW1vcnkgcmVnaW9ucy4gVGhpcyBpbmZvcm1hdGlvbiBk ZXNjcmliZXM6PGJyPg0KKzxicj4NCisqIFJlYWQgYW5kIHdyaXRlIHBlcm1pc3Npb25zLCB3aGV0 aGVyIGl0IGNhbiBiZSBtZW1vcnkgbWFwcGVkLCBhbmQgd2hldGhlciBpdDxicj4NCismbmJzcDsg c3VwcG9ydHMgYWRkaXRpb25hbCBjYXBhYmlsaXRpZXMgKGBgVkZJT19SRUdJT05fSU5GT19DQVBf YGApLjxicj4NCisqIFJlZ2lvbiBpbmRleCwgc2l6ZSwgYW5kIG9mZnNldC48YnI+DQorPGJyPg0K K1doZW4gYSByZWdpb24gY2FuIGJlIG1hcHBlZCBieSB0aGUgY2xpZW50LCB0aGUgc2VydmVyIHBy b3ZpZGVzIGEgZmlsZTxicj4NCitkZXNjcmlwdG9yIHdoaWNoIHRoZSBjbGllbnQgY2FuIG1tYXAo KS4gVGhlIHNlcnZlciBpcyByZXNwb25zaWJsZSBmb3IgcG9sbGluZzxicj4NCitmb3IgY2xpZW50 IHVwZGF0ZXMgdG8gbWVtb3J5IG1hcHBlZCByZWdpb25zLjxicj4NCis8YnI+DQorUmVnaW9uIENh cGFiaWxpdGllczxicj4NCismcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVv dDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsm cXVvdDsmcXVvdDsmcXVvdDs8YnI+DQorU29tZSByZWdpb25zIGhhdmUgYWRkaXRpb25hbCBjYXBh YmlsaXRpZXMgdGhhdCBjYW5ub3QgYmUgZGVzY3JpYmVkIGFkZXF1YXRlbHk8YnI+DQorYnkgdGhl IHJlZ2lvbiBpbmZvIGRhdGEgc3RydWN0dXJlLiBUaGVzZSBjYXBhYmlsaXRpZXMgYXJlIHJldHVy bmVkIGluIHRoZTxicj4NCityZWdpb24gaW5mbyByZXBseSBpbiBhIGxpc3Qgc2ltaWxhciB0byBQ Q0kgY2FwYWJpbGl0aWVzIGluIGEgUENJIGRldmljZSdzPGJyPg0KK2NvbmZpZ3VyYXRpb24gc3Bh Y2UuPGJyPg0KKzxicj4NCitTcGFyc2UgUmVnaW9uczxicj4NCismcXVvdDsmcXVvdDsmcXVvdDsm cXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVvdDsmcXVv dDsmcXVvdDs8YnI+DQorQSByZWdpb24gY2FuIGJlIG1lbW9yeS1tYXBwYWJsZSBpbiB3aG9sZSBv ciBpbiBwYXJ0LiBXaGVuIG9ubHkgYSBzdWJzZXQgb2YgYTxicj4NCityZWdpb24gY2FuIGJlIG1h cHBlZCBieSB0aGUgY2xpZW50LCBhIFZGSU9fUkVHSU9OX0lORk9fQ0FQX1NQQVJTRV9NTUFQPGJy Pg0KK2NhcGFiaWxpdHkgaXMgaW5jbHVkZWQgaW4gdGhlIHJlZ2lvbiBpbmZvIHJlcGx5LiBUaGlz IGNhcGFiaWxpdHkgZGVzY3JpYmVzPGJyPg0KK3doaWNoIHBvcnRpb25zIGNhbiBiZSBtYXBwZWQg YnkgdGhlIGNsaWVudC48YnI+DQorPGJyPg0KKy4uIE5vdGU6Ojxicj4NCismbmJzcDsgJm5ic3A7 Rm9yIGV4YW1wbGUsIGluIGEgdmlydHVhbCBOVk1lIGNvbnRyb2xsZXIsIHNwYXJzZSByZWdpb25z IGNhbiBiZSB1c2VkIHNvPGJyPg0KKyZuYnNwOyAmbmJzcDt0aGF0IGFjY2Vzc2VzIHRvIHRoZSBO Vk1lIHJlZ2lzdGVycyAoZm91bmQgaW4gdGhlIGJlZ2lubmluZyBvZiBCQVIwKSBhcmU8YnI+DQor Jm5ic3A7ICZuYnNwO3RyYXBwZWQgKGFuIGluZnJlcXVlbnQgZXZlbnQpLCB3aGlsZSBhbGxvd2lu ZyBkaXJlY3QgYWNjZXNzIHRvIHRoZSBkb29yYmVsbHM8YnI+DQorJm5ic3A7ICZuYnNwOyhhbiBl eHRyZW1lbHkgZnJlcXVlbnQgZXZlbnQgYXMgZXZlcnkgSS9PIHN1Ym1pc3Npb24gcmVxdWlyZXMg YSB3cml0ZSB0bzxicj4NCismbmJzcDsgJm5ic3A7QkFSMCksIGZvdW5kIHJpZ2h0IGFmdGVyIHRo ZSBOVk1lIHJlZ2lzdGVycyBpbiBCQVIwLjxicj4NCis8YnI+DQorRGV2aWNlLVNwZWNpZmljIFJl Z2lvbnM8YnI+DQorJnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1 b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7 JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7JnF1b3Q7PGJyPg0KKzxicj4NCitBIGRldmlj ZSBjYW4gZGVmaW5lIHJlZ2lvbnMgYWRkaXRpb25hbCB0byB0aGUgc3RhbmRhcmQgb25lcyAoZS5n LiBQQ0kgaW5kZXhlczxicj4NCiswLTgpLiBUaGlzIGlzIGFjaGlldmVkIGJ5IGluY2x1ZGluZyBh IFZGSU9fUkVHSU9OX0lORk9fQ0FQX1RZUEUgY2FwYWJpbGl0eTxicj4NCitpbiB0aGUgcmVnaW9u IGluZm8gcmVwbHkgb2YgYSBkZXZpY2Utc3BlY2lmaWMgcmVnaW9uLiBTdWNoIHJlZ2lvbnMgYXJl IHJlZmxlY3RlZDxicj4NCitpbiBgYHN0cnVjdCB2ZmlvX2RldmljZV9pbmZvLm51bV9yZWdpb25z YGAuIFRodXMsIGZvciBQQ0kgZGV2aWNlcyB0aGlzIHZhbHVlIGNhbjxicj4NCitiZSBlcXVhbCB0 bywgb3IgaGlnaGVyIHRoYW4sIFZGSU9fUENJX05VTV9SRUdJT05TLjxicj4NCis8YnI+DQorSW50 ZXJydXB0czxicj4NCiteXl5eXl5eXl5ePGJyPg0KK1RoZSBjbGllbnQgdXNlcyBWRklPX1VTRVJf REVWSUNFX0dFVF9JUlFfSU5GTyBtZXNzYWdlcyB0byBxdWVyeSB0aGUgc2VydmVyIGZvcjxicj4N Cit0aGUgZGV2aWNlJ3MgaW50ZXJydXB0IHR5cGVzLiBUaGUgaW50ZXJydXB0IHR5cGVzIGFyZSBz cGVjaWZpYyB0byB0aGUgYnVzIHRoZTxicj4NCitkZXZpY2UgaXMgYXR0YWNoZWQgdG8sIGFuZCB0 aGUgY2xpZW50IGlzIGV4cGVjdGVkIHRvIGtub3cgdGhlIGNhcGFiaWxpdGllcyBvZjxicj4NCitl YWNoIGludGVycnVwdCB0eXBlLiBUaGUgc2VydmVyIGNhbiBzaWduYWwgYW4gaW50ZXJydXB0IGVp dGhlciB3aXRoPGJyPg0KK1ZGSU9fVVNFUl9WTV9JTlRFUlJVUFQgbWVzc2FnZXMgb3ZlciB0aGUg c29ja2V0LCBvciBjYW4gZGlyZWN0bHkgaW5qZWN0PGJyPg0KK2ludGVycnVwdHMgaW50byB0aGUg Z3Vlc3QgdmlhIGFuIGV2ZW50IGZpbGUgZGVzY3JpcHRvci4gVGhlIGNsaWVudCBjb25maWd1cmVz PGJyPg0KK2hvdyB0aGUgc2VydmVyIHNpZ25hbHMgYW4gaW50ZXJydXB0IHdpdGggVkZJT19VU0VS X1NFVF9JUlFTIG1lc3NhZ2VzLjxicj4NCis8YnI+DQorRGV2aWNlIFJlYWQgYW5kIFdyaXRlPGJy Pg0KK15eXl5eXl5eXl5eXl5eXl5eXl5eXjxicj4NCitXaGVuIHRoZSBndWVzdCBleGVjdXRlcyBs b2FkIG9yIHN0b3JlIG9wZXJhdGlvbnMgdG8gZGV2aWNlIG1lbW9yeSwgdGhlIGNsaWVudDxicj4N Citmb3J3YXJkcyB0aGVzZSBvcGVyYXRpb25zIHRvIHRoZSBzZXJ2ZXIgd2l0aCBWRklPX1VTRVJf UkVHSU9OX1JFQUQgb3I8YnI+DQorVkZJT19VU0VSX1JFR0lPTl9XUklURSBtZXNzYWdlcy4gVGhl IHNlcnZlciB3aWxsIHJlcGx5IHdpdGggZGF0YSBmcm9tIHRoZTxicj4NCitkZXZpY2Ugb24gcmVh ZCBvcGVyYXRpb25zIG9yIGFuIGFja25vd2xlZGdlbWVudCBvbiB3cml0ZSBvcGVyYXRpb25zLjxi cj4NCis8YnI+DQorRE1BPGJyPg0KK15eXjxicj4NCitXaGVuIGEgZGV2aWNlIHBlcmZvcm1zIERN QSBhY2Nlc3NlcyB0byBndWVzdCBtZW1vcnksIHRoZSBzZXJ2ZXIgd2lsbCBmb3J3YXJkPGJyPg0K K3RoZW0gdG8gdGhlIGNsaWVudCB3aXRoIFZGSU9fVVNFUl9ETUFfUkVBRCBhbmQgVkZJT19VU0VS X0RNQV9XUklURSBtZXNzYWdlcy48YnI+DQorVGhlc2UgbWVzc2FnZXMgY2FuIG9ubHkgYmUgdXNl ZCB0byBhY2Nlc3MgZ3Vlc3QgbWVtb3J5IHRoZSBjbGllbnQgaGFzPGJyPg0KK2NvbmZpZ3VyZWQg aW50byB0aGUgc2VydmVyLjxicj4NCis8YnI+DQorUHJvdG9jb2wgU3BlY2lmaWNhdGlvbjxicj4N Cis9PT09PT09PT09PT09PT09PT09PT09PGJyPg0KK1RvIGRpc3Rpbmd1aXNoIGZyb20gdGhlIGJh c2UgVkZJTyBzeW1ib2xzLCBhbGwgdmZpby11c2VyIHN5bWJvbHMgYXJlIHByZWZpeGVkPGJyPg0K K3dpdGggdmZpb191c2VyIG9yIFZGSU9fVVNFUi4gSW4gcmV2aXNpb24gMC4xLCBhbGwgZGF0YSBp cyBpbiB0aGUgbGl0dGxlLWVuZGlhbjxicj4NCitmb3JtYXQsIGFsdGhvdWdoIHRoaXMgbWF5IGJl IHJlbGF4ZWQgaW4gZnV0dXJlIHJldmlzaW9uIGluIGNhc2VzIHdoZXJlIHRoZTxicj4NCitjbGll bnQgYW5kIHNlcnZlciBhcmUgYm90aCBiaWctZW5kaWFuLiBUaGUgbWVzc2FnZXMgYXJlIGZvcm1h dHRlZCBmb3Igc2VhbWxlc3M8YnI+DQorcmV1c2Ugb2YgdGhlIG5hdGl2ZSBWRklPIHN0cnVjdHMu PGJyPg0KKzxicj4NCitTb2NrZXQ8YnI+DQorLS0tLS0tPGJyPg0KKzxicj4NCitBIHNlcnZlciBj YW4gc2VydmU6PGJyPg0KKzxicj4NCisxKSBvbmUgb3IgbW9yZSBjbGllbnRzLCBhbmQvb3I8YnI+ DQorMikgb25lIG9yIG1vcmUgdmlydHVhbCBkZXZpY2VzLCBiZWxvbmdpbmcgdG8gb25lIG9yIG1v cmUgY2xpZW50cy48YnI+DQorPGJyPg0KK1RoZSBjdXJyZW50IHByb3RvY29sIHNwZWNpZmljYXRp b24gcmVxdWlyZXMgYSBkZWRpY2F0ZWQgc29ja2V0IHBlcjxicj4NCitjbGllbnQvc2VydmVyIGNv bm5lY3Rpb24uIEl0IGlzIGEgc2VydmVyLXNpZGUgaW1wbGVtZW50YXRpb24gZGV0YWlsIHdoZXRo ZXIgYTxicj4NCitzaW5nbGUgc2VydmVyIGhhbmRsZXMgbXVsdGlwbGUgdmlydHVhbCBkZXZpY2Vz IGZyb20gdGhlIHNhbWUgb3IgbXVsdGlwbGU8YnI+DQorY2xpZW50cy4gVGhlIGxvY2F0aW9uIG9m IHRoZSBzb2NrZXQgaXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMuIE11bHRpcGxleGluZzxicj4N CitjbGllbnRzLCBkZXZpY2VzLCBhbmQgc2VydmVycyBvdmVyIHRoZSBzYW1lIHNvY2tldCBpcyBu b3Qgc3VwcG9ydGVkIGluIHRoaXM8YnI+DQordmVyc2lvbiBvZiB0aGUgcHJvdG9jb2wuPGJyPg0K Kzxicj4NCitBdXRoZW50aWNhdGlvbjxicj4NCistLS0tLS0tLS0tLS0tLTxicj4NCitGb3IgQUZf VU5JWCwgd2UgcmVseSBvbiBPUyBtYW5kYXRvcnkgYWNjZXNzIGNvbnRyb2xzIG9uIHRoZSBzb2Nr ZXQgZmlsZXMsPGJyPg0KK3RoZXJlZm9yZSBpdCBpcyB1cCB0byB0aGUgbWFuYWdlbWVudCBsYXll ciB0byBzZXQgdXAgdGhlIHNvY2tldCBhcyByZXF1aXJlZC48YnI+DQorU29ja2V0IHR5cGVzIHRo YW4gc3BhbiBndWVzdHMgb3IgaG9zdHMgd2lsbCByZXF1aXJlIGEgcHJvcGVyIGF1dGhlbnRpY2F0 aW9uPGJyPg0KK21lY2hhbmlzbS4gRGVmaW5pbmcgdGhhdCBtZWNoYW5pc20gaXMgZGVmZXJyZWQg dG8gYSBmdXR1cmUgdmVyc2lvbiBvZiB0aGU8YnI+DQorcHJvdG9jb2wuPGJyPg0KKzxicj4NCitD b21tYW5kIENvbmN1cnJlbmN5PGJyPg0KKy0tLS0tLS0tLS0tLS0tLS0tLS08YnI+DQorQSBjbGll bnQgbWF5IHBpcGVsaW5lIG11bHRpcGxlIGNvbW1hbmRzIHdpdGhvdXQgd2FpdGluZyBmb3IgcHJl dmlvdXMgY29tbWFuZDxicj4NCityZXBsaWVzLiZuYnNwOyBUaGUgc2VydmVyIHdpbGwgcHJvY2Vz cyBjb21tYW5kcyBpbiB0aGUgb3JkZXIgdGhleSBhcmUgcmVjZWl2ZWQuJm5ic3A7IEE8YnI+DQor Y29uc2VxdWVuY2Ugb2YgdGhpcyBpcyBpZiBhIGNsaWVudCBpc3N1ZXMgYSBjb21tYW5kIHdpdGgg dGhlICpOb19yZXBseSogYml0LDxicj4NCit0aGVuIHN1YnNlcWVudGx5IGlzc3VlcyBhIGNvbW1h bmQgd2l0aG91dCAqTm9fcmVwbHkqLCB0aGUgb2xkZXIgY29tbWFuZCB3aWxsPGJyPg0KK2hhdmUg YmVlbiBwcm9jZXNzZWQgYmVmb3JlIHRoZSByZXBseSB0byB0aGUgeW91bmdlciBjb21tYW5kIGlz IHNlbnQgYnkgdGhlPGJyPg0KK3NlcnZlci4mbmJzcDsgVGhlIGNsaWVudCBtdXN0IGJlIGF3YXJl IG9mIHRoZSBkZXZpY2UncyBjYXBhYmlsaXR5IHRvIHByb2Nlc3M8YnI+DQorY29uY3VycmVudCBj b21tYW5kcyBpZiBwaXBlbGluaW5nIGlzIHVzZWQuJm5ic3A7IEZvciBleGFtcGxlLCBwaXBlbGlu aW5nIGFsbG93czxicj4NCittdWx0aXBsZSBjbGllbnQgdGhyZWFkcyB0byBjb25jdXJlbnRseSBh Y2Nlc3MgZGV2aWNlIG1lbW9yeTsgdGhlIGNsaWVudCBtdXN0PGJyPg0KK2Vuc3VyZSB0aGVzZSBh Y2Nlc2VzIG9iZXkgZGV2aWNlIHNlbWFudGljcy48YnI+DQorPGJyPg0KK0FuIGV4YW1wbGUgaXMg YSBmcmFtZSBidWZmZXIgZGV2aWNlLCB3aGVyZSB0aGUgZGV2aWNlIG1heSBhbGxvdyBjb25jdXJy ZW50PGJyPg0KK2FjY2VzcyB0byBkaWZmZXJlbnQgYXJlYXMgb2YgdmlkZW8gbWVtb3J5LCBidXQg bWF5IGhhdmUgaW5kZXRlcm1pbmF0ZSBiZWhhdmlvcjxicj4NCitpZiBjb25jdXJyZW50IGFjY2Vz ZXMgYXJlIHBlcmZvcm1lZCB0byBjb21tYW5kIG9yIHN0YXR1cyByZWdpc3RlcnMuPGJyPg0KKzxi cj4NCitOb3RlIHRoYXQgdW5yZWxhdGVkIG1lc3NhZ2VzIHNlbnQgZnJvbSB0aGUgc2V2cmVyIHRv IHRoZSBjbGllbnQgY2FuIGFwcGVhciBpbjxicj4NCitiZXR3ZWVuIGEgY2xpZW50IHRvIHNlcnZl ciByZXF1ZXN0L3JlcGx5IGFuZCB2aWNlIHZlcnNhLjxicj4NCis8YnI+DQorU29ja2V0IERpc2Nv bm5lY3Rpb24gQmVoYXZpb3I8YnI+DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+ DQorVGhlIHNlcnZlciBhbmQgdGhlIGNsaWVudCBjYW4gZGlzY29ubmVjdCBmcm9tIGVhY2ggb3Ro ZXIsIGVpdGhlciBpbnRlbnRpb25hbGx5PGJyPg0KK29yIHVuZXhwZWN0ZWRseS4gQm90aCB0aGUg Y2xpZW50IGFuZCB0aGUgc2VydmVyIG5lZWQgdG8ga25vdyBob3cgdG8gaGFuZGxlIHN1Y2g8YnI+ DQorZXZlbnRzLjxicj4NCis8YnI+DQorU2VydmVyIERpc2Nvbm5lY3Rpb248YnI+DQorXl5eXl5e Xl5eXl5eXl5eXl5eXl48YnI+DQorQSBzZXJ2ZXIgZGlzY29ubmVjdGluZyBmcm9tIHRoZSBjbGll bnQgbWF5IGluZGljYXRlIHRoYXQ6PGJyPg0KKzxicj4NCisxKSBBIHZpcnR1YWwgZGV2aWNlIGhh cyBiZWVuIHJlc3RhcnRlZCwgZWl0aGVyIGludGVudGlvbmFsbHkgKGUuZy4gYmVjYXVzZSBvZiBh PGJyPg0KKyZuYnNwOyAmbmJzcDtkZXZpY2UgdXBkYXRlKSBvciB1bmludGVudGlvbmFsbHkgKGUu Zy4gYmVjYXVzZSBvZiBhIGNyYXNoKS48YnI+DQorMikgQSB2aXJ0dWFsIGRldmljZSBoYXMgYmVl biBzaHV0IGRvd24gd2l0aCBubyBpbnRlbnRpb24gdG8gYmUgcmVzdGFydGVkLjxicj4NCis8YnI+ DQorSXQgaXMgaW1wb3NzaWJsZSBmb3IgdGhlIGNsaWVudCB0byBrbm93IHdoZXRoZXIgb3Igbm90 IGEgZmFpbHVyZSBpczxicj4NCitpbnRlcm1pdHRlbnQgb3IgaW5ub2N1b3VzIGFuZCBzaG91bGQg YmUgcmV0cmllZCwgdGhlcmVmb3JlIHRoZSBjbGllbnQgc2hvdWxkPGJyPg0KK3Jlc2V0IHRoZSBW RklPIGRldmljZSB3aGVuIGl0IGRldGVjdHMgdGhlIHNvY2tldCBoYXMgYmVlbiBkaXNjb25uZWN0 ZWQuPGJyPg0KK0Vycm9yIHJlY292ZXJ5IHdpbGwgYmUgZHJpdmVuIGJ5IHRoZSBndWVzdCdzIGRl dmljZSBlcnJvciBoYW5kbGluZzxicj4NCitiZWhhdmlvci48YnI+DQorPGJyPg0KK0NsaWVudCBE aXNjb25uZWN0aW9uPGJyPg0KK15eXl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0KK1RoZSBjbGllbnQg ZGlzY29ubmVjdGluZyBmcm9tIHRoZSBzZXJ2ZXIgcHJpbWFyaWx5IG1lYW5zIHRoYXQgdGhlIGNs aWVudDxicj4NCitoYXMgZXhpdGVkLiBDdXJyZW50bHksIHRoaXMgbWVhbnMgdGhhdCB0aGUgZ3Vl c3QgaXMgc2h1dCBkb3duIHNvIHRoZSBkZXZpY2UgaXM8YnI+DQorbm8gbG9uZ2VyIG5lZWRlZCB0 aGVyZWZvcmUgdGhlIHNlcnZlciBjYW4gYXV0b21hdGljYWxseSBleGl0LiBIb3dldmVyLCB0aGVy ZTxicj4NCitjYW4gYmUgY2FzZXMgd2hlcmUgYSBjbGllbnQgZGlzY29ubmVjdGlvbiBzaG91bGQg bm90IHJlc3VsdCBpbiBhIHNlcnZlciBleGl0Ojxicj4NCis8YnI+DQorMSkgQSBzaW5nbGUgc2Vy dmVyIHNlcnZpbmcgbXVsdGlwbGUgY2xpZW50cy48YnI+DQorMikgQSBtdWx0aS1wcm9jZXNzIFFF TVUgdXBncmFkaW5nIGl0c2VsZiBzdGVwIGJ5IHN0ZXAsIHdoaWNoIGlzIG5vdCB5ZXQ8YnI+DQor Jm5ic3A7ICZuYnNwO2ltcGxlbWVudGVkLjxicj4NCis8YnI+DQorVGhlcmVmb3JlIGluIG9yZGVy IGZvciB0aGUgcHJvdG9jb2wgdG8gYmUgZm9yd2FyZCBjb21wYXRpYmxlIHRoZSBzZXJ2ZXIgc2hv dWxkPGJyPg0KK3Rha2Ugbm8gYWN0aW9uIHdoZW4gdGhlIGNsaWVudCBkaXNjb25uZWN0cy4gSWYg YW55dGhpbmcgaGFwcGVucyB0byB0aGUgY2xpZW50PGJyPg0KK3RoZSBjb250cm9sIHN0YWNrIHdp bGwga25vdyBhYm91dCBpdCBhbmQgY2FuIGNsZWFuIHVwIHJlc291cmNlczxicj4NCithY2NvcmRp bmdseS48YnI+DQorPGJyPg0KK1JlcXVlc3QgUmV0cnkgYW5kIFJlc3BvbnNlIFRpbWVvdXQ8YnI+ DQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXjxicj4NCitBIGZhaWxlZCBjb21t YW5kIGlzIGEgY29tbWFuZCB0aGF0IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzZW50IGFuZCBoYXMg YmVlbjxicj4NCityZXNwb25kZWQgdG8gd2l0aCBhbiBlcnJvciBjb2RlLiBGYWlsdXJlIHRvIHNl bmQgdGhlIGNvbW1hbmQgaW4gdGhlIGZpcnN0IHBsYWNlPGJyPg0KKyhlLmcuIGJlY2F1c2UgdGhl IHNvY2tldCBpcyBkaXNjb25uZWN0ZWQpIGlzIGEgZGlmZmVyZW50IHR5cGUgb2YgZXJyb3IgZXhh bWluZWQ8YnI+DQorZWFybGllciBpbiB0aGUgZGlzY29ubmVjdCBzZWN0aW9uLjxicj4NCis8YnI+ DQorLi4gTm90ZTo6PGJyPg0KKyZuYnNwOyAmbmJzcDtRRU1VJ3MgVkZJTyByZXRyaWVzIGNlcnRh aW4gb3BlcmF0aW9ucyBpZiB0aGV5IGZhaWwuIFdoaWxlIHRoaXMgbWFrZXMgc2Vuc2U8YnI+DQor Jm5ic3A7ICZuYnNwO2ZvciByZWFsIEhXLCB3ZSBkb24ndCBrbm93IGZvciBzdXJlIHdoZXRoZXIg aXQgbWFrZXMgc2Vuc2UgZm9yIHZpcnR1YWw8YnI+DQorJm5ic3A7ICZuYnNwO2RldmljZXMuPGJy Pg0KKzxicj4NCitEZWZpbmluZyBhIHJldHJ5IGFuZCB0aW1lb3V0IHNjaGVtZSBpcyBkZWZlcnJl ZCB0byBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZTxicj4NCitwcm90b2NvbC48YnI+DQorPGJyPg0K Ky4uIF9Db21tYW5kczo8YnI+DQorPGJyPg0KK0NvbW1hbmRzPGJyPg0KKy0tLS0tLS0tPGJyPg0K K1RoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIFZGSU8gbWVzc2FnZSBjb21tYW5kIElEcywg YW5kIHdoZXRoZXIgdGhlPGJyPg0KK21lc3NhZ2UgY29tbWFuZCBpcyBzZW50IGZyb20gdGhlIGNs aWVudCBvciB0aGUgc2VydmVyLjxicj4NCis8YnI+DQorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTmFtZSZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBDb21tYW5kIHwg UmVxdWVzdCBEaXJlY3Rpb24gfDxicj4NCisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSs9PT09PT09PT0rPT09PT09PT09PT09PT09PT09PSs8YnI+DQorfCBWRklPX1VTRVJfVkVS U0lPTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgfCAxJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBzZXJ2ZXIgLSZndDsgY2xpZW50Jm5i c3A7IHw8bzpwPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPGRpdj4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6MTEuMHB0Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+ PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIg ZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQiPk9rPG86cD48L286 cD48L3NwYW4+PC9mb250PjwvcD4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQg c2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7bXNv LWFzY2lpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWhhbnNpLWZvbnQtZmFtaWx5OkNhbGlicmk7 bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij48bzpwPiZu YnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQg c2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQ7bXNv LWFzY2lpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWhhbnNpLWZvbnQtZmFtaWx5OkNhbGlicmk7 bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7Ij5XaWxsIGZp eCBhcyDigJxjbGllbnQgLSZndDsgc2VydmVy4oCdLjxvOnA+PC9vOnA+PC9zcGFuPjwvZm9udD48 L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDttc28tYXNjaWktZm9udC1mYW1pbHk6Q2FsaWJy aTttc28taGFuc2ktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYmlkaS1mb250LWZhbWlseTomcXVv dDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48 L3A+DQo8ZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNpemU9IjIiIGZh Y2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0Ij48bzpwPiZuYnNwOzwv bzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9yZGVy Om5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDttc28tYm9yZGVyLWxlZnQtYWx0 OnNvbGlkICNDQ0NDQ0MgLjc1cHQ7cGFkZGluZzowY20gMGNtIDBjbSA2LjBwdDttYXJnaW4tbGVm dDo0LjhwdDttYXJnaW4tcmlnaHQ6MGNtIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNp emU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0Ij4rKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0rPGJyPg0KK3wgVkZJT19VU0VSX0RNQV9NQVAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgMiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3wgY2xpZW50IC0mZ3Q7IHNlcnZlciZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8 IFZGSU9fVVNFUl9ETUFfVU5NQVAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgfCAzJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBjbGllbnQgLSZndDsg c2VydmVyJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgVkZJT19VU0VSX0RFVklDRV9H RVRfSU5GTyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDQmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDt8IGNsaWVudCAtJmd0OyBzZXJ2ZXImbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+ DQorfCBWRklPX1VTRVJfREVWSUNFX0dFVF9SRUdJT05fSU5GTyB8IDUmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDt8IGNsaWVudCAtJmd0OyBzZXJ2ZXImbmJzcDsgfDxicj4NCisrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSs8 YnI+DQorfCBWRklPX1VTRVJfREVWSUNFX0dFVF9JUlFfSU5GTyZuYnNwOyAmbmJzcDsgfCA2Jm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBjbGllbnQgLSZndDsgc2VydmVyJm5ic3A7IHw8YnI+ DQorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rPGJyPg0KK3wgVkZJT19VU0VSX0RFVklDRV9TRVRfSVJRUyZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyB8IDcmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGNsaWVudCAt Jmd0OyBzZXJ2ZXImbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBWRklPX1VTRVJfUkVH SU9OX1JFQUQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDgmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGNsaWVudCAtJmd0OyBzZXJ2ZXImbmJzcDsgfDxicj4N CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLSs8YnI+DQorfCBWRklPX1VTRVJfUkVHSU9OX1dSSVRFJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IDkmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8 IGNsaWVudCAtJmd0OyBzZXJ2ZXImbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBWRklP X1VTRVJfRE1BX1JFQUQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7fCAxMCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgc2VydmVyIC0mZ3Q7IGNsaWVu dCZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IFZGSU9fVVNFUl9ETUFfV1JJVEUmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCAxMSZuYnNwOyAm bmJzcDsgJm5ic3A7IHwgc2VydmVyIC0mZ3Q7IGNsaWVudCZuYnNwOyB8PGJyPg0KKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Kzxicj4NCit8IFZGSU9fVVNFUl9WTV9JTlRFUlJVUFQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3wgMTImbmJzcDsgJm5ic3A7ICZuYnNwOyB8IHNlcnZlciAtJmd0OyBj bGllbnQmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBWRklPX1VTRVJfREVWSUNFX1JF U0VUJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IDEzJm5ic3A7ICZu YnNwOyAmbmJzcDsgfCBjbGllbnQgLSZndDsgc2VydmVyJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r PGJyPg0KK3wgVkZJT19VU0VSX0RJUlRZX1BBR0VTJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgfCAxNCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgY2xpZW50IC0mZ3Q7IHNl cnZlciZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCis8YnI+DQorPGJyPg0KKy4uIE5vdGU6 OiBTb21lIFZGSU8gZGVmaW5lcyBjYW5ub3QgYmUgcmV1c2VkIHNpbmNlIHRoZWlyIHZhbHVlcyBh cmU8YnI+DQorJm5ic3A7ICZuYnNwO2FyY2hpdGVjdHVyZS1zcGVjaWZpYyAoZS5nLiBWRklPX0lP TU1VX01BUF9ETUEpLjxicj4NCis8YnI+DQorSGVhZGVyPGJyPg0KKy0tLS0tLTxicj4NCitBbGwg bWVzc2FnZXMsIGJvdGggY29tbWFuZCBtZXNzYWdlcyBhbmQgcmVwbHkgbWVzc2FnZXMsIGFyZSBw cmVjZWRlZCBieSBhPGJyPg0KK2hlYWRlciB0aGF0IGNvbnRhaW5zIGJhc2ljIGluZm9ybWF0aW9u IGFib3V0IHRoZSBtZXNzYWdlLiBUaGUgaGVhZGVyIGlzPGJyPg0KK2ZvbGxvd2VkIGJ5IG1lc3Nh Z2Utc3BlY2lmaWMgZGF0YSBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb25zIGJlbG93Ljxicj4NCis8 YnI+DQorKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBO YW1lJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE9mZnNldCB8IFNp emUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrPT09PT09PT09PT09PT09PSs9 PT09PT09PSs9PT09PT09PT09PT09Kzxicj4NCit8IE1lc3NhZ2UgSUQmbmJzcDsgJm5ic3A7ICZu YnNwO3wgMCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgMiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tKzxicj4NCit8IENvbW1hbmQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCAyJm5i c3A7ICZuYnNwOyAmbmJzcDsgfCAyJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rPGJy Pg0KK3wgTWVzc2FnZSBzaXplJm5ic3A7ICZuYnNwO3wgNCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwg NCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tKzxicj4NCit8IEZsYWdzJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDgmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDQmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSs8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCArLS0tLS0rLS0tLS0tLS0tLS0t KyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7IHwgfCBCaXQgfCBEZWZpbml0aW9uIHwgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8ICs9PT09PSs9PT09PT09 PT09PT0rIHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgfCB8IDAtMyB8IFR5cGUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8 IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgfCArLS0tLS0rLS0tLS0tLS0tLS0tKyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgfCA0Jm5ic3A7ICZuYnNw O3wgTm9fcmVwbHkmbmJzcDsgJm5ic3A7fCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgKy0tLS0tKy0tLS0tLS0tLS0tLSsg fDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyB8IHwgNSZuYnNwOyAmbmJzcDt8IEVycm9yJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCB8 PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7IHwgKy0tLS0tKy0tLS0tLS0tLS0tLSsgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tKzxicj4NCit8IEVycm9yJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyB8IDEyJm5ic3A7ICZuYnNwOyAmbmJzcDt8IDQmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSs8YnI+DQorfCAmbHQ7bWVzc2FnZSBkYXRhJmd0OyB8IDE2Jm5ic3A7 ICZuYnNwOyAmbmJzcDt8IHZhcmlhYmxlJm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rPGJyPg0KKzxicj4NCisqICpNZXNzYWdlIElE KiBpZGVudGlmaWVzIHRoZSBtZXNzYWdlLCBhbmQgaXMgZWNob2VkIGluIHRoZSBjb21tYW5kJ3Mg cmVwbHk8YnI+DQorJm5ic3A7IG1lc3NhZ2UuIE1lc3NhZ2UgSURzIGJlbG9uZyBlbnRpcmVseSB0 byB0aGUgc2VuZGVyLCBjYW4gYmUgcmUtdXNlZCAoZXZlbjxicj4NCismbmJzcDsgY29uY3VycmVu dGx5KSBhbmQgdGhlIHJlY2VpdmVyIG11c3Qgbm90IG1ha2UgYW55IGFzc3VtcHRpb25zIGFib3V0 IHRoZWlyPGJyPg0KKyZuYnNwOyB1bmlxdWVuZXNzLjxicj4NCisqICpDb21tYW5kKiBzcGVjaWZp ZXMgdGhlIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQsIGxpc3RlZCBpbiBDb21tYW5kc18uPGJyPg0K KyogKk1lc3NhZ2Ugc2l6ZSogY29udGFpbnMgdGhlIHNpemUgb2YgdGhlIGVudGlyZSBtZXNzYWdl LCBpbmNsdWRpbmcgdGhlIGhlYWRlci48YnI+DQorKiAqRmxhZ3MqIGNvbnRhaW5zIGF0dHJpYnV0 ZXMgb2YgdGhlIG1lc3NhZ2U6PGJyPg0KKzxicj4NCismbmJzcDsgKiBUaGUgKlR5cGUqIGJpdHMg aW5kaWNhdGUgdGhlIG1lc3NhZ2UgdHlwZS48YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgKiZu YnNwOyAqQ29tbWFuZCogKHZhbHVlIDB4MCkgaW5kaWNhdGVzIGEgY29tbWFuZCBtZXNzYWdlLjxi cj4NCismbmJzcDsgJm5ic3A7ICombmJzcDsgKlJlcGx5KiAodmFsdWUgMHgxKSBpbmRpY2F0ZXMg YSByZXBseSBtZXNzYWdlIGFja25vd2xlZGdpbmcgYSBwcmV2aW91czxicj4NCismbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDtjb21tYW5kIHdpdGggdGhlIHNhbWUgbWVzc2FnZSBJRC48YnI+DQor Jm5ic3A7ICogKk5vX3JlcGx5KiBpbiBhIGNvbW1hbmQgbWVzc2FnZSBpbmRpY2F0ZXMgdGhhdCBu byByZXBseSBpcyBuZWVkZWQgZm9yIHRoaXMgY29tbWFuZC48YnI+DQorJm5ic3A7ICZuYnNwOyBU aGlzIGlzIGNvbW1vbmx5IHVzZWQgd2hlbiBtdWx0aXBsZSBjb21tYW5kcyBhcmUgc2VudCwgYW5k IG9ubHkgdGhlIGxhc3QgbmVlZHM8YnI+DQorJm5ic3A7ICZuYnNwOyBhY2tub3dsZWRnZW1lbnQu PGJyPg0KKyZuYnNwOyAqICpFcnJvciogaW4gYSByZXBseSBtZXNzYWdlIGluZGljYXRlcyB0aGUg Y29tbWFuZCBiZWluZyBhY2tub3dsZWRnZWQgaGFkPGJyPg0KKyZuYnNwOyAmbmJzcDsgYW4gZXJy b3IuIEluIHRoaXMgY2FzZSwgdGhlICpFcnJvciogZmllbGQgd2lsbCBiZSB2YWxpZC48YnI+DQor PGJyPg0KKyogKkVycm9yKiBpbiBhIHJlcGx5IG1lc3NhZ2UgaXMgYW4gb3B0aW9uYWwgVU5JWCBl cnJubyB2YWx1ZS4gSXQgbWF5IGJlIHplcm88YnI+DQorJm5ic3A7IGV2ZW4gaWYgdGhlIEVycm9y IGJpdCBpcyBzZXQgaW4gRmxhZ3MuIEl0IGlzIHJlc2VydmVkIGluIGEgY29tbWFuZCBtZXNzYWdl Ljxicj4NCis8YnI+DQorRWFjaCBjb21tYW5kIG1lc3NhZ2UgaW4gQ29tbWFuZHNfIG11c3QgYmUg cmVwbGllZCB0byB3aXRoIGEgcmVwbHkgbWVzc2FnZSwgdW5sZXNzIHRoZTxicj4NCittZXNzYWdl IHNldHMgdGhlICpOb19SZXBseSogYml0LiZuYnNwOyBUaGUgcmVwbHkgY29uc2lzdHMgb2YgdGhl IGhlYWRlciB3aXRoIHRoZSAqUmVwbHkqPGJyPg0KK2JpdCBzZXQsIHBsdXMgYW55IGFkZGl0aW9u YWwgZGF0YS48YnI+DQorPGJyPg0KK0lmIGFuIGVycm9yIG9jY3VycywgdGhlIHJlcGx5IG1lc3Nh Z2UgbXVzdCBvbmx5IGluY2x1ZGUgdGhlIHJlcGx5IGhlYWRlci48YnI+DQorPGJyPg0KK1ZGSU9f VVNFUl9WRVJTSU9OPGJyPg0KKy0tLS0tLS0tLS0tLS0tLS0tPGJyPg0KKzxicj4NCitUaGlzIGlz IHRoZSBpbml0aWFsIG1lc3NhZ2Ugc2VudCBieSB0aGUgY2xpZW50IGFmdGVyIHRoZSBzb2NrZXQg Y29ubmVjdGlvbiBpczxicj4NCitlc3RhYmxpc2hlZDo8bzpwPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+ PC9wPg0KPC9ibG9ja3F1b3RlPg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNp emU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0Ij48bzpw PiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8L2Rp dj4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2Fs aWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQiPkNvbnRyYWRpY3Rvcnkgd2l0aCB0 aGUgYWJvdmUuPG86cD48L286cD48L3NwYW4+PC9mb250PjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTEuMHB0Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQ7bXNvLWFzY2lpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWhhbnNpLWZvbnQt ZmFtaWx5OkNhbGlicmk7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFu JnF1b3Q7Ij5JbmRlZWQsIHRoaXMgd2lsbCBiZSBjb3JyZWN0IGFmdGVyIHdlIHVwZGF0ZSB0aGUg cmVzdCBvZiB0aGUgdGV4dC48bzpwPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPHAgY2xhc3M9 Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQ7bXNvLWFzY2lpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWhhbnNpLWZv bnQtZmFtaWx5OkNhbGlicmk7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJv bWFuJnF1b3Q7Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPGRpdj4NCjxi bG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0NDQ0NDIDEu MHB0O21zby1ib3JkZXItbGVmdC1hbHQ6c29saWQgI0NDQ0NDQyAuNzVwdDtwYWRkaW5nOjBjbSAw Y20gMGNtIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowY20iPg0KPHAgY2xh c3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZToxMS4wcHQiPis8YnI+DQorTWVzc2FnZSBmb3JtYXQ8YnI+DQorXl5eXl5eXl5e Xl5eXl48YnI+DQorPGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IE5hbWUmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7fCBWYWx1ZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKz09PT09PT09PT09 PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPGJyPg0KK3wg TWVzc2FnZSBJRCZuYnNwOyAmbmJzcDt8ICZsdDtJRCZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxi cj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSs8YnI+DQorfCBDb21tYW5kJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCAxJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IE1lc3NhZ2Ugc2l6ZSB8 IDE2ICsgdmVyc2lvbiBoZWFkZXIgKyB2ZXJzaW9uIGRhdGEgbGVuZ3RoIHw8YnI+DQorKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJy Pg0KK3wgRmxhZ3MmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBSZXBseSBiaXQgc2V0IGlu IHJlcGx5Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgRXJyb3ImbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgfCAwL2Vycm5vJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IFZl cnNpb24mbmJzcDsgJm5ic3A7ICZuYnNwOyB8IHZlcnNpb24gaGVhZGVyJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCis8YnI+DQorVmVyc2lv biBIZWFkZXIgRm9ybWF0PGJyPg0KK15eXl5eXl5eXl5eXl5eXl5eXl5eXjxicj4NCis8YnI+DQor Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTmFtZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgfCBPZmZzZXQgfCBTaXplJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7fDxicj4NCisrPT09PT09PT09PT09PT09Kz09PT09PT09Kz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs8YnI+DQorfCB2ZXJzaW9uIG1ham9yIHwg MTYmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCB2ZXJzaW9u IG1pbm9yIHwgMTgmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQor fCB2ZXJzaW9uIDxzcGFuIGNsYXNzPSJHcmFtRSI+ZGF0YSZuYnNwOyB8PC9zcGFuPiAyMiZuYnNw OyAmbmJzcDsgJm5ic3A7fCB2YXJpYWJsZSAoaW5jbHVkaW5nIHRlcm1pbmF0aW5nIE5VTCZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorfCZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7IHwgY2hhcmFjdGVyKS4gT3B0aW9uYWwuJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPG86cD48L286cD48L3Nw YW4+PC9mb250PjwvcD4NCjwvYmxvY2txdW90ZT4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFs Ij48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEx LjBwdCI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvcD4NCjwvZGl2Pg0KPGRpdj4N CjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFu IHN0eWxlPSJmb250LXNpemU6MTEuMHB0Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+ PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIg ZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQiPkFubm95aW5nIHRo YXQgdGhpcyB2ZXJzaW9uIHdvbid0IGJlIGVhc2lseSBodW1hbi1yZWFkYWJsZS4gKHlvdSBjYW4n dCBzaW1wbHkgbmV0Y2F0IHRvIGEgdmZpbyBzZXJ2ZXIgYW5kIGdldCB0aGUgdmVyc2lvbik8bzpw PjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZToxMS4wcHQiPmlpcmMsIGVhcmxpZXIgdmVyc2lvbnMgb2YgdGhlIHByb3Bvc2FsIGp1c3Qgc2Vu dCBhIGpzb24gbWVzc2FnZSBzdHJhaWdodCB3aXRob3V0IGEgaGVhZGVyLjxvOnA+PC9vOnA+PC9z cGFuPjwvZm9udD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9u dCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdCI+ PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9mb250PjwvcD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxl PSJmb250LXNpemU6MTEuMHB0Ij5UaGlzIGluaXRpYWwgdGV4dC1waGFzZSBpcyBpbWhvIG1vcmUg aW50ZXJlc3RpbmcsIGFzIHRoZSBiaW5hcnkgcHJvdG9jb2wgcmVxdWlyZW1lbnRzIGFyZSBtb3N0 bHkgZm9yIG1hY2hpbmUtY29udmVuaWVuY2UgYW5kIHBlcmZvcm1hbmNlIHJlYXNvbnMgd2hlbiB0 aGUgZGV2aWNlIGlzIGFjdHVhbGx5IHJ1bm5pbmcuPG86cD48L286cD48L3NwYW4+PC9mb250Pjwv cD4NCjwvZGl2Pg0KPGRpdj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNpemU9IjIiIGZh Y2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0Ij48bzpwPiZuYnNwOzwv bzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9u dCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtt c28tYXNjaWktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28taGFuc2ktZm9udC1mYW1pbHk6Q2FsaWJy aTttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPjxvOnA+ Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9u dCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtt c28tYXNjaWktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28taGFuc2ktZm9udC1mYW1pbHk6Q2FsaWJy aTttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPkl04oCZ cyBzaW1wbGVyIHRvIHBhcnNlIHRoZSBKU09OIHN0cmluZyBrbm93aW5nIHRoZSBleGFjdCB2ZXJz aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBw dDttc28tYXNjaWktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28taGFuc2ktZm9udC1mYW1pbHk6Q2Fs aWJyaTttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPjxv OnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8YmxvY2txdW90ZSBzdHlsZT0iYm9y ZGVyOm5vbmU7Ym9yZGVyLWxlZnQ6c29saWQgI0NDQ0NDQyAxLjBwdDttc28tYm9yZGVyLWxlZnQt YWx0OnNvbGlkICNDQ0NDQ0MgLjc1cHQ7cGFkZGluZzowY20gMGNtIDBjbSA2LjBwdDttYXJnaW4t bGVmdDo0LjhwdDttYXJnaW4tcmlnaHQ6MGNtIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxmb250 IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MTEuMHB0Ij4r PGJyPg0KK1ZlcnNpb24gRGF0YSBGb3JtYXQ8YnI+DQorXl5eXl5eXl5eXl5eXl5eXl5eXjxicj4N Cis8YnI+DQorVGhlIHZlcnNpb24gZGF0YSBpcyBhbiBvcHRpb25hbCBKU09OIGJ5dGUgYXJyYXkg d2l0aCB0aGUgZm9sbG93aW5nIGZvcm1hdDo8YnI+DQorPGJyPg0KKystLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rPGJyPg0KK3wgTmFtZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt8IFR5cGUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDt8IERlc2NyaXB0aW9uJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0K Kys9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0rPGJyPg0KK3wgYGAmcXVvdDtjYXBhYmlsaXRpZXMmcXVvdDtg YCB8IGNvbGxlY3Rpb24gb2YmbmJzcDsgJm5ic3A7IHwgQ29udGFpbnMgY29tbW9uIGNhcGFiaWxp dGllcyB0aGF0IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IG5hbWUvdmFsdWUgcGFpcnMgfCB0aGUg c2VuZGVyIHN1cHBvcnRzLiBPcHRpb25hbC4mbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSs8YnI+DQorPGJyPg0KK0NhcGFiaWxpdGllczo8YnI+DQorPGJyPg0KKystLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBOYW1lJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgVHlwZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgRGVzY3JpcHRpb24mbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt8PGJyPg0KKys9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09 PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs8YnI+DQorfCBgYCZx dW90O21heF9mZHMmcXVvdDtgYCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgbnVtYmVyJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE1heGltdW0gbnVtYmVyIG9mIGZpbGUg ZGVzY3JpcHRvcnMmbmJzcDsgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IHRoZSBjYW4g YmUgcmVjZWl2ZWQgYnkgdGhlIHNlbmRlci4mbmJzcDsgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyB8IE9wdGlvbmFsLiBJZiBub3Qgc3BlY2lmaWVkIHRoZW4gdGhlIHw8YnI+DQorfCZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgfCByZWNlaXZlciBtdXN0IGFzc3VtZSZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCit8Jm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 IHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyB8IGBgJnF1b3Q7bWF4X2ZkcyZxdW90Oz0xYGAuJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQor Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IGBgJnF1b3Q7bWF4X21zZ19zaXplJnF1b3Q7 YGAgfCBudW1iZXImbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTWF4 aW11bSBtZXNzYWdlIHNpemUgaW4gYnl0ZXMgdGhhdCZuYnNwOyB8PGJyPg0KK3wmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7IHwgdGhlIHJlY2VpdmVyIGNhbiBoYW5kbGUsIGluY2x1ZGluZyZuYnNwOyB8PGJy Pg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgdGhlIGhlYWRlci4gT3B0aW9uYWwuIElmIG5vdCZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwg c3BlY2lmaWVkIHRoZW4gdGhlIHJlY2VpdmVyIG11c3QmbmJzcDsgJm5ic3A7IHw8YnI+DQorfCZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgfCBhc3N1bWUgYGAmcXVvdDttYXhfbXNnX3NpemUmcXVvdDs9NDA5 NmBgLiZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJy Pg0KK3wgYGAmcXVvdDttaWdyYXRpb24mcXVvdDtgYCZuYnNwOyAmbmJzcDsgfCBjb2xsZWN0aW9u IG9mJm5ic3A7ICZuYnNwOyB8IE1pZ3JhdGlvbiBjYXBhYmlsaXR5IHBhcmFtZXRlcnMuIElmIHw8 YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyB8IG5hbWUvdmFsdWUgcGFpcnMgfCBtaXNzaW5nIHRoZW4gbWln cmF0aW9uIGlzIG5vdCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorfCZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgfCBzdXBwb3J0ZWQgYnkgdGhlIHNlbmRlci4mbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+ DQorPGJyPg0KK1RoZSBtaWdyYXRpb24gY2FwYWJpbGl0eSBjb250YWlucyB0aGUgZm9sbG93aW5n IG5hbWUvdmFsdWUgcGFpcnM6PGJyPg0KKzxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wg TmFtZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFR5cGUmbmJzcDsgJm5ic3A7 fCBEZXNjcmlwdGlvbiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrPT09PT09PT09PT09PT0rPT09PT09PT0r PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPGJyPg0KK3wg YGAmcXVvdDtwZ3NpemUmcXVvdDtgYCB8IG51bWJlciB8IFBhZ2Ugc2l6ZSBvZiBkaXJ0eSBwYWdl cyBiaXRtYXAuIFRoZSBzbWFsbGVzdCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IGJl dHdlZW4gdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlciBpcyB1c2VkLiZuYnNwOyAmbmJzcDsgfDxi cj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KKzxicj4NCis8YnI+DQorLi4gX1ZlcnNpb246PGJy Pg0KKzxicj4NCitWZXJzaW9uaW5nIGFuZCBGZWF0dXJlIFN1cHBvcnQ8YnI+DQorXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0KK1Vwb24gYWNjZXB0aW5nIGEgY29ubmVjdGlvbiwg dGhlIGNsaWVudCBtdXN0IHNlbmQgYSBWRklPX1VTRVJfVkVSU0lPTiBtZXNzYWdlPGJyPg0KK3By b3Bvc2luZyBhIHByb3RvY29sIHZlcnNpb24gYW5kIGEgc2V0IG9mIGNhcGFiaWxpdGllcy4gVGhl IHNlcnZlciBjb21wYXJlczxicj4NCit0aGVzZSB3aXRoIHRoZSB2ZXJzaW9ucyBhbmQgY2FwYWJp bGl0aWVzIGl0IHN1cHBvcnRzIGFuZCBzZW5kcyBhPGJyPg0KK1ZGSU9fVVNFUl9WRVJTSU9OIHJl cGx5IGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHJ1bGVzLjxvOnA+PC9vOnA+PC9zcGFuPjwv Zm9udD48L3A+DQo8L2Jsb2NrcXVvdGU+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZv bnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQi PjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBj bGFzcz0iTXNvTm9ybWFsIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExLjBwdCI+SSBkb24ndCB0aGluayB0aGUgc2VydmVyIHdpbGwgYmUgYXMg YWRhcHRhYmxlIGFzIHRoZSBjbGllbnQuIEFnYWluLCBpdCBmZWVscyBiYWNrd2FyZCB0byBtZS48 bzpwPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1z b05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZToxMS4wcHQiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8L2Rpdj4N CjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpzb2xpZCAjQ0NDQ0ND IDEuMHB0O21zby1ib3JkZXItbGVmdC1hbHQ6c29saWQgI0NDQ0NDQyAuNzVwdDtwYWRkaW5nOjBj bSAwY20gMGNtIDYuMHB0O21hcmdpbi1sZWZ0OjQuOHB0O21hcmdpbi1yaWdodDowY20iPg0KPHAg Y2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZToxMS4wcHQiPis8YnI+DQorKiBUaGUgbWFqb3IgdmVyc2lvbiBpbiB0aGUg cmVwbHkgbXVzdCBiZSB0aGUgc2FtZSBhcyBwcm9wb3NlZC4gSWYgdGhlIGNsaWVudDxicj4NCism bmJzcDsgZG9lcyBub3Qgc3VwcG9ydCB0aGUgcHJvcG9zZWQgbWFqb3IsIGl0IGNsb3NlcyB0aGUg Y29ubmVjdGlvbi48YnI+DQorKiBUaGUgbWlub3IgdmVyc2lvbiBpbiB0aGUgcmVwbHkgbXVzdCBi ZSBlcXVhbCB0byBvciBsZXNzIHRoYW4gdGhlIG1pbm9yPGJyPg0KKyZuYnNwOyB2ZXJzaW9uIHBy b3Bvc2VkLjxicj4NCisqIFRoZSBjYXBhYmlsaXR5IGxpc3QgbXVzdCBiZSBhIHN1YnNldCBvZiB0 aG9zZSBwcm9wb3NlZC4gSWYgdGhlIHNlcnZlcjxicj4NCismbmJzcDsgcmVxdWlyZXMgYSBjYXBh YmlsaXR5IHRoZSBjbGllbnQgZGlkIG5vdCBpbmNsdWRlLCBpdCBjbG9zZXMgdGhlIGNvbm5lY3Rp b24uPGJyPg0KKzxicj4NCitUaGUgcHJvdG9jb2wgbWFqb3IgdmVyc2lvbiB3aWxsIG9ubHkgY2hh bmdlIHdoZW4gaW5jb21wYXRpYmxlIHByb3RvY29sIGNoYW5nZXM8YnI+DQorYXJlIG1hZGUsIHN1 Y2ggYXMgY2hhbmdpbmcgdGhlIG1lc3NhZ2UgZm9ybWF0LiBUaGUgbWlub3IgdmVyc2lvbiBtYXkg Y2hhbmdlPGJyPg0KK3doZW4gY29tcGF0aWJsZSBjaGFuZ2VzIGFyZSBtYWRlLCBzdWNoIGFzIGFk ZGluZyBuZXcgbWVzc2FnZXMgb3IgY2FwYWJpbGl0aWVzLDxicj4NCitCb3RoIHRoZSBjbGllbnQg YW5kIHNlcnZlciBtdXN0IHN1cHBvcnQgYWxsIG1pbm9yIHZlcnNpb25zIGxlc3MgdGhhbiB0aGU8 YnI+DQorbWF4aW11bSBtaW5vciB2ZXJzaW9uIGl0IHN1cHBvcnRzLiBFLmcuLCBhbiBpbXBsZW1l bnRhdGlvbiB0aGF0IHN1cHBvcnRzPGJyPg0KK3ZlcnNpb24gMS4zIG11c3QgYWxzbyBzdXBwb3J0 IDEuMCB0aHJvdWdoIDEuMi48YnI+DQorPGJyPg0KK1doZW4gbWFraW5nIGEgY2hhbmdlIHRvIHRo aXMgc3BlY2lmaWNhdGlvbiwgdGhlIHByb3RvY29sIHZlcnNpb24gbnVtYmVyIG11c3Q8YnI+DQor YmUgaW5jbHVkZWQgaW4gdGhlIGZvcm0gJnF1b3Q7YWRkZWQgaW4gdmVyc2lvbiBYLlkmcXVvdDs8 YnI+DQorPGJyPg0KKzxicj4NCitWRklPX1VTRVJfRE1BX01BUDxicj4NCistLS0tLS0tLS0tLS0t LS0tLTxicj4NCis8YnI+DQorTWVzc2FnZSBGb3JtYXQ8YnI+DQorXl5eXl5eXl5eXl5eXl48YnI+ DQorPGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0K K3wgTmFtZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFZhbHVlJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxi cj4NCisrPT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09Kzxicj4NCit8IE1l c3NhZ2UgSUQmbmJzcDsgJm5ic3A7fCAmbHQ7SUQmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IENvbW1hbmQmbmJz cDsgJm5ic3A7ICZuYnNwOyB8IDImbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBNZXNzYWdlIHNpemUgfCAx NiArIHRhYmxlIHNpemUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IEZsYWdzJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7IHwgUmVwbHkgYml0IHNldCBpbiByZXBseSB8PGJyPg0KKystLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgRXJyb3ImbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfCAwL2Vycm5vJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgVGFibGUmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgfCBhcnJheSBvZiB0YWJsZSBlbnRyaWVzIHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorPGJyPg0KK1RoaXMgY29tbWFuZCBtZXNzYWdl IGlzIHNlbnQgYnkgdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIGluZm9ybSBpdCBvZiB0aGU8 YnI+DQorbWVtb3J5IHJlZ2lvbnMgdGhlIHNlcnZlciBjYW4gYWNjZXNzLiBJdCBtdXN0IGJlIHNl bnQgYmVmb3JlIHRoZSBzZXJ2ZXIgY2FuPGJyPg0KK3BlcmZvcm0gYW55IERNQSB0byB0aGUgY2xp ZW50LiBJdCBpcyBub3JtYWxseSBzZW50IGRpcmVjdGx5IGFmdGVyIHRoZSB2ZXJzaW9uPGJyPg0K K2hhbmRzaGFrZSBpcyBjb21wbGV0ZWQsIGJ1dCBtYXkgYWxzbyBvY2N1ciB3aGVuIG1lbW9yeSBp cyBhZGRlZCB0byB0aGUgY2xpZW50LDxicj4NCitvciBpZiB0aGUgY2xpZW50IHVzZXMgYSB2SU9N TVUuIElmIHRoZSBjbGllbnQgZG9lcyBub3QgZXhwZWN0IHRoZSBzZXJ2ZXIgdG88YnI+DQorcGVy Zm9ybSBETUEgdGhlbiBpdCBkb2VzIG5vdCBuZWVkIHRvIHNlbmQgdG8gdGhlIHNlcnZlciBWRklP X1VTRVJfRE1BX01BUDxicj4NCitjb21tYW5kcy4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdCBuZWVk IHRvIHBlcmZvcm0gRE1BIHRoZW4gaXQgY2FuIGlnbm9yZSBzdWNoPGJyPg0KK2NvbW1hbmRzIGJ1 dCBpdCBtdXN0IHN0aWxsIHJlcGx5IHRvIHRoZW0uIFRoZSB0YWJsZSBpcyBhbiBhcnJheSBvZiB0 aGU8YnI+DQorZm9sbG93aW5nIHN0cnVjdHVyZTo8YnI+DQorPGJyPg0KK1RhYmxlIGVudHJ5IGZv cm1hdDxicj4NCiteXl5eXl5eXl5eXl5eXl5eXl48YnI+DQorPGJyPg0KKystLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTmFtZSZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyB8IE9mZnNldCB8IFNpemUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4N CisrPT09PT09PT09PT09PSs9PT09PT09PSs9PT09PT09PT09PT09Kzxicj4NCit8IEFkZHJlc3Mm bmJzcDsgJm5ic3A7ICZuYnNwO3wgMCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgOCZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tKzxicj4NCit8IFNpemUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgfCA4Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfCA4Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rPGJyPg0KK3wgT2Zmc2V0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfCAxNiZuYnNwOyAmbmJzcDsg Jm5ic3A7fCA4Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0K KystLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgUHJvdGVjdGlv bnMgfCAyNCZuYnNwOyAmbmJzcDsgJm5ic3A7fCA0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rPGJyPg0KK3wgRmxhZ3MmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IDI4Jm5ic3A7ICZu YnNwOyAmbmJzcDt8IDQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8 YnI+DQorKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSs8YnI+DQorfCZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgKy0tLS0tKy0tLS0t LS0tLS0tLSsgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7fCB8IEJpdCB8IERlZmluaXRpb24gfCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICs9PT09PSs9PT09PT09PT09PT0rIHw8 YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg fCAwJm5ic3A7ICZuYnNwO3wgTWFwcGFibGUmbmJzcDsgJm5ic3A7fCB8PGJyPg0KK3wmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICstLS0tLSstLS0tLS0t LS0tLS0rIHw8YnI+DQorKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSs8YnI+ DQorPGJyPg0KKyogKkFkZHJlc3MqIGlzIHRoZSBiYXNlIERNQSBhZGRyZXNzIG9mIHRoZSByZWdp b24uPGJyPg0KKyogKlNpemUqIGlzIHRoZSBzaXplIG9mIHRoZSByZWdpb24uPGJyPg0KKyogKk9m ZnNldCogaXMgdGhlIGZpbGUgb2Zmc2V0IG9mIHRoZSByZWdpb24gd2l0aCByZXNwZWN0IHRvIHRo ZSBhc3NvY2lhdGVkIGZpbGU8YnI+DQorJm5ic3A7IGRlc2NyaXB0b3IuPGJyPg0KKyogKlByb3Rl Y3Rpb25zKiBhcmUgdGhlIHJlZ2lvbidzIHByb3RlY3Rpb24gYXR0cmlidXRlcyBhcyBlbmNvZGVk IGluPGJyPg0KKyZuYnNwOyBgYCZsdDtzeXMvbW1hbi5oJmd0O2BgLjxicj4NCisqICpGbGFncyog Y29udGFpbnMgdGhlIGZvbGxvd2luZyByZWdpb24gYXR0cmlidXRlczo8YnI+DQorPGJyPg0KKyZu YnNwOyAqICpNYXBwYWJsZSogaW5kaWNhdGVzIHRoYXQgdGhlIHJlZ2lvbiBjYW4gYmUgbWFwcGVk IHZpYSB0aGUgbW1hcCgpIHN5c3RlbTxicj4NCismbmJzcDsgJm5ic3A7IGNhbGwgdXNpbmcgdGhl IGZpbGUgZGVzY3JpcHRvciBwcm92aWRlZCBpbiB0aGUgbWVzc2FnZSBtZXRhLWRhdGEuPGJyPg0K Kzxicj4NCitUaGlzIHN0cnVjdHVyZSBpcyAzMiBieXRlcyBpbiBzaXplLCBzbyB0aGUgbWVzc2Fn ZSBzaXplIGlzOjxicj4NCisxNiArICgjIG9mIHRhYmxlIGVudHJpZXMgKiAzMikuPGJyPg0KKzxi cj4NCitJZiBhIERNQSByZWdpb24gYmVpbmcgYWRkZWQgY2FuIGJlIGRpcmVjdGx5IG1hcHBlZCBi eSB0aGUgc2VydmVyLCBhbiBhcnJheSBvZjxicj4NCitmaWxlIGRlc2NyaXB0b3JzIG11c3QgYmUg c2VudCBhcyBwYXJ0IG9mIHRoZSBtZXNzYWdlIG1ldGEtZGF0YS4gRWFjaCBtYXBwYWJsZTxicj4N CityZWdpb24gZW50cnkgbXVzdCBoYXZlIGEgY29ycmVzcG9uZGluZyBmaWxlIGRlc2NyaXB0b3Iu IE9uIEFGX1VOSVggc29ja2V0cywgdGhlPGJyPg0KK2ZpbGUgZGVzY3JpcHRvcnMgbXVzdCBiZSBw YXNzZWQgYXMgU0NNX1JJR0hUUyB0eXBlIGFuY2lsbGFyeSBkYXRhLiBPdGhlcndpc2UsPGJyPg0K K2lmIGEgRE1BIHJlZ2lvbiBjYW5ub3QgYmUgZGlyZWN0bHkgbWFwcGVkIGJ5IHRoZSBzZXJ2ZXIs IGl0IGNhbiBiZSBhY2Nlc3NlZCBieTxicj4NCit0aGUgc2VydmVyIHVzaW5nIFZGSU9fVVNFUl9E TUFfUkVBRCBhbmQgVkZJT19VU0VSX0RNQV9XUklURSBtZXNzYWdlcywgZXhwbGFpbmVkPGJyPg0K K2luIGBSZWFkIGFuZCBXcml0ZSBPcGVyYXRpb25zYF8uIEEgY29tbWFuZCB0byBtYXAgb3ZlciBh biBleGlzdGluZyByZWdpb24gbXVzdDxicj4NCitiZSBmYWlsZWQgYnkgdGhlIHNlcnZlciB3aXRo IGBgRUVYSVNUYGAgc2V0IGluIGVycm9yIGZpZWxkIGluIHRoZSByZXBseS48YnI+DQorPGJyPg0K K0FkZGluZyBtdWx0aXBsZSBETUEgcmVnaW9ucyBjYW4gcGFydGlhbGx5IGZhaWwuIFRoZSByZXNw b25zZSBkb2VzIG5vdCBpbmRpY2F0ZTxicj4NCit3aGljaCByZWdpb25zIHdlcmUgYWRkZWQgYW5k IHdoaWNoIHdlcmUgbm90LCB0aGVyZWZvcmUgaXQgaXMgYSBjbGllbnQ8YnI+DQoraW1wbGVtZW50 YXRpb24gZGV0YWlsIGhvdyB0byByZWNvdmVyIGZyb20gdGhlIGZhaWx1cmUuPGJyPg0KKzxicj4N CisuLiBOb3RlOjo8YnI+DQorJm5ic3A7ICZuYnNwO1RoZSBzZXJ2ZXIgY2FuIG9wdGlvbmFsbHkg cmVtb3ZlIHN1Y2Nlc2Z1bGx5IGFkZGVkIERNQSByZWdpb25zIG1ha2luZyB0aGlzPGJyPg0KKyZu YnNwOyAmbmJzcDtvcGVyYXRpb24gYXRvbWljLjxicj4NCismbmJzcDsgJm5ic3A7VGhlIGNsaWVu dCBjYW4gcmVjb3ZlciBieSBhdHRlbXB0aW5nIHRvIHVubWFwIG9uZSBieSBvbmUgYWxsIHRoZSBE TUEgcmVnaW9uczxicj4NCismbmJzcDsgJm5ic3A7aW4gdGhlIFZGSU9fVVNFUl9ETUFfTUFQIGNv bW1hbmQsIGlnbm9yaW5nIGZhaWx1cmVzIGZvciByZWdpb25zIHRoYXQgZG8gbm90PGJyPg0KKyZu YnNwOyAmbmJzcDtleGlzdC48YnI+DQorPGJyPg0KKzxicj4NCis8YnI+DQorVkZJT19VU0VSX0RN QV9VTk1BUDxicj4NCistLS0tLS0tLS0tLS0tLS0tLS0tPGJyPg0KKzxicj4NCitNZXNzYWdlIEZv cm1hdDxicj4NCiteXl5eXl5eXl5eXl5eXjxicj4NCis8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBOYW1lJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3wgVmFsdWUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKys9PT09PT09PT09PT09PSs9PT09PT09 PT09PT09PT09PT09PT09PT0rPGJyPg0KK3wgTWVzc2FnZSBJRCZuYnNwOyAmbmJzcDt8ICZsdDtJ RCZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rPGJyPg0KK3wgQ29tbWFuZCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgMyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKzxicj4NCit8IE1lc3NhZ2Ugc2l6ZSB8IDE2ICsgdGFibGUgc2l6ZSZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rPGJyPg0KK3wgRmxhZ3MmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBSZXBseSBi aXQgc2V0IGluIHJlcGx5IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSs8YnI+DQorfCBFcnJvciZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDAvZXJy bm8mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQor fCBUYWJsZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IGFycmF5IG9mIHRhYmxlIGVudHJp ZXMgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4N Cis8YnI+DQorVGhpcyBjb21tYW5kIG1lc3NhZ2UgaXMgc2VudCBieSB0aGUgY2xpZW50IHRvIHRo ZSBzZXJ2ZXIgdG8gaW5mb3JtIGl0IHRoYXQgYTxicj4NCitETUEgcmVnaW9uLCBwcmV2aW91c2x5 IG1hZGUgYXZhaWxhYmxlIHZpYSBhIFZGSU9fVVNFUl9ETUFfTUFQIGNvbW1hbmQgbWVzc2FnZSw8 YnI+DQoraXMgbm8gbG9uZ2VyIGF2YWlsYWJsZSBmb3IgRE1BLiBJdCB0eXBpY2FsbHkgb2NjdXJz IHdoZW4gbWVtb3J5IGlzIHN1YnRyYWN0ZWQ8YnI+DQorZnJvbSB0aGUgY2xpZW50IG9yIGlmIHRo ZSBjbGllbnQgdXNlcyBhIHZJT01NVS4gSWYgdGhlIGNsaWVudCBkb2VzIG5vdCBleHBlY3Q8YnI+ DQordGhlIHNlcnZlciB0byBwZXJmb3JtIERNQSB0aGVuIGl0IGRvZXMgbm90IG5lZWQgdG8gc2Vu ZCB0byB0aGUgc2VydmVyPGJyPg0KK1ZGSU9fVVNFUl9ETUFfVU5NQVAgY29tbWFuZHMuIElmIHRo ZSBzZXJ2ZXIgZG9lcyBub3QgbmVlZCB0byBwZXJmb3JtIERNQSB0aGVuPGJyPg0KK2l0IGNhbiBp Z25vcmUgc3VjaCBjb21tYW5kcyBidXQgaXQgbXVzdCBzdGlsbCByZXBseSB0byB0aGVtLiBUaGUg dGFibGUgaXMgYW48YnI+DQorYXJyYXkgb2YgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6PGJyPg0K Kzxicj4NCitUYWJsZSBlbnRyeSBmb3JtYXQ8YnI+DQorXl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0K Kzxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IE5hbWUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7fCBPZmZzZXQgfCBTaXplJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKys9PT09PT09PT09PT09PSs9PT09PT09 PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPGJyPg0KK3wgQWRkcmVz cyZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgMCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgOCZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBTaXplJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3wgOCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgOCZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3w8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBPZmZzZXQmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt8IDE2Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IDgmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0K KystLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rPGJyPg0KK3wgUHJvdGVjdGlvbnMmbmJzcDsgfCAyNCZuYnNwOyAmbmJzcDsgJm5i c3A7fCA0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IEZsYWdzJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgMjgmbmJzcDsgJm5ic3A7ICZuYnNwO3wgNCZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8ICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgfCBCaXQgfCBEZWZpbml0aW9uJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgKz09PT09Kz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09KyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfCB8IDAmbmJzcDsgJm5ic3A7fCBWRklPX0RNQV9VTk1BUF9G TEFHX0dFVF9ESVJUWV9CSVRNQVAgfCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCArLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rIHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBWRklPIEJpdG1hcHMgfCAz MiZuYnNwOyAmbmJzcDsgJm5ic3A7fCB2YXJpYWJsZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorPGJyPg0KKyogKkFk ZHJlc3MqIGlzIHRoZSBiYXNlIERNQSBhZGRyZXNzIG9mIHRoZSByZWdpb24uPGJyPg0KKyogKlNp emUqIGlzIHRoZSBzaXplIG9mIHRoZSByZWdpb24uPGJyPg0KKyogKk9mZnNldCogaXMgdGhlIGZp bGUgb2Zmc2V0IG9mIHRoZSByZWdpb24gd2l0aCByZXNwZWN0IHRvIHRoZSBhc3NvY2lhdGVkIGZp bGU8YnI+DQorJm5ic3A7IGRlc2NyaXB0b3IuPGJyPg0KKyogKlByb3RlY3Rpb25zKiBhcmUgdGhl IHJlZ2lvbidzIHByb3RlY3Rpb24gYXR0cmlidXRlcyBhcyBlbmNvZGVkIGluPGJyPg0KKyZuYnNw OyBgYCZsdDtzeXMvbW1hbi5oJmd0O2BgLjxicj4NCisqICpGbGFncyogY29udGFpbnMgdGhlIGZv bGxvd2luZyByZWdpb24gYXR0cmlidXRlczo8YnI+DQorPGJyPg0KKyZuYnNwOyAqICpWRklPX0RN QV9VTk1BUF9GTEFHX0dFVF9ESVJUWV9CSVRNQVAqIGluZGljYXRlcyB0aGF0IGEgZGlydHkgcGFn ZSBiaXRtYXA8YnI+DQorJm5ic3A7ICZuYnNwOyBtdXN0IGJlIHBvcHVsYXRlZCBiZWZvcmUgdW5t YXBwaW5nIHRoZSBETUEgcmVnaW9uLiBUaGUgY2xpZW50IG11c3QgcHJvdmlkZTxicj4NCismbmJz cDsgJm5ic3A7IGEgYGBzdHJ1Y3QgdmZpb19iaXRtYXBgYCBpbiB0aGUgVkZJTyBiaXRtYXBzIGZp ZWxkIGZvciBlYWNoIHJlZ2lvbiwgd2l0aDxicj4NCismbmJzcDsgJm5ic3A7IHRoZSBgYHZmaW9f Yml0bWFwLnBnc2l6ZWBgIGFuZCBgYHZmaW9fYml0bWFwLnNpemVgYCBmaWVsZHMgaW5pdGlhbGl6 ZWQuPGJyPg0KKzxicj4NCisqICpWRklPIEJpdG1hcHMqIGNvbnRhaW5zIG9uZSBgYHN0cnVjdCB2 ZmlvX2JpdG1hcGBgIHBlciByZWdpb24gaWY8YnI+DQorJm5ic3A7IGBgVkZJT19ETUFfVU5NQVBf RkxBR19HRVRfRElSVFlfQklUTUFQYGAgaXMgc2V0IGluIEZsYWdzLjxicj4NCis8YnI+DQorVkZJ TyBiaXRtYXAgZm9ybWF0PGJyPg0KK15eXl5eXl5eXl5eXl5eXl5eXjxicj4NCis8YnI+DQorKy0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLSs8YnI+DQorfCBOYW1lJm5ic3A7ICZuYnNwO3wgT2Zmc2V0 IHwgU2l6ZSB8PGJyPg0KKys9PT09PT09PSs9PT09PT09PSs9PT09PT0rPGJyPg0KK3wgcGdzaXpl IHwgMCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgOCZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tKzxicj4NCit8IHNpemUmbmJzcDsgJm5ic3A7fCA4Jm5ic3A7ICZu YnNwOyAmbmJzcDsgfCA4Jm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLSstLS0tLS0tLSst LS0tLS0rPGJyPg0KK3wgZGF0YSZuYnNwOyAmbmJzcDt8IDE2Jm5ic3A7ICZuYnNwOyAmbmJzcDt8 IDgmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLSs8YnI+DQor PGJyPg0KKyogKnBnc2l6ZSogaXMgdGhlIHBhZ2Ugc2l6ZSBmb3IgdGhlIGJpdG1hcCwgaW4gYnl0 ZXMuPGJyPg0KKyogKnNpemUqIGlzIHRoZSBzaXplIGZvciB0aGUgYml0bWFwLCBpbiBieXRlcywg ZXhjbHVkaW5nIHRoZSBWRklPIGJpdG1hcCBoZWFkZXIuPGJyPg0KKyogKmRhdGEqIFRoaXMgZmll bGQgaXMgdW51c2VkIGluIHZmaW8tdXNlci48YnI+DQorPGJyPg0KK1RoZSBWRklPIGJpdG1hcCBz dHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbiBgYCZsdDtsaW51eC92ZmlvLmgmZ3Q7YGA8YnI+DQorKGBg c3RydWN0IHZmaW9fYml0bWFwYGApLjxicj4NCis8YnI+DQorSWYgYGBWRklPX0RNQV9VTk1BUF9G TEFHX0dFVF9ESVJUWV9CSVRNQVBgYCBpcyBub3Qgc2V0IGluIEZsYWdzIHRoZW4gdGhlIHNpemU8 YnI+DQorb2YgdGhlIG1lc3NhZ2UgaXM6IDE2ICsgKCMgb2YgdGFibGUgZW50cmllcyAqIDMyKS48 YnI+DQorSWYgYGBWRklPX0RNQV9VTk1BUF9GTEFHX0dFVF9ESVJUWV9CSVRNQVBgYCBpcyBzZXQg aW4gRmxhZ3MgdGhlbiB0aGUgc2l6ZSBvZjxicj4NCit0aGUgbWVzc2FnZSBpczogMTYgKyAoIyBv ZiB0YWJsZSBlbnRyaWVzICogNTYpLjxicj4NCis8YnI+DQorVXBvbiByZWNlaXZpbmcgYSBWRklP X1VTRVJfRE1BX1VOTUFQIGNvbW1hbmQsIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgbWFwcGVk PGJyPg0KK3RoZW4gdGhlIHNlcnZlciBtdXN0IHJlbGVhc2UgYWxsIHJlZmVyZW5jZXMgdG8gdGhh dCBETUEgcmVnaW9uIGJlZm9yZSByZXBseWluZyw8YnI+DQord2hpY2ggaW5jbHVkZXMgcG90ZW50 aWFsbHkgaW4gZmxpZ2h0IERNQSB0cmFuc2FjdGlvbnMuIFJlbW92aW5nIGEgcG9ydGlvbiBvZiBh PGJyPg0KK0RNQSByZWdpb24gaXMgcG9zc2libGUuIElmIHRoZSBWRklPX0RNQV9VTk1BUF9GTEFH X0dFVF9ESVJUWV9CSVRNQVAgYml0IGlzIHNldDxicj4NCitpbiB0aGUgcmVxdWVzdCwgdGhlIHNl cnZlciBtdXN0IGFwcGVuZCB0byB0aGUgaGVhZGVyIHRoZSBgYHN0cnVjdCB2ZmlvX2JpdG1hcGBg PGJyPg0KK3JlY2VpdmVkIGluIHRoZSBjb21tYW5kIGZvbGxvd2VkIGJ5IHRoZSBiaXRtYXAsIGZv ciBlYWNoIHJlZ2lvbi4gVGh1cywgdGhlPGJyPg0KK21lc3NhZ2Ugc2l6ZSB0aGUgY2xpZW50IHNo b3VsZCBleHBlY3QgaXMgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBwbHVzIHRoZSBzaXplPGJyPg0K K29mIGBgc3RydWN0IHZmaW9fYml0bWFwYGAgcGx1cyBgYHZmaW9fYml0bWFwLnNpemVgYCBieXRl cyBmb3IgZWFjaCByZWdpb24uIEVhY2g8YnI+DQorYml0IGluIHRoZSBiaXRtYXAgcmVwcmVzZW50 cyBvbmUgcGFnZSBvZiBzaXplIGBgdmZpb19iaXRtYXAucGdzaXplYGAuPGJyPg0KKzxicj4NCis8 YnI+DQorVkZJT19VU0VSX0RFVklDRV9HRVRfSU5GTzxicj4NCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tPGJyPg0KKzxicj4NCitNZXNzYWdlIGZvcm1hdDxicj4NCiteXl5eXl5eXl5eXl5eXjxi cj4NCis8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r PGJyPg0KK3wgTmFtZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFZhbHVlJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKys9PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09 PT09PT09PT09PT09Kzxicj4NCit8IE1lc3NhZ2UgSUQmbmJzcDsgJm5ic3A7fCAmbHQ7SUQmZ3Q7 Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IENvbW1hbmQmbmJzcDsgJm5ic3A7ICZuYnNw OyB8IDQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBNZXNzYWdlIHNpemUg fCAxNiBpbiBjb21tYW5kLCAzMiBpbiByZXBseSB8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IEZsYWdzJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7IHwgUmVwbHkgYml0IHNldCBpbiByZXBseSZuYnNwOyAmbmJzcDsgJm5ic3A7fDxi cj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQor fCBFcnJvciZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDAvZXJybm8mbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg fDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+ DQorfCBEZXZpY2UgaW5mbyZuYnNwOyB8IFZGSU8gZGV2aWNlIGluZm8mbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KKzxicj4NCitUaGlzIGNvbW1hbmQgbWVzc2FnZSBp cyBzZW50IGJ5IHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBxdWVyeSBmb3IgYmFzaWM8YnI+ DQoraW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldmljZS4gT25seSB0aGUgbWVzc2FnZSBoZWFkZXIg aXMgbmVlZGVkIGluIHRoZSBjb21tYW5kPGJyPg0KK21lc3NhZ2UuJm5ic3A7IFRoZSBWRklPIGRl dmljZSBpbmZvIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluIGBgJmx0O2xpbnV4L3ZmaW8uaCZndDtg YDxicj4NCisoYGBzdHJ1Y3QgdmZpb19kZXZpY2VfaW5mb2BgKS48YnI+DQorPGJyPg0KK1ZGSU8g ZGV2aWNlIGluZm8gZm9ybWF0PGJyPg0KK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0KKzxi cj4NCisrLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8 YnI+DQorfCBOYW1lJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgT2Zmc2V0IHwgU2l6ZSZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKys9PT09PT09PT09PT09Kz09PT09PT09Kz09PT09PT09 PT09PT09PT09PT09PT09PT09Kzxicj4NCit8IGFyZ3N6Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7fCAxNiZuYnNwOyAmbmJzcDsgJm5ic3A7fCA0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg fDxicj4NCisrLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSs8YnI+DQorfCBmbGFncyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMjAmbmJzcDsgJm5i c3A7ICZuYnNwO3wgNCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICstLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IHwgQml0IHwgRGVmaW5pdGlvbiZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgKz09PT09Kz09PT09PT09PT09PT09 PT09PT09PT09PT0rIHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO3wgfCAwJm5ic3A7ICZuYnNwO3wgVkZJT19ERVZJQ0VfRkxBR1NfUkVTRVQg fCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt8ICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8PGJyPg0KK3wmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IHwgMSZuYnNwOyAmbmJzcDt8 IFZGSU9fREVWSUNFX0ZMQUdTX1BDSSZuYnNwOyAmbmJzcDt8IHw8YnI+DQorfCZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgKy0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rIHw8YnI+DQorKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgbnVtX3JlZ2lvbnMgfCAyNCZuYnNwOyAmbmJzcDsg Jm5ic3A7fCA0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBudW1faXJxcyZu YnNwOyAmbmJzcDsgfCAyOCZuYnNwOyAmbmJzcDsgJm5ic3A7fCA0Jm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSs8YnI+DQorPGJyPg0KKyogKmFyZ3N6KiBpcyB0aGUgc2l6ZSBvZiB0aGUgVkZJ TyBkZXZpY2UgaW5mbyBzdHJ1Y3R1cmUuPGJyPg0KKyogKmZsYWdzKiBjb250YWlucyB0aGUgZm9s bG93aW5nIGRldmljZSBhdHRyaWJ1dGVzLjxicj4NCis8YnI+DQorJm5ic3A7ICogVkZJT19ERVZJ Q0VfRkxBR1NfUkVTRVQgaW5kaWNhdGVzIHRoYXQgdGhlIGRldmljZSBzdXBwb3J0cyB0aGU8YnI+ DQorJm5ic3A7ICZuYnNwOyBWRklPX1VTRVJfREVWSUNFX1JFU0VUIG1lc3NhZ2UuPGJyPg0KKyZu YnNwOyAqIFZGSU9fREVWSUNFX0ZMQUdTX1BDSSBpbmRpY2F0ZXMgdGhhdCB0aGUgZGV2aWNlIGlz IGEgUENJIGRldmljZS48YnI+DQorPGJyPg0KKyogKm51bV9yZWdpb25zKiBpcyB0aGUgbnVtYmVy IG9mIG1lbW9yeSByZWdpb25zIHRoYXQgdGhlIGRldmljZSBleHBvc2VzLjxicj4NCisqICpudW1f aXJxcyogaXMgdGhlIG51bWJlciBvZiBkaXN0aW5jdCBpbnRlcnJ1cHQgdHlwZXMgdGhhdCB0aGUg ZGV2aWNlIHN1cHBvcnRzLjxicj4NCis8YnI+DQorVGhpcyB2ZXJzaW9uIG9mIHRoZSBwcm90b2Nv bCBvbmx5IHN1cHBvcnRzIFBDSSBkZXZpY2VzLiBBZGRpdGlvbmFsIGRldmljZXMgbWF5PGJyPg0K K2JlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMuPGJyPg0KKzxicj4NCitWRklPX1VTRVJf REVWSUNFX0dFVF9SRUdJT05fSU5GTzxicj4NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLTxicj4NCis8YnI+DQorTWVzc2FnZSBmb3JtYXQ8YnI+DQorXl5eXl5eXl5eXl5eXl48YnI+ DQorPGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0K K3wgTmFtZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFZhbHVlJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxi cj4NCisrPT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09Kzxicj4NCit8IE1l c3NhZ2UgSUQmbmJzcDsgJm5ic3A7fCAmbHQ7SUQmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IENvbW1hbmQmbmJz cDsgJm5ic3A7ICZuYnNwOyB8IDUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBNZXNzYWdlIHNpemUgfCA0 OCArIGFueSBjYXBzJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKyst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgRmxhZ3MmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBSZXBseSBiaXQgc2V0IGluIHJlcGx5IHw8YnI+DQor Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBFcnJvciZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDAvZXJybm8mbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBSZWdpb24gaW5mbyZuYnNwOyB8IFZG SU8gcmVnaW9uIGluZm8mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KKzxicj4NCitUaGlzIGNvbW1h bmQgbWVzc2FnZSBpcyBzZW50IGJ5IHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciB0byBxdWVyeSBm b3I8YnI+DQoraW5mb3JtYXRpb24gYWJvdXQgZGV2aWNlIG1lbW9yeSByZWdpb25zLiBUaGUgVkZJ TyByZWdpb24gaW5mbyBzdHJ1Y3R1cmUgaXM8YnI+DQorZGVmaW5lZCBpbiBgYCZsdDtsaW51eC92 ZmlvLmgmZ3Q7YGAgKGBgc3RydWN0IHZmaW9fcmVnaW9uX2luZm9gYCkuIFNpbmNlIHRoZSBjbGll bnQ8YnI+DQorZG9lcyBub3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgY2FwYWJpbGl0aWVzLCB0aGUg c2l6ZSBvZiB0aGUgcmVwbHkgaXQgc2hvdWxkPGJyPg0KK2V4cGVjdCBpcyA0OCBwbHVzIGFueSBj YXBhYmlsaXRpZXMgd2hvc2Ugc2l6ZSBpcyBpbmRpY2F0ZWQgaW4gdGhlIHNpemUgZmllbGQgb2Y8 YnI+DQordGhlIHJlcGx5IGhlYWRlci48YnI+DQorPGJyPg0KK1ZGSU8gcmVnaW9uIGluZm8gZm9y bWF0PGJyPg0KK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0KKzxicj4NCisrLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBOYW1l Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBPZmZzZXQgfCBTaXplJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrPT09PT09PT09PT09Kz09PT09PT09Kz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSs8YnI+DQorfCBhcmdzeiZuYnNwOyAmbmJzcDsgJm5ic3A7 IHwgMTYmbmJzcDsgJm5ic3A7ICZuYnNwO3wgNCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBmbGFncyZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgMjAm bmJzcDsgJm5ic3A7ICZuYnNwO3wgNCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSs8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7IHwgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8PGJyPg0KK3wmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IHwgQml0IHwgRGVmaW5pdGlv biZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7IHwgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgfCArPT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rIHw8YnI+DQorfCZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgfCAwJm5ic3A7ICZuYnNwO3wg VkZJT19SRUdJT05fSU5GT19GTEFHX1JFQUQmbmJzcDsgfCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8ICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgfCB8IDEmbmJzcDsgJm5ic3A7fCBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUgfCB8 PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8ICstLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCB8IDImbmJzcDsgJm5ic3A7fCBWRklPX1JFR0lP Tl9JTkZPX0ZMQUdfTU1BUCZuYnNwOyB8IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7IHwgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t KyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IHwg MyZuYnNwOyAmbmJzcDt8IFZGSU9fUkVHSU9OX0lORk9fRkxBR19DQVBTJm5ic3A7IHwgfDxicj4N Cit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCArLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHw8YnI+DQorKy0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgaW5kZXgmbmJzcDsgJm5i c3A7ICZuYnNwOyB8IDI0Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IDQmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgY2FwX29mZnNldCB8IDI4Jm5ic3A7 ICZuYnNwOyAmbmJzcDt8IDQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 IHw8YnI+DQorKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rPGJyPg0KK3wgc2l6ZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMzImbmJzcDsg Jm5ic3A7ICZuYnNwO3wgOCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg fDxicj4NCisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSs8YnI+DQorfCBvZmZzZXQmbmJzcDsgJm5ic3A7ICZuYnNwO3wgNDAmbmJzcDsgJm5ic3A7 ICZuYnNwO3wgOCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4N CisrLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8 YnI+DQorPGJyPg0KKyogKmFyZ3N6KiBpcyB0aGUgc2l6ZSBvZiB0aGUgVkZJTyByZWdpb24gaW5m byBzdHJ1Y3R1cmUgcGx1cyB0aGU8YnI+DQorJm5ic3A7IHNpemUgb2YgYW55IHJlZ2lvbiBjYXBh YmlsaXRpZXMgcmV0dXJuZWQuPGJyPg0KKyogKmZsYWdzKiBhcmUgYXR0cmlidXRlcyBvZiB0aGUg cmVnaW9uOjxicj4NCis8YnI+DQorJm5ic3A7ICogKlZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFE KiBhbGxvd3MgY2xpZW50IHJlYWQgYWNjZXNzIHRvIHRoZSByZWdpb24uPGJyPg0KKyZuYnNwOyAq ICpWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUqIGFsbG93cyBjbGllbnQgd3JpdGUgYWNjZXNz IHRvIHRoZSByZWdpb24uPGJyPg0KKyZuYnNwOyAqICpWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1B UCogc3BlY2lmaWVzIHRoZSBjbGllbnQgY2FuIG1tYXAoKSB0aGUgcmVnaW9uLjxicj4NCismbmJz cDsgJm5ic3A7IFdoZW4gdGhpcyBmbGFnIGlzIHNldCwgdGhlIHJlcGx5IHdpbGwgaW5jbHVkZSBh IGZpbGUgZGVzY3JpcHRvciBpbiBpdHM8YnI+DQorJm5ic3A7ICZuYnNwOyBtZXRhLWRhdGEuIE9u IEFGX1VOSVggc29ja2V0cywgdGhlIGZpbGUgZGVzY3JpcHRvcnMgd2lsbCBiZSBwYXNzZWQgYXM8 YnI+DQorJm5ic3A7ICZuYnNwOyBTQ01fUklHSFRTIHR5cGUgYW5jaWxsYXJ5IGRhdGEuPGJyPg0K KyZuYnNwOyAqICpWRklPX1JFR0lPTl9JTkZPX0ZMQUdfQ0FQUyogaW5kaWNhdGVzIGFkZGl0aW9u YWwgY2FwYWJpbGl0aWVzIGZvdW5kIGluIHRoZTxicj4NCismbmJzcDsgJm5ic3A7IHJlcGx5Ljxi cj4NCis8YnI+DQorKiAqaW5kZXgqIGlzIHRoZSBpbmRleCBvZiBtZW1vcnkgcmVnaW9uIGJlaW5n IHF1ZXJpZWQsIGl0IGlzIHRoZSBvbmx5IGZpZWxkPGJyPg0KKyZuYnNwOyB0aGF0IGlzIHJlcXVp cmVkIHRvIGJlIHNldCBpbiB0aGUgY29tbWFuZCBtZXNzYWdlLjxicj4NCisqICpjYXBfb2Zmc2V0 KiBkZXNjcmliZXMgd2hlcmUgYWRkaXRpb25hbCByZWdpb24gY2FwYWJpbGl0aWVzIGNhbiBiZSBm b3VuZC48YnI+DQorJm5ic3A7IGNhcF9vZmZzZXQgaXMgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmlu ZyBvZiB0aGUgVkZJTyByZWdpb24gaW5mbyBzdHJ1Y3R1cmUuPGJyPg0KKyZuYnNwOyBUaGUgZGF0 YSBzdHJ1Y3R1cmUgaXQgcG9pbnRzIGlzIGEgVkZJTyBjYXAgaGVhZGVyIGRlZmluZWQgaW48YnI+ DQorJm5ic3A7IGBgJmx0O2xpbnV4L3ZmaW8uaCZndDtgYC48YnI+DQorKiAqc2l6ZSogaXMgdGhl IHNpemUgb2YgdGhlIHJlZ2lvbi48YnI+DQorKiAqb2Zmc2V0KiBpcyB0aGUgb2Zmc2V0IGdpdmVu IHRvIHRoZSBtbWFwKCkgc3lzdGVtIGNhbGwgZm9yIHJlZ2lvbnMgd2l0aCB0aGU8YnI+DQorJm5i c3A7IE1NQVAgYXR0cmlidXRlLiBJdCBpcyBhbHNvIHVzZWQgYXMgdGhlIGJhc2Ugb2Zmc2V0IHdo ZW4gbWFwcGluZyBhIFZGSU88YnI+DQorJm5ic3A7IHNwYXJzZSBtbWFwIGFyZWEsIGRlc2NyaWJl ZCBiZWxvdy48YnI+DQorPGJyPg0KK1ZGSU8gUmVnaW9uIGNhcGFiaWxpdGllczxicj4NCiteXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl48YnI+DQorVGhlIFZGSU8gcmVnaW9uIGluZm9ybWF0aW9uIGNh biBhbHNvIGluY2x1ZGUgYSBjYXBhYmlsaXRpZXMgbGlzdC4gVGhpcyBsaXN0IGlzPGJyPg0KK3Np bWlsYXIgdG8gYSBQQ0kgY2FwYWJpbGl0eSBsaXN0IC0gZWFjaCBlbnRyeSBoYXMgYSBjb21tb24g aGVhZGVyIHRoYXQ8YnI+DQoraWRlbnRpZmllcyBhIGNhcGFiaWxpdHkgYW5kIHdoZXJlIHRoZSBu ZXh0IGNhcGFiaWxpdHkgaW4gdGhlIGxpc3QgY2FuIGJlIGZvdW5kLjxicj4NCitUaGUgVkZJTyBj YXBhYmlsaXR5IGhlYWRlciBmb3JtYXQgaXMgZGVmaW5lZCBpbiBgYCZsdDtsaW51eC92ZmlvLmgm Z3Q7YGAgKGBgc3RydWN0PGJyPg0KK3ZmaW9faW5mb19jYXBfaGVhZGVyYGApLjxicj4NCis8YnI+ DQorVkZJTyBjYXAgaGVhZGVyIGZvcm1hdDxicj4NCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5ePGJy Pg0KKzxicj4NCisrLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLSs8YnI+DQorfCBOYW1lJm5ic3A7 ICZuYnNwOyB8IE9mZnNldCB8IFNpemUgfDxicj4NCisrPT09PT09PT09Kz09PT09PT09Kz09PT09 PSs8YnI+DQorfCBpZCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgMCZuYnNwOyAmbmJzcDsgJm5ic3A7 IHwgMiZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLSs8YnI+ DQorfCB2ZXJzaW9uIHwgMiZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgMiZuYnNwOyAmbmJzcDsgfDxi cj4NCisrLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLSs8YnI+DQorfCBuZXh0Jm5ic3A7ICZuYnNw OyB8IDQmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDQmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0rPGJyPg0KKzxicj4NCisqICppZCogaXMgdGhlIGNhcGFiaWxp dHkgaWRlbnRpdHkuPGJyPg0KKyogKnZlcnNpb24qIGlzIGEgY2FwYWJpbGl0eS1zcGVjaWZpYyB2 ZXJzaW9uIG51bWJlci48YnI+DQorKiAqbmV4dCogc3BlY2lmaWVzIHRoZSBvZmZzZXQgb2YgdGhl IG5leHQgY2FwYWJpbGl0eSBpbiB0aGUgY2FwYWJpbGl0eSBsaXN0LiBJdDxicj4NCismbmJzcDsg aXMgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgVkZJTyByZWdpb24gaW5mbyBzdHJ1 Y3R1cmUuPGJyPg0KKzxicj4NCitWRklPIHNwYXJzZSBtbWFwPGJyPg0KK15eXl5eXl5eXl5eXl5e Xl48YnI+DQorPGJyPg0KKystLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSs8YnI+DQorfCBOYW1lJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7fCBWYWx1ZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgfDxicj4NCisrPT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0rPGJyPg0KK3wgaWQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBWRklPX1JFR0lPTl9JTkZPX0NBUF9TUEFSU0VfTU1B UCB8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSs8YnI+DQorfCB2ZXJzaW9uJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyB8IDB4MSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8 YnI+DQorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKzxicj4NCit8IG5leHQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDt8ICZsdDtuZXh0Jmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSs8YnI+DQorfCBzcGFyc2UgbW1hcCBpbmZvIHwgVkZJTyByZWdpb24gaW5mbyBz cGFyc2UgbW1hcCZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KKzxicj4NCitUaGlzIGNh cGFiaWxpdHkgaXMgZGVmaW5lZCB3aGVuIG9ubHkgYSBzdWJyYW5nZSBvZiB0aGUgcmVnaW9uIHN1 cHBvcnRzPGJyPg0KK2RpcmVjdCBhY2Nlc3MgYnkgdGhlIGNsaWVudCB2aWEgbW1hcCgpLiBUaGUg VkZJTyBzcGFyc2UgbW1hcCBhcmVhIGlzIGRlZmluZWQgaW48YnI+DQorYGAmbHQ7bGludXgvdmZp by5oJmd0O2BgIChgYHN0cnVjdCB2ZmlvX3JlZ2lvbl9zcGFyc2VfbW1hcF9hcmVhYGApLjxicj4N Cis8YnI+DQorVkZJTyByZWdpb24gaW5mbyBjYXAgc3BhcnNlIG1tYXA8YnI+DQorXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl48YnI+DQorKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t Kzxicj4NCit8IE5hbWUmbmJzcDsgJm5ic3A7ICZuYnNwO3wgT2Zmc2V0IHwgU2l6ZSB8PGJyPg0K Kys9PT09PT09PT09Kz09PT09PT09Kz09PT09PSs8YnI+DQorfCBucl9hcmVhcyB8IDAmbmJzcDsg Jm5ic3A7ICZuYnNwOyB8IDQmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tKzxicj4NCit8IHJlc2VydmVkIHwgNCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgNCZu YnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0rPGJyPg0KK3wg b2Zmc2V0Jm5ic3A7ICZuYnNwO3wgOCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgOCZuYnNwOyAmbmJz cDsgfDxicj4NCisrLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0rPGJyPg0KK3wgc2l6ZSZuYnNw OyAmbmJzcDsgJm5ic3A7fCAxNiZuYnNwOyAmbmJzcDsgJm5ic3A7fCA5Jm5ic3A7ICZuYnNwOyB8 PGJyPg0KKystLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLSs8YnI+DQorfCAuLi4mbmJzcDsgJm5i c3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwmbmJzcDsgJm5ic3A7ICZu YnNwOyB8PGJyPg0KKystLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLSs8YnI+DQorPGJyPg0KKyog Km5yX2FyZWFzKiBpcyB0aGUgbnVtYmVyIG9mIHNwYXJzZSBtbWFwIGFyZWFzIGluIHRoZSByZWdp b24uPGJyPg0KKyogKm9mZnNldCogYW5kIHNpemUgZGVzY3JpYmUgYSBzaW5nbGUgYXJlYSB0aGF0 IGNhbiBiZSBtYXBwZWQgYnkgdGhlIGNsaWVudC48YnI+DQorJm5ic3A7IFRoZXJlIHdpbGwgYmUg bnJfYXJlYXMgcGFpcnMgb2Ygb2Zmc2V0IGFuZCBzaXplLiBUaGUgb2Zmc2V0IHdpbGwgYmUgYWRk ZWQgdG88YnI+DQorJm5ic3A7IHRoZSBiYXNlIG9mZnNldCBnaXZlbiBpbiB0aGUgVkZJT19VU0VS X0RFVklDRV9HRVRfUkVHSU9OX0lORk8gdG8gZm9ybSB0aGU8YnI+DQorJm5ic3A7IG9mZnNldCBh cmd1bWVudCBvZiB0aGUgc3Vic2VxdWVudCBtbWFwKCkgY2FsbC48YnI+DQorPGJyPg0KK1RoZSBW RklPIHNwYXJzZSBtbWFwIGFyZWEgaXMgZGVmaW5lZCBpbiBgYCZsdDtsaW51eC92ZmlvLmgmZ3Q7 YGAgKGBgc3RydWN0PGJyPg0KK3ZmaW9fcmVnaW9uX2luZm9fY2FwX3NwYXJzZV9tbWFwYGApLjxi cj4NCis8YnI+DQorVkZJTyBSZWdpb24gVHlwZTxicj4NCiteXl5eXl5eXl5eXl5eXl5ePGJyPg0K Kzxicj4NCisrLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8 YnI+DQorfCBOYW1lJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7fCBWYWx1ZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKys9PT09PT09PT09PT09PT09PT0r PT09PT09PT09PT09PT09PT09PT09PT09PT09Kzxicj4NCit8IGlkJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgVkZJT19SRUdJT05fSU5GT19D QVBfVFlQRSB8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKzxicj4NCit8IHZlcnNpb24mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 IHwgMHgxJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IG5leHQmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICZsdDtuZXh0Jmd0OyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKzxicj4NCit8IHJlZ2lvbiBpbmZvIHR5cGUgfCBWRklPIHJlZ2lvbiBpbmZvIHR5cGUmbmJz cDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rPGJyPg0KKzxicj4NCitUaGlzIGNhcGFiaWxpdHkgaXMgZGVmaW5lZCB3 aGVuIGEgcmVnaW9uIGlzIHNwZWNpZmljIHRvIHRoZSBkZXZpY2UuPGJyPg0KKzxicj4NCitWRklP IHJlZ2lvbiBpbmZvIHR5cGU8YnI+DQorXl5eXl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0KKzxicj4N CitUaGUgVkZJTyByZWdpb24gaW5mbyB0eXBlIGlzIGRlZmluZWQgaW4gYGAmbHQ7bGludXgvdmZp by5oJmd0O2BgPGJyPg0KKyhgYHN0cnVjdCB2ZmlvX3JlZ2lvbl9pbmZvX2NhcF90eXBlYGApLjxi cj4NCis8YnI+DQorKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0rPGJyPg0KK3wgTmFtZSZuYnNw OyAmbmJzcDsgfCBPZmZzZXQgfCBTaXplIHw8YnI+DQorKz09PT09PT09PSs9PT09PT09PSs9PT09 PT0rPGJyPg0KK3wgdHlwZSZuYnNwOyAmbmJzcDsgfCAwJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCA0 Jm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tKzxicj4NCit8 IHN1YnR5cGUgfCA0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfCA0Jm5ic3A7ICZuYnNwOyB8PGJyPg0K KystLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tKzxicj4NCis8YnI+DQorVGhlIG9ubHkgZGV2aWNl LXNwZWNpZmljIHJlZ2lvbiB0eXBlIGFuZCBzdWJ0eXBlIHN1cHBvcnRlZCBieSB2ZmlvLXVzZXIg aXM8YnI+DQorVkZJT19SRUdJT05fVFlQRV9NSUdSQVRJT04gKDMpIGFuZCBWRklPX1JFR0lPTl9T VUJUWVBFX01JR1JBVElPTiAoMSkuPGJyPg0KKzxicj4NCitWRklPIERldmljZSBNaWdyYXRpb24g SW5mbzxicj4NCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXjxicj4NCis8YnI+DQorVGhlIGJl Z2lubmluZyBvZiB0aGUgc3VicmVnaW9uIG11c3QgY29udGFpbjxicj4NCitgYHN0cnVjdCB2Zmlv X2RldmljZV9taWdyYXRpb25faW5mb2BgLCBkZWZpbmVkIGluIGBgJmx0O2xpbnV4L3ZmaW8uaCZn dDtgYC4gVGhpczxicj4NCitzdWJyZWdpb24gaXMgYWNjZXNzZWQgbGlrZSBhbnkgb3RoZXIgcGFy dCBvZiBhIHN0YW5kYXJkIHZmaW8tdXNlciBQQ0kgcmVnaW9uPGJyPg0KK3VzaW5nIFZGSU9fVVNF Ul9SRUdJT05fUkVBRC9WRklPX1VTRVJfUkVHSU9OX1dSSVRFLjxicj4NCis8YnI+DQorKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQor fCBOYW1lJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IE9mZnNldCB8IFNpemUm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKys9PT09PT09PT09PT09PT0rPT09PT09 PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPGJyPg0KK3wgZGV2aWNlX3N0YXRlJm5i c3A7IHwgMCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgNCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCArLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3wgfCBCaXQgfCBEZWZpbml0aW9uJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IHw8YnI+DQorfCZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICs9PT09 PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09KyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCB8IDAmbmJzcDsgJm5ic3A7 fCBWRklPX0RFVklDRV9TVEFURV9SVU5OSU5HJm5ic3A7IHwgfDxicj4NCit8Jm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgKy0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IHwgMSZuYnNwOyAmbmJzcDt8IFZGSU9f REVWSUNFX1NUQVRFX1NBVklORyZuYnNwOyAmbmJzcDt8IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICstLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCB8IDImbmJzcDsgJm5ic3A7fCBWRklPX0RF VklDRV9TVEFURV9SRVNVTUlORyB8IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgcmVzZXJ2ZWQmbmJzcDsgJm5ic3A7ICZuYnNwOyB8 IDQmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IHBlbmRpbmdfYnl0ZXMgfCA4Jm5ic3A7ICZuYnNwOyAm bmJzcDsgfCA4Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQor Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8 YnI+DQorfCBkYXRhX29mZnNldCZuYnNwOyAmbmJzcDt8IDE2Jm5ic3A7ICZuYnNwOyAmbmJzcDt8 IDgmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8 IGRhdGFfc2l6ZSZuYnNwOyAmbmJzcDsgJm5ic3A7fCAyNCZuYnNwOyAmbmJzcDsgJm5ic3A7fCA4 Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorPGJy Pg0KKyogKmRldmljZV9zdGF0ZSogZGVmaW5lcyB0aGUgc3RhdGUgb2YgdGhlIGRldmljZTo8YnI+ DQorPGJyPg0KKyZuYnNwOyBUaGUgY2xpZW50IGluaXRpYXRlcyBkZXZpY2Ugc3RhdGUgdHJhbnNp dGlvbiBieSB3cml0aW5nIHRoZSBpbnRlbmRlZCBzdGF0ZS48YnI+DQorJm5ic3A7IFRoZSBzZXJ2 ZXIgbXVzdCByZXNwb25kIG9ubHkgYWZ0ZXIgaXQgaGFzIHN1Y2Nlc2Z1bGx5IHRyYW5zaXRpb25l ZCB0byB0aGUgbmV3PGJyPg0KKyZuYnNwOyBzdGF0ZS4gSWYgYW4gZXJyb3Igb2NjdXJzIHRoZW4g dGhlIHNlcnZlciBtdXN0IHJlc3BvbmQgdG8gdGhlPGJyPg0KKyZuYnNwOyBWRklPX1VTRVJfUkVH SU9OX1dSSVRFIG9wZXJhdGlvbiB3aXRoIHRoZSBFcnJvciBmaWVsZCBzZXQgYWNjb3JkaW5nbHkg YW5kPGJyPg0KKyZuYnNwOyBtdXN0IHJlbWFpbiBhdCB0aGUgcHJldmlvdXMgc3RhdGUsIG9yIGlu IGNhc2Ugb2YgaW50ZXJuYWwgZXJyb3IgaXQgbXVzdDxicj4NCismbmJzcDsgdHJhbnN0aXRpb24g dG8gdGhlIGVycm9yIHN0YXRlLCBkZWZpbmVkIGFzPGJyPg0KKyZuYnNwOyBWRklPX0RFVklDRV9T VEFURV9SRVNVTUlORyB8IFZGSU9fREVWSUNFX1NUQVRFX1NBVklORy4gVGhlIGNsaWVudCBtdXN0 PGJyPg0KKyZuYnNwOyByZS1yZWFkIHRoZSBkZXZpY2Ugc3RhdGUgaW4gb3JkZXIgdG8gZGV0ZXJt aW5lIGl0IGFmcmVzaC48YnI+DQorPGJyPg0KKyZuYnNwOyBUaGUgZm9sbG93aW5nIGRldmljZSBz dGF0ZXMgYXJlIGRlZmluZWQ6PGJyPg0KKzxicj4NCismbmJzcDsgKy0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4N CismbmJzcDsgfCBfUkVTVU1JTkcgfCBfU0FWSU5HIHwgX1JVTk5JTkcgfCBEZXNjcmlwdGlvbiZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCismbmJzcDsgKz09PT09PT09PT09Kz09PT09 PT09PSs9PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kzxicj4N CismbmJzcDsgfCAwJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMCZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3wgMCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IERldmlj ZSBpcyBzdG9wcGVkLiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgfDxicj4NCismbmJzcDsgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCismbmJzcDsgfCAw Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMCZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO3wgMSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IERldmljZSBpcyBydW5uaW5n LCBkZWZhdWx0IHN0YXRlLiB8PGJyPg0KKyZuYnNwOyArLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KKyZuYnNw OyB8IDAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAxJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7fCAwJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgU3RvcC1hbmQtY29w eSBzdGF0ZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt8PGJyPg0KKyZuYnNwOyArLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KKyZuYnNwOyB8IDAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAxJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 fCAxJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgUHJlLWNvcHkgc3RhdGUmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgfDxicj4NCismbmJzcDsgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCismbmJzcDsgfCAxJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg MCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IFJlc3VtaW5nJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorJm5ic3A7ICstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorJm5ic3A7 IHwgMSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IDAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDt8IDEmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBJbnZhbGlkIHN0YXRl Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorJm5ic3A7ICstLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorJm5i c3A7IHwgMSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IDEmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt8IDAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBFcnJvciBzdGF0 ZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCismbmJzcDsgKy0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxi cj4NCismbmJzcDsgfCAxJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMSZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IElu dmFsaWQgc3RhdGUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCismbmJzcDsgKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kzxicj4NCis8YnI+DQorJm5ic3A7IFZhbGlkIHN0YXRlIHRyYW5zaXRpb25zIGFyZSBzaG93biBp biB0aGUgZm9sbG93aW5nIHRhYmxlOjxicj4NCis8YnI+DQorJm5ic3A7ICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLSs8YnI+DQorJm5ic3A7IHwgfGRhcnJ8IEZyb20gLyBUbyB8cmFycnwgfCBT dG9wcGVkIHwgUnVubmluZyB8IFN0b3AtYW5kLWNvcHkgfCBQcmUtY29weSB8IFJlc3VtaW5nIHw8 YnI+DQorJm5ic3A7ICs9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PSs9PT09PT09 PT0rPT09PT09PT09PT09PT09Kz09PT09PT09PT0rPT09PT09PT09PSs8YnI+DQorJm5ic3A7IHwg U3RvcHBlZCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgXC0mbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsg MCZuYnNwOyAmbmJzcDsgfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOzAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAwJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7 ICZuYnNwOyAmbmJzcDswJm5ic3A7ICZuYnNwOyB8PGJyPg0KKyZuYnNwOyArLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0rPGJyPg0KKyZuYnNwOyB8IFJ1bm5pbmcmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7 IDEmbmJzcDsgJm5ic3A7IHwmbmJzcDsgJm5ic3A7IFwtJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsxJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJz cDsgMSZuYnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7MSZuYnNwOyAmbmJz cDsgfDxicj4NCismbmJzcDsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKzxicj4NCismbmJz cDsgfCBTdG9wLWFuZC1jb3B5Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt8Jm5ic3A7ICZuYnNwOyAxJm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAwJm5ic3A7ICZu YnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7XC0mbmJzcDsgJm5ic3A7ICZuYnNwOyB8 Jm5ic3A7ICZuYnNwOyAwJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsw Jm5ic3A7ICZuYnNwOyB8PGJyPg0KKyZuYnNwOyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0r PGJyPg0KKyZuYnNwOyB8IFByZS1jb3B5Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAwJm5ic3A7ICZuYnNwOyB8Jm5i c3A7ICZuYnNwOyAwJm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7MSZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7IFwtJm5ic3A7ICZuYnNwOyB8 Jm5ic3A7ICZuYnNwOyAmbmJzcDswJm5ic3A7ICZuYnNwOyB8PGJyPg0KKyZuYnNwOyArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0rPGJyPg0KKyZuYnNwOyB8IFJlc3VtaW5nJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNw OyAwJm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAxJm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7MCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5i c3A7IDAmbmJzcDsgJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwO1wtJm5ic3A7ICZu YnNwO3w8YnI+DQorJm5ic3A7ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSs8YnI+DQorPGJy Pg0KKyZuYnNwOyBBIGRldmljZSBpcyBtaWdyYXRlZCB0byB0aGUgZGVzdGluYXRpb24gYXMgZm9s bG93czo8YnI+DQorPGJyPg0KKyZuYnNwOyAqIFRoZSBzb3VyY2UgY2xpZW50IHRyYW5zaXRpb25z IHRoZSBkZXZpY2Ugc3RhdGUgZnJvbSB0aGUgcnVubmluZyBzdGF0ZSB0bzxicj4NCismbmJzcDsg Jm5ic3A7IHRoZSBwcmUtY29weSBzdGF0ZS4gVGhpcyB0cmFuc2l0aW9uIGlzIG9wdGlvbmFsIGZv ciB0aGUgY2xpZW50IGJ1dCBtdXN0IGJlPGJyPg0KKyZuYnNwOyAmbmJzcDsgc3VwcG9ydGVkIGJ5 IHRoZSBzZXJ2ZXIuIFRoZSBzb3VjZSBzZXJ2ZXIgc3RhcnRzIHNlbmRpbmcgZGV2aWNlIHN0YXRl IGRhdGE8YnI+DQorJm5ic3A7ICZuYnNwOyB0byB0aGUgc291cmNlIGNsaWVudCB0aHJvdWdoIHRo ZSBtaWdyYXRpb24gcmVnaW9uIHdoaWxlIHRoZSBkZXZpY2UgaXM8YnI+DQorJm5ic3A7ICZuYnNw OyBydW5uaW5nLjxicj4NCis8YnI+DQorJm5ic3A7ICogVGhlIHNvdXJjZSBjbGllbnQgdHJhbnNp dGlvbnMgdGhlIGRldmljZSBzdGF0ZSBmcm9tIHRoZSBydW5uaW5nIHN0YXRlIG9yIHRoZTxicj4N CismbmJzcDsgJm5ic3A7IHByZS1jb3B5IHN0YXRlIHRvIHRoZSBzdG9wLWFuZC1jb3B5IHN0YXRl LiBUaGUgc291cmNlIHNlcnZlciBzdG9wcyB0aGU8YnI+DQorJm5ic3A7ICZuYnNwOyBkZXZpY2Us IHNhdmVzIGRldmljZSBzdGF0ZSBhbmQgc2VuZHMgaXQgdG8gdGhlIHNvdXJjZSBjbGllbnQgdGhy b3VnaCB0aGU8YnI+DQorJm5ic3A7ICZuYnNwOyBtaWdyYXRpb24gcmVnaW9uLjxicj4NCis8YnI+ DQorJm5ic3A7IFRoZSBzb3VyY2UgY2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciBzZW5kaW5nIHRo ZSBtaWdyYXRpb24gZGF0YSB0byB0aGU8YnI+DQorJm5ic3A7IGRlc3RpbmF0aW9uIGNsaWVudC48 YnI+DQorPGJyPg0KKyZuYnNwOyBBIGRldmljZSBpcyByZXN1bWVkIG9uIHRoZSBkZXN0aW5hdGlv biBhcyBmb2xsb3dzOjxicj4NCis8YnI+DQorJm5ic3A7ICogVGhlIGRlc3RpbmF0aW9uIGNsaWVu dCB0cmFuc2l0aW9ucyB0aGUgZGV2aWNlIHN0YXRlIGZyb20gdGhlIHJ1bm5pbmcgc3RhdGU8YnI+ DQorJm5ic3A7ICZuYnNwOyB0byB0aGUgcmVzdW1pbmcgc3RhdGUuIFRoZSBkZXN0aW5hdGlvbiBz ZXJ2ZXIgdXNlcyB0aGUgZGV2aWNlIHN0YXRlIGRhdGE8YnI+DQorJm5ic3A7ICZuYnNwOyByZWNl aXZlZCB0aHJvdWdoIHRoZSBtaWdyYXRpb24gcmVnaW9uIHRvIHJlc3VtZSB0aGUgZGV2aWNlLjxi cj4NCis8YnI+DQorJm5ic3A7ICogVGhlIGRlc3RpbmF0aW9uIGNsaWVudCBwcm92aWRlcyBzYXZl ZCBkZXZpY2Ugc3RhdGUgdG8gdGhlIGRlc3RpbmF0aW9uPGJyPg0KKyZuYnNwOyAmbmJzcDsgc2Vy dmVyIGFuZCB0aGVuIHRyYW5zaXRpb25zIHRoZSBkZXZpY2UgdG8gYmFjayB0byB0aGUgcnVubmlu ZyBzdGF0ZS48YnI+DQorPGJyPg0KKyogKnJlc2VydmVkKiBUaGlzIGZpZWxkIGlzIHJlc2VydmVk IGFuZCBhbnkgYWNjZXNzIHRvIGl0IG11c3QgYmUgaWdub3JlZCBieSB0aGU8YnI+DQorJm5ic3A7 IHNlcnZlci48YnI+DQorPGJyPg0KKyogKnBlbmRpbmdfYnl0ZXMqIFJlbWFpbmluZyBieXRlcyB0 byBiZSBtaWdyYXRlZCBieSB0aGUgc2VydmVyLiBUaGlzIGZpZWxkIGlzPGJyPg0KKyZuYnNwOyBy ZWFkIG9ubHkuPGJyPg0KKzxicj4NCisqICpkYXRhX29mZnNldCogT2Zmc2V0IGluIHRoZSBtaWdy YXRpb24gcmVnaW9uIHdoZXJlIHRoZSBjbGllbnQgbXVzdDo8YnI+DQorPGJyPg0KKyZuYnNwOyAq IHJlYWQgZnJvbSwgZHVyaW5nIHRoZSBwcmUtY29weSBvciBzdG9wLWFuZC1jb3B5IHN0YXRlLCBv cjxicj4NCis8YnI+DQorJm5ic3A7ICogd3JpdGUgdG8sIGR1cmluZyB0aGUgcmVzdW1pbmcgc3Rh dGUuPGJyPg0KKzxicj4NCismbmJzcDsgVGhpcyBmaWVsZCBpcyByZWFkIG9ubHkuPGJyPg0KKzxi cj4NCisqICpkYXRhX3NpemUqIENvbnRhaW5zIHRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGFt b3VudCBvZiBkYXRhIGNvcGllZCB0bzo8YnI+DQorPGJyPg0KKyZuYnNwOyAqIHRoZSBzb3VyY2Ug bWlncmF0aW9uIHJlZ2lvbiBieSB0aGUgc291cmNlIHNlcnZlciBkdXJpbmcgdGhlIHByZS1jb3B5 IG9yPGJyPg0KKyZuYnNwOyAmbmJzcDsgc3RvcC1hbmQgY29weSBzdGF0ZSwgb3I8YnI+DQorPGJy Pg0KKyZuYnNwOyAqIHRoZSBkZXN0aW5hdGlvbiBtaWdyYXRpb24gcmVnaW9uIGJ5IHRoZSBkZXN0 aW5hdGlvbiBjbGllbnQgZHVyaW5nIHRoZTxicj4NCismbmJzcDsgJm5ic3A7IHJlc3VtaW5nIHN0 YXRlLjxicj4NCis8YnI+DQorRGV2aWNlLXNwZWNpZmljIGRhdGEgbXVzdCBiZSBzdG9yZWQgYXQg YW55IHBvc2l0aW9uIGFmdGVyPGJyPg0KK2BzdHJ1Y3QgdmZpb19kZXZpY2VfbWlncmF0aW9uX2lu Zm9gLiBOb3RlIHRoYXQgdGhlIG1pZ3JhdGlvbiByZWdpb24gY2FuIGJlPGJyPg0KK21lbW9yeSBt YXBwYWJsZSwgZXZlbiBwYXJ0aWFsbHkuIEluIHByYWN0aXNlLCBvbmx5IHRoZSBtaWdyYXRpb24g ZGF0YSBwb3J0aW9uPGJyPg0KK2NhbiBiZSBtZW1vcnkgbWFwcGVkLjxicj4NCis8YnI+DQorVGhl IGNsaWVudCBwcm9jZXNzZXMgZGV2aWNlIHN0YXRlIGRhdGEgZHVyaW5nIHRoZSBwcmUtY29weSBh bmQgdGhlPGJyPg0KK3N0b3AtYW5kLWNvcHkgc3RhdGUgaW4gdGhlIGZvbGxvd2luZyBpdGVyYXRp dmUgbWFubmVyOjxicj4NCis8YnI+DQorJm5ic3A7IDEuIFRoZSBjbGllbnQgcmVhZHMgYHBlbmRp bmdfYnl0ZXNgIHRvIG1hcmsgYSBuZXcgaXRlcmF0aW9uLiBSZXBlYXRlZCByZWFkczxicj4NCism bmJzcDsgJm5ic3A7ICZuYnNwO29mIHRoaXMgZmllbGQgaXMgYW4gaWRlbXBvdGVudCBvcGVyYXRp b24uIElmIHRoZXJlIGFyZSBubyBtaWdyYXRpb24gZGF0YTxicj4NCismbmJzcDsgJm5ic3A7ICZu YnNwO3RvIGJlIGNvbnN1bWVkIHRoZW4gdGhlIG5leHQgc3RlcCBkZXBlbmRzIG9uIHRoZSBjdXJy ZW50IGRldmljZSBzdGF0ZTo8YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7KiBwcmUt Y29weTogdGhlIGNsaWVudCBtdXN0IHRyeSBhZ2Fpbi48YnI+DQorPGJyPg0KKyZuYnNwOyAmbmJz cDsgJm5ic3A7KiBzdG9wLWFuZC1jb3B5OiB0aGlzIHByb2NlZHVyZSBjYW4gZW5kIGFuZCB0aGUg ZGV2aWNlIGNhbiBub3cgc3RhcnQ8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7cmVz dW1pbmcgb24gdGhlIGRlc3RpbmF0aW9uLjxicj4NCis8YnI+DQorJm5ic3A7IDIuIFRoZSBjbGll bnQgcmVhZHMgYGRhdGFfb2Zmc2V0YDsgYXQgdGhpY2ggcG9pbnQgdGhlIHNlcnZlciBtdXN0IG1h a2U8YnI+DQorJm5ic3A7ICZuYnNwOyAmbmJzcDthdmFpbGFibGUgYSBwb3J0aW9uIG9mIG1pZ3Jh dGlvbiBkYXRhIGF0IHRoaXMgb2Zmc2V0IHRvIGJlIHJlYWQgYnkgdGhlPGJyPg0KKyZuYnNwOyAm bmJzcDsgJm5ic3A7Y2xpZW50LCB3aGljaCBtdXN0IGhhcHBlbiAqYmVmb3JlKiBjb21wbGV0aW5n IHRoZSByZWFkIG9wZXJhdGlvbi4gVGhlPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7YW1vdW50 IG9mIGRhdGEgdG8gYmUgcmVhZCBtdXN0IGJlIHN0b3JlZCBpbiB0aGUgYGRhdGFfc2l6ZWAgZmll bGQsIHdoaWNoPGJyPg0KKyZuYnNwOyAmbmJzcDsgJm5ic3A7dGhlIGNsaWVudCByZWFkcyBuZXh0 Ljxicj4NCis8YnI+DQorJm5ic3A7IDMuIFRoZSBjbGllbnQgcmVhZHMgYGRhdGFfc2l6ZWAgdG8g ZGV0ZXJtaW5lIHRoZSBhbW91bnQgb2YgbWlncmF0aW9uIGRhdGE8YnI+DQorJm5ic3A7ICZuYnNw OyAmbmJzcDthdmFpbGFibGUuPGJyPg0KKzxicj4NCismbmJzcDsgNC4gVGhlIGNsaWVudCByZWFk cyBhbmQgcHJvY2Vzc2VzIHRoZSBtaWdyYXRpb24gZGF0YS48YnI+DQorPGJyPg0KKyZuYnNwOyA1 LiBHbyB0byBzdGVwIDEuPGJyPg0KKzxicj4NCitOb3RlIHRoYXQgdGhlIGNsaWVudCBjYW4gdHJh bnNpdGlvbiB0aGUgZGV2aWNlIGZyb20gdGhlIHByZS1jb3B5IHN0YXRlIHRvIHRoZTxicj4NCitz dG9wLWFuZC1jb3B5IHN0YXRlIGF0IGFueSB0aW1lOyBgcGVuZGluZ19ieXRlc2AgZG9lcyBub3Qg bmVlZCB0byBiZWNvbWUgemVyby48YnI+DQorPGJyPg0KK1RoZSBjbGllbnQgaW5pdGlhbGl6ZXMg dGhlIGRldmljZSBzdGF0ZSBvbiB0aGUgZGVzdGluYXRpb24gYnkgc2V0dGluZyB0aGU8YnI+DQor ZGV2aWNlIHN0YXRlIGluIHRoZSByZXN1bWluZyBzdGF0ZSBhbmQgd3JpdGluZyB0aGUgbWlncmF0 aW9uIGRhdGEgdG8gdGhlPGJyPg0KK2Rlc3RpbmF0aW9uIG1pZ3JhdGlvbiByZWdpb24gYXQgYGRh dGFfb2Zmc2V0YCBvZmZzZXQuIFRoZSBjbGllbnQgY2FuIHdyaXRlIHRoZTxicj4NCitzb3VyY2Ug bWlncmF0aW9uIGRhdGEgaW4gYW4gaXRlcmF0aXZlIG1hbm5lciBhbmQgdGhlIHNlcnZlciBtdXN0 IGNvbnN1bWUgdGhpczxicj4NCitkYXRhIGJlZm9yZSBjb21wbGV0aW5nIGVhY2ggd3JpdGUgb3Bl cmF0aW9uLCB1cGRhdGluZyB0aGUgYGRhdGFfb2Zmc2V0YCBmaWVsZC48YnI+DQorVGhlIHNlcnZl ciBtdXN0IGFwcGx5IHRoZSBzb3VyY2UgbWlncmF0aW9uIGRhdGEgb24gdGhlIGRldmljZSByZXN1 bWUgc3RhdGUuIFRoZTxicj4NCitjbGllbnQgbXVzdCB3cml0ZSBkYXRhIG9uIHRoZSBzYW1lIG9y ZGVyIGFuZCB0cmFuc2N0aW9uIHNpemUgYXMgcmVhZC48YnI+DQorPGJyPg0KK0lmIGFuIGVycm9y IG9jY3VycyB0aGVuIHRoZSBzZXJ2ZXIgbXVzdCBmYWlsIHRoZSByZWFkIG9yIHdyaXRlIG9wZXJh dGlvbi4gSXQgaXM8YnI+DQorYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIG9mIHRoZSBjbGllbnQg aG93IHRvIGhhbmRsZSBlcnJvcnMuPGJyPg0KKzxicj4NCitWRklPX1VTRVJfREVWSUNFX0dFVF9J UlFfSU5GTzxicj4NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4NCis8YnI+DQor TWVzc2FnZSBmb3JtYXQ8YnI+DQorXl5eXl5eXl5eXl5eXl48YnI+DQorPGJyPg0KKystLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTmFtZSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFZhbHVlJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrPT09PT09PT09PT09 PT0rPT09PT09PT09PT09PT09PT09PT09PT09Kzxicj4NCit8IE1lc3NhZ2UgSUQmbmJzcDsgJm5i c3A7fCAmbHQ7SUQmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IENvbW1hbmQmbmJzcDsgJm5ic3A7ICZuYnNwOyB8 IDYmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSs8YnI+DQorfCBNZXNzYWdlIHNpemUgfCAzMiZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0K K3wgRmxhZ3MmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBSZXBseSBiaXQgc2V0IGluIHJl cGx5IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+ DQorfCBFcnJvciZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDAvZXJybm8mbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBJUlEgaW5mbyZu YnNwOyAmbmJzcDsgJm5ic3A7fCBWRklPIElSUSBpbmZvJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rPGJyPg0KKzxicj4NCitUaGlzIGNvbW1hbmQgbWVzc2FnZSBpcyBzZW50IGJ5IHRoZSBjbGll bnQgdG8gdGhlIHNlcnZlciB0byBxdWVyeSBmb3I8YnI+DQoraW5mb3JtYXRpb24gYWJvdXQgZGV2 aWNlIGludGVycnVwdCB0eXBlcy4gVGhlIFZGSU8gSVJRIGluZm8gc3RydWN0dXJlIGlzPGJyPg0K K2RlZmluZWQgaW4gYGAmbHQ7bGludXgvdmZpby5oJmd0O2BgIChgYHN0cnVjdCB2ZmlvX2lycV9p bmZvYGApLjxicj4NCis8YnI+DQorVkZJTyBJUlEgaW5mbyBmb3JtYXQ8YnI+DQorXl5eXl5eXl5e Xl5eXl5eXl5eXl48YnI+DQorPGJyPg0KKystLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSs8YnI+DQorfCBOYW1lJm5ic3A7IHwgT2Zmc2V0IHwgU2l6ZSZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgfDxicj4NCisrPT09PT09PSs9PT09PT09PSs9PT09PT09PT09PT09PT09PT09 PT09PT09PT0rPGJyPg0KK3wgYXJnc3ogfCAxNiZuYnNwOyAmbmJzcDsgJm5ic3A7fCA0Jm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgZmxhZ3MgfCAyMCZuYnNwOyAmbmJzcDsg Jm5ic3A7fCA0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDt8ICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfDxi cj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCB8IEJpdCB8IERlZmluaXRpb24mbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCB8PGJy Pg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICs9PT09PSs9PT09PT09PT09PT09PT09 PT09PT09PT09PSsgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCB8IDAmbmJz cDsgJm5ic3A7fCBWRklPX0lSUV9JTkZPX0VWRU5URkQmbmJzcDsgJm5ic3A7IHwgfDxicj4NCit8 Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCArLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rIHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgfCAxJm5ic3A7ICZu YnNwO3wgVkZJT19JUlFfSU5GT19NQVNLQUJMRSZuYnNwOyAmbmJzcDt8IHw8YnI+DQorfCZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t KyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IHwgMiZuYnNwOyAmbmJzcDt8 IFZGSU9fSVJRX0lORk9fQVVUT01BU0tFRCB8IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO3wgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8PGJyPg0KK3wmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IHwgMyZuYnNwOyAmbmJzcDt8IFZGSU9fSVJRX0lORk9f Tk9SRVNJWkUmbmJzcDsgJm5ic3A7fCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt8ICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfDxicj4NCisrLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgaW5kZXggfCAyNCZu YnNwOyAmbmJzcDsgJm5ic3A7fCA0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxi cj4NCisrLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0K K3wgY291bnQgfCAyOCZuYnNwOyAmbmJzcDsgJm5ic3A7fCA0Jm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rPGJyPg0KKzxicj4NCisqICphcmdzeiogaXMgdGhlIHNpemUgb2YgdGhlIFZGSU8g SVJRIGluZm8gc3RydWN0dXJlLjxicj4NCisqICpmbGFncyogZGVmaW5lcyBJUlEgYXR0cmlidXRl czo8YnI+DQorPGJyPg0KKyZuYnNwOyAqICpWRklPX0lSUV9JTkZPX0VWRU5URkQqIGluZGljYXRl cyB0aGUgSVJRIHR5cGUgY2FuIHN1cHBvcnQgc2VydmVyIGV2ZW50ZmQ8YnI+DQorJm5ic3A7ICZu YnNwOyBzaWduYWxsaW5nLjxicj4NCismbmJzcDsgKiAqVkZJT19JUlFfSU5GT19NQVNLQUJMRSog aW5kaWNhdGVzIHRoYXQgdGhlIElSUSB0eXBlIHN1cHBvcnRzIHRoZSBNQVNLIGFuZDxicj4NCism bmJzcDsgJm5ic3A7IFVOTUFTSyBhY3Rpb25zIGluIGEgVkZJT19VU0VSX0RFVklDRV9TRVRfSVJR UyBtZXNzYWdlLjxicj4NCismbmJzcDsgKiAqVkZJT19JUlFfSU5GT19BVVRPTUFTS0VEKiBpbmRp Y2F0ZXMgdGhlIElSUSB0eXBlIG1hc2tzIGl0c2VsZiBhZnRlciBiZWluZzxicj4NCismbmJzcDsg Jm5ic3A7IHRyaWdnZXJlZCwgYW5kIHRoZSBjbGllbnQgbXVzdCBzZW5kIGFuIFVOTUFTSyBhY3Rp b24gdG8gcmVjZWl2ZSBuZXc8YnI+DQorJm5ic3A7ICZuYnNwOyBpbnRlcnJ1cHRzLjxicj4NCism bmJzcDsgKiAqVkZJT19JUlFfSU5GT19OT1JFU0laRSogaW5kaWNhdGVzIFZGSU9fVVNFUl9TRVRf SVJRUyBvcGVyYXRpb25zIHNldHVwPGJyPg0KKyZuYnNwOyAmbmJzcDsgaW50ZXJydXB0cyBhcyBh IHNldCwgYW5kIG5ldyBzdWItaW5kZXhlcyBjYW5ub3QgYmUgZW5hYmxlZCB3aXRob3V0IGRpc2Fi bGluZzxicj4NCismbmJzcDsgJm5ic3A7IHRoZSBlbnRpcmUgdHlwZS48YnI+DQorPGJyPg0KKyog aW5kZXggaXMgdGhlIGluZGV4IG9mIElSUSB0eXBlIGJlaW5nIHF1ZXJpZWQsIGl0IGlzIHRoZSBv bmx5IGZpZWxkIHRoYXQgaXM8YnI+DQorJm5ic3A7IHJlcXVpcmVkIHRvIGJlIHNldCBpbiB0aGUg Y29tbWFuZCBtZXNzYWdlLjxicj4NCisqIGNvdW50IGRlc2NyaWJlcyB0aGUgbnVtYmVyIG9mIGlu dGVycnVwdHMgb2YgdGhlIHF1ZXJpZWQgdHlwZS48YnI+DQorPGJyPg0KK1ZGSU9fVVNFUl9ERVZJ Q0VfU0VUX0lSUVM8YnI+DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4NCis8YnI+DQor TWVzc2FnZSBmb3JtYXQ8YnI+DQorXl5eXl5eXl5eXl5eXl48YnI+DQorPGJyPg0KKystLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTmFtZSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFZhbHVlJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrPT09PT09PT09PT09 PT0rPT09PT09PT09PT09PT09PT09PT09PT09Kzxicj4NCit8IE1lc3NhZ2UgSUQmbmJzcDsgJm5i c3A7fCAmbHQ7SUQmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IENvbW1hbmQmbmJzcDsgJm5ic3A7ICZuYnNwOyB8 IDcmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSs8YnI+DQorfCBNZXNzYWdlIHNpemUgfCAzNiArIGFueSBkYXRhJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgRmxhZ3MmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgfCBSZXBseSBiaXQgc2V0IGluIHJlcGx5IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBFcnJvciZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyB8IDAvZXJybm8mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSs8YnI+DQorfCBJUlEgc2V0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBWRklPIElSUSBz ZXQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorPGJyPg0KK1RoaXMgY29t bWFuZCBtZXNzYWdlIGlzIHNlbnQgYnkgdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRvIHNldCBh Y3Rpb25zIGZvcjxicj4NCitkZXZpY2UgaW50ZXJydXB0IHR5cGVzLiBUaGUgVkZJTyBJUlEgc2V0 IHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluPGJyPg0KK2BgJmx0O2xpbnV4L3ZmaW8uaCZndDtgYCAo YGBzdHJ1Y3QgdmZpb19pcnFfc2V0YGApLjxicj4NCis8YnI+DQorVkZJTyBJUlEgc2V0IGZvcm1h dDxicj4NCiteXl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0KKzxicj4NCisrLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTmFtZSZuYnNwOyB8IE9m ZnNldCB8IFNpemUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKys9PT09 PT09Kz09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs8YnI+DQorfCBhcmdz eiB8IDE2Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IDQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKzxicj4NCit8IGZsYWdzIHwgMjAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgNCZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDt8ICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsg fDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCB8IEJpdCB8IERlZmluaXRpb24m bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyB8IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgKz09PT09Kz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09KyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt8IHwgMCZuYnNwOyAmbmJzcDt8IFZGSU9fSVJRX1NFVF9EQVRBX05PTkUmbmJzcDsgJm5i c3A7ICZuYnNwOyB8IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgKy0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDt8IHwgMSZuYnNwOyAmbmJzcDt8IFZGSU9fSVJRX1NFVF9EQVRBX0JPT0wmbmJz cDsgJm5ic3A7ICZuYnNwOyB8IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg Ky0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8PGJyPg0KK3wmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDt8IHwgMiZuYnNwOyAmbmJzcDt8IFZGSU9fSVJRX1NFVF9EQVRBX0VW RU5URkQmbmJzcDsgJm5ic3A7fCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8 ICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfDxicj4NCit8Jm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7fCB8IDMmbmJzcDsgJm5ic3A7fCBWRklPX0lSUV9TRVRfQUNUSU9O X01BU0smbmJzcDsgJm5ic3A7IHwgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 fCArLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHw8YnI+DQorfCZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwO3wgfCA0Jm5ic3A7ICZuYnNwO3wgVkZJT19JUlFfU0VUX0FDVElP Tl9VTk1BU0smbmJzcDsgfCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICst LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfDxicj4NCit8Jm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7fCB8IDUmbmJzcDsgJm5ic3A7fCBWRklPX0lSUV9TRVRfQUNUSU9OX1RS SUdHRVIgfCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICstLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfDxicj4NCisrLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgaW5kZXggfCAyNCZuYnNwOyAmbmJz cDsgJm5ic3A7fCA0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJy Pg0KKystLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+ DQorfCBzdGFydCB8IDI4Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IDQmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IGNvdW50IHwgMzImbmJzcDsgJm5ic3A7ICZu YnNwO3wgNCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisr LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wg ZGF0YSZuYnNwOyB8IDM2Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IHZhcmlhYmxlJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKzxicj4NCis8YnI+DQorKiAqYXJnc3oqIGlzIHRoZSBzaXplIG9mIHRoZSBWRklPIElS USBzZXQgc3RydWN0dXJlLCBpbmNsdWRpbmcgYW55ICpkYXRhKiBmaWVsZC48YnI+DQorKiAqZmxh Z3MqIGRlZmluZXMgdGhlIGFjdGlvbiBwZXJmb3JtZWQgb24gdGhlIGludGVycnVwdCByYW5nZS4g VGhlIERBVEEgZmxhZ3M8YnI+DQorJm5ic3A7IGRlc2NyaWJlIHRoZSBkYXRhIGZpZWxkIHNlbnQg aW4gdGhlIG1lc3NhZ2U7IHRoZSBBQ1RJT04gZmxhZ3MgZGVzY3JpYmUgdGhlPGJyPg0KKyZuYnNw OyBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkLiBUaGUgZmxhZ3MgYXJlIG11dHVhbGx5IGV4Y2x1c2l2 ZSBmb3IgYm90aCBzZXRzLjxicj4NCis8YnI+DQorJm5ic3A7ICogKlZGSU9fSVJRX1NFVF9EQVRB X05PTkUqIGluZGljYXRlcyB0aGVyZSBpcyBubyBkYXRhIGZpZWxkIGluIHRoZSBjb21tYW5kLjxi cj4NCismbmJzcDsgJm5ic3A7IFRoZSBhY3Rpb24gaXMgcGVyZm9ybWVkIHVuY29uZGl0aW9uYWxs eS48YnI+DQorJm5ic3A7ICogKlZGSU9fSVJRX1NFVF9EQVRBX0JPT0wqIGluZGljYXRlcyB0aGUg ZGF0YSBmaWVsZCBpcyBhbiBhcnJheSBvZiBib29sZWFuPGJyPg0KKyZuYnNwOyAmbmJzcDsgYnl0 ZXMuIFRoZSBhY3Rpb24gaXMgcGVyZm9ybWVkIGlmIHRoZSBjb3JyZXNwb25kaW5nIGJvb2xlYW4g aXMgdHJ1ZS48YnI+DQorJm5ic3A7ICogKlZGSU9fSVJRX1NFVF9EQVRBX0VWRU5URkQqIGluZGlj YXRlcyBhbiBhcnJheSBvZiBldmVudCBmaWxlIGRlc2NyaXB0b3JzPGJyPg0KKyZuYnNwOyAmbmJz cDsgd2FzIHNlbnQgaW4gdGhlIG1lc3NhZ2UgbWV0YS1kYXRhLiBUaGVzZSBkZXNjcmlwdG9ycyB3 aWxsIGJlIHNpZ25hbGxlZCB3aGVuPGJyPg0KKyZuYnNwOyAmbmJzcDsgdGhlIGFjdGlvbiBkZWZp bmVkIGJ5IHRoZSBhY3Rpb24gZmxhZ3Mgb2NjdXJzLiBJbiBBRl9VTklYIHNvY2tldHMsIHRoZTxi cj4NCismbmJzcDsgJm5ic3A7IGRlc2NyaXB0b3JzIGFyZSBzZW50IGFzIFNDTV9SSUdIVFMgdHlw ZSBhbmNpbGxhcnkgZGF0YS48YnI+DQorJm5ic3A7ICogKlZGSU9fSVJRX1NFVF9BQ1RJT05fTUFT SyogaW5kaWNhdGVzIGEgbWFza2luZyBldmVudC4gSXQgY2FuIGJlIHVzZWQgd2l0aDxicj4NCism bmJzcDsgJm5ic3A7IFZGSU9fSVJRX1NFVF9EQVRBX0JPT0wgb3IgVkZJT19JUlFfU0VUX0RBVEFf Tk9ORSB0byBtYXNrIGFuIGludGVycnVwdCwgb3I8YnI+DQorJm5ic3A7ICZuYnNwOyB3aXRoIFZG SU9fSVJRX1NFVF9EQVRBX0VWRU5URkQgdG8gZ2VuZXJhdGUgYW4gZXZlbnQgd2hlbiB0aGUgZ3Vl c3QgbWFza3M8YnI+DQorJm5ic3A7ICZuYnNwOyB0aGUgaW50ZXJydXB0Ljxicj4NCismbmJzcDsg KiAqVkZJT19JUlFfU0VUX0FDVElPTl9VTk1BU0sqIGluZGljYXRlcyBhbiB1bm1hc2tpbmcgZXZl bnQuIEl0IGNhbiBiZSB1c2VkPGJyPg0KKyZuYnNwOyAmbmJzcDsgd2l0aCBWRklPX0lSUV9TRVRf REFUQV9CT09MIG9yIFZGSU9fSVJRX1NFVF9EQVRBX05PTkUgdG8gdW5tYXNrIGFuPGJyPg0KKyZu YnNwOyAmbmJzcDsgaW50ZXJydXB0LCBvciB3aXRoIFZGSU9fSVJRX1NFVF9EQVRBX0VWRU5URkQg dG8gZ2VuZXJhdGUgYW4gZXZlbnQgd2hlbiB0aGU8YnI+DQorJm5ic3A7ICZuYnNwOyBndWVzdCB1 bm1hc2tzIHRoZSBpbnRlcnJ1cHQuPGJyPg0KKyZuYnNwOyAqICpWRklPX0lSUV9TRVRfQUNUSU9O X1RSSUdHRVIqIGluZGljYXRlcyBhIHRyaWdnZXJpbmcgZXZlbnQuIEl0IGNhbiBiZSB1c2VkPGJy Pg0KKyZuYnNwOyAmbmJzcDsgd2l0aCBWRklPX0lSUV9TRVRfREFUQV9CT09MIG9yIFZGSU9fSVJR X1NFVF9EQVRBX05PTkUgdG8gdHJpZ2dlciBhbjxicj4NCismbmJzcDsgJm5ic3A7IGludGVycnVw dCwgb3Igd2l0aCBWRklPX0lSUV9TRVRfREFUQV9FVkVOVEZEIHRvIGdlbmVyYXRlIGFuIGV2ZW50 IHdoZW4gdGhlPGJyPg0KKyZuYnNwOyAmbmJzcDsgc2VydmVyIHRyaWdnZXJzIHRoZSBpbnRlcnJ1 cHQuPGJyPg0KKzxicj4NCisqICppbmRleCogaXMgdGhlIGluZGV4IG9mIElSUSB0eXBlIGJlaW5n IHNldHVwLjxicj4NCisqICpzdGFydCogaXMgdGhlIHN0YXJ0IG9mIHRoZSBzdWItaW5kZXggYmVp bmcgc2V0Ljxicj4NCisqICpjb3VudCogZGVzY3JpYmVzIHRoZSBudW1iZXIgb2Ygc3ViLWluZGV4 ZXMgYmVpbmcgc2V0LiBBcyBhIHNwZWNpYWwgY2FzZSwgYTxicj4NCismbmJzcDsgY291bnQgb2Yg MCB3aXRoIGRhdGEgZmxhZ3Mgb2YgVkZJT19JUlFfU0VUX0RBVEFfTk9ORSBkaXNhYmxlcyBhbGwg aW50ZXJydXB0czxicj4NCismbmJzcDsgb2YgdGhlIGluZGV4Ljxicj4NCisqICpkYXRhKiBpcyBh biBvcHRpb25hbCBmaWVsZCBpbmNsdWRlZCB3aGVuIHRoZTxicj4NCismbmJzcDsgVkZJT19JUlFf U0VUX0RBVEFfQk9PTCBmbGFnIGlzIHByZXNlbnQuIEl0IGNvbnRhaW5zIGFuIGFycmF5IG9mIGJv b2xlYW5zPGJyPg0KKyZuYnNwOyB0aGF0IHNwZWNpZnkgd2hldGhlciB0aGUgYWN0aW9uIGlzIHRv IGJlIHBlcmZvcm1lZCBvbiB0aGUgY29ycmVzcG9uZGluZzxicj4NCismbmJzcDsgaW5kZXguIEl0 J3MgdXNlZCB3aGVuIHRoZSBhY3Rpb24gaXMgb25seSBwZXJmb3JtZWQgb24gYSBzdWJzZXQgb2Yg dGhlIHJhbmdlPGJyPg0KKyZuYnNwOyBzcGVjaWZpZWQuPGJyPg0KKzxicj4NCitOb3QgYWxsIGlu dGVycnVwdCB0eXBlcyBzdXBwb3J0IGV2ZXJ5IGNvbWJpbmF0aW9uIG9mIGRhdGEgYW5kIGFjdGlv biBmbGFncy48YnI+DQorVGhlIGNsaWVudCBtdXN0IGtub3cgdGhlIGNhcGFiaWxpdGllcyBvZiB0 aGUgZGV2aWNlIGFuZCBJUlEgaW5kZXggYmVmb3JlIGl0PGJyPg0KK3NlbmRzIGEgVkZJT19VU0VS X0RFVklDRV9TRVRfSVJRIG1lc3NhZ2UuPGJyPg0KKzxicj4NCisuLiBfUmVhZCBhbmQgV3JpdGUg T3BlcmF0aW9uczo8YnI+DQorPGJyPg0KK1JlYWQgYW5kIFdyaXRlIE9wZXJhdGlvbnM8YnI+DQor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4NCis8YnI+DQorTm90IGFsbCBJL08gb3BlcmF0 aW9ucyBiZXR3ZWVuIHRoZSBjbGllbnQgYW5kIHNlcnZlciBjYW4gYmUgZG9uZSB2aWEgZGlyZWN0 PGJyPg0KK2FjY2VzcyBvZiBtZW1vcnkgbWFwcGVkIHdpdGggYW4gbW1hcCgpIGNhbGwuIEluIHRo ZXNlIGNhc2VzLCB0aGUgY2xpZW50IGFuZDxicj4NCitzZXJ2ZXIgdXNlIG1lc3NhZ2VzIHNlbnQg b3ZlciB0aGUgc29ja2V0LiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZXNlIG9wZXJhdGlvbnM8YnI+ DQord2lsbCBoYXZlIGxvd2VyIHBlcmZvcm1hbmNlIHRoYW4gZGlyZWN0IGFjY2Vzcy48YnI+DQor PGJyPg0KK1RoZSBjbGllbnQgY2FuIGFjY2VzcyBzZXJ2ZXIgbWVtb3J5IHdpdGggVkZJT19VU0VS X1JFR0lPTl9SRUFEIGFuZDxicj4NCitWRklPX1VTRVJfUkVHSU9OX1dSSVRFIGNvbW1hbmRzLiBU aGVzZSBzaGFyZSBhIGNvbW1vbiBkYXRhIHN0cnVjdHVyZSB0aGF0PGJyPg0KK2FwcGVhcnMgYWZ0 ZXIgdGhlIG1lc3NhZ2UgaGVhZGVyLjxicj4NCis8YnI+DQorUkVHSU9OIFJlYWQvV3JpdGUgRGF0 YTxicj4NCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0KKzxicj4NCisrLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLSs8YnI+DQorfCBOYW1lJm5ic3A7ICZuYnNwO3wgT2Zmc2V0IHwgU2l6 ZSZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrPT09PT09PT0rPT09PT09PT0rPT09PT09PT09 PSs8YnI+DQorfCBPZmZzZXQgfCAxNiZuYnNwOyAmbmJzcDsgJm5ic3A7fCA4Jm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rPGJy Pg0KK3wgUmVnaW9uIHwgMjQmbmJzcDsgJm5ic3A7ICZuYnNwO3wgNCZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKzxicj4NCit8 IENvdW50Jm5ic3A7IHwgMjgmbmJzcDsgJm5ic3A7ICZuYnNwO3wgNCZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKzxicj4NCit8 IERhdGEmbmJzcDsgJm5ic3A7fCAzMiZuYnNwOyAmbmJzcDsgJm5ic3A7fCB2YXJpYWJsZSB8PGJy Pg0KKystLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKzxicj4NCis8YnI+DQorKiAqT2Zmc2V0 KiBpbnRvIHRoZSByZWdpb24gYmVpbmcgYWNjZXNzZWQuPGJyPg0KKyogKlJlZ2lvbiogaXMgdGhl IGluZGV4IG9mIHRoZSByZWdpb24gYmVpbmcgYWNjZXNzZWQuPGJyPg0KKyogKkNvdW50KiBpcyB0 aGUgc2l6ZSBvZiB0aGUgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZC48YnI+DQorKiAqRGF0YSogaXMg dGhlIGRhdGEgdG8gYmUgcmVhZCBvciB3cml0dGVuLjxicj4NCis8YnI+DQorVGhlIHNlcnZlciBj YW4gYWNjZXNzIGNsaWVudCBtZW1vcnkgd2l0aCBWRklPX1VTRVJfRE1BX1JFQUQgYW5kPGJyPg0K K1ZGSU9fVVNFUl9ETUFfV1JJVEUgbWVzc2FnZXMuIFRoZXNlIGFsc28gc2hhcmUgYSBjb21tb24g ZGF0YSBzdHJ1Y3R1cmUgdGhhdDxicj4NCithcHBlYXJzIGFmdGVyIHRoZSBtZXNzYWdlIGhlYWRl ci48YnI+DQorPGJyPg0KK0RNQSBSZWFkL1dyaXRlIERhdGE8YnI+DQorXl5eXl5eXl5eXl5eXl5e Xl5eXjxicj4NCis8YnI+DQorKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKzxicj4NCit8 IE5hbWUmbmJzcDsgJm5ic3A7IHwgT2Zmc2V0IHwgU2l6ZSZuYnNwOyAmbmJzcDsgJm5ic3A7fDxi cj4NCisrPT09PT09PT09Kz09PT09PT09Kz09PT09PT09PT0rPGJyPg0KK3wgQWRkcmVzcyB8IDE2 Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IDgmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4N CisrLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rPGJyPg0KK3wgQ291bnQmbmJzcDsgJm5i c3A7fCAyNCZuYnNwOyAmbmJzcDsgJm5ic3A7fCA0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 IHw8YnI+DQorKy0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKzxicj4NCit8IERhdGEmbmJz cDsgJm5ic3A7IHwgMjgmbmJzcDsgJm5ic3A7ICZuYnNwO3wgdmFyaWFibGUgfDxicj4NCisrLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rPGJyPg0KKzxicj4NCisqICpBZGRyZXNzKiBpcyB0 aGUgYXJlYSBvZiBjbGllbnQgbWVtb3J5IGJlaW5nIGFjY2Vzc2VkLiBUaGlzIGFkZHJlc3MgbXVz dCBoYXZlPGJyPg0KKyZuYnNwOyBiZWVuIHByZXZpb3VzbHkgZXhwb3J0ZWQgdG8gdGhlIHNlcnZl ciB3aXRoIGEgVkZJT19VU0VSX0RNQV9NQVAgbWVzc2FnZS48YnI+DQorKiAqQ291bnQqIGlzIHRo ZSBzaXplIG9mIHRoZSBkYXRhIHRvIGJlIHRyYW5zZmVycmVkLjxicj4NCisqICpEYXRhKiBpcyB0 aGUgZGF0YSB0byBiZSByZWFkIG9yIHdyaXR0ZW4uPGJyPg0KKzxicj4NCitWRklPX1VTRVJfUkVH SU9OX1JFQUQ8YnI+DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPg0KKzxicj4NCitNZXNzYWdl IGZvcm1hdDxicj4NCiteXl5eXl5eXl5eXl5eXjxicj4NCis8YnI+DQorKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBOYW1lJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3wgVmFsdWUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKys9PT09PT09PT09PT09PSs9PT09 PT09PT09PT09PT09PT09PT09PT0rPGJyPg0KK3wgTWVzc2FnZSBJRCZuYnNwOyAmbmJzcDt8ICZs dDtJRCZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rPGJyPg0KK3wgQ29tbWFuZCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgOCZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKzxicj4NCit8IE1lc3NhZ2Ugc2l6ZSB8IDMyICsgZGF0YSBzaXplJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSs8YnI+DQorfCBGbGFncyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8 IFJlcGx5IGJpdCBzZXQgaW4gcmVwbHkgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IEVycm9yJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 IHwgMC9lcnJubyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kzxicj4NCit8IFJlYWQgaW5mbyZuYnNwOyAmbmJzcDsgfCBSRUdJT04gcmVhZC93cml0ZSBkYXRh IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQor PGJyPg0KK1RoaXMgY29tbWFuZCBtZXNzYWdlIGlzIHNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRo ZSBzZXJ2ZXIgdG8gcmVhZCBmcm9tIHNlcnZlcjxicj4NCittZW1vcnkuJm5ic3A7IEluIHRoZSBj b21tYW5kIG1lc3NhZ2VzLCB0aGVyZSBpcyBubyBkYXRhLCBhbmQgdGhlIGNvdW50IGlzIHRoZSBh bW91bnQ8YnI+DQorb2YgZGF0YSB0byBiZSByZWFkLiBUaGUgcmVwbHkgbWVzc2FnZSBtdXN0IGlu Y2x1ZGUgdGhlIGRhdGEgcmVhZCwgYW5kIGl0cyBjb3VudDxicj4NCitmaWVsZCBpcyB0aGUgYW1v dW50IG9mIGRhdGEgcmVhZC48YnI+DQorPGJyPg0KK1ZGSU9fVVNFUl9SRUdJT05fV1JJVEU8YnI+ DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4NCis8YnI+DQorTWVzc2FnZSBmb3JtYXQ8YnI+ DQorXl5eXl5eXl5eXl5eXl48YnI+DQorPGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTmFtZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDt8IFZhbHVlJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrPT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09 PT09PT09PT09Kzxicj4NCit8IE1lc3NhZ2UgSUQmbmJzcDsgJm5ic3A7fCAmbHQ7SUQmZ3Q7Jm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kzxicj4NCit8IENvbW1hbmQmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDkmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+ DQorfCBNZXNzYWdlIHNpemUgfCAzMiArIGRhdGEgc2l6ZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rPGJyPg0KK3wgRmxhZ3MmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBSZXBseSBiaXQg c2V0IGluIHJlcGx5IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSs8YnI+DQorfCBFcnJvciZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDAvZXJybm8m bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8 YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBX cml0ZSBpbmZvJm5ic3A7ICZuYnNwO3wgUkVHSU9OIHJlYWQvd3JpdGUgZGF0YSB8PGJyPg0KKyst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KKzxicj4NCitUaGlz IGNvbW1hbmQgbWVzc2FnZSBpcyBzZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHRv IHdyaXRlIHRvIHNlcnZlcjxicj4NCittZW1vcnkuJm5ic3A7IFRoZSBjb21tYW5kIG1lc3NhZ2Ug bXVzdCBjb250YWluIHRoZSBkYXRhIHRvIGJlIHdyaXR0ZW4sIGFuZCBpdHMgY291bnQ8YnI+DQor ZmllbGQgbXVzdCBjb250YWluIHRoZSBhbW91bnQgb2Ygd3JpdGUgZGF0YS4gVGhlIGNvdW50IGZp ZWxkIGluIHRoZSByZXBseTxicj4NCittZXNzYWdlIG11c3QgYmUgemVyby48YnI+DQorPGJyPg0K K1ZGSU9fVVNFUl9ETUFfUkVBRDxicj4NCistLS0tLS0tLS0tLS0tLS0tLS08YnI+DQorPGJyPg0K K01lc3NhZ2UgZm9ybWF0PGJyPg0KK15eXl5eXl5eXl5eXl5ePGJyPg0KKzxicj4NCisrLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IE5hbWUmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBWYWx1ZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKz09PT09PT09PT09 PT09Kz09PT09PT09PT09PT09PT09PT09PT09PSs8YnI+DQorfCBNZXNzYWdlIElEJm5ic3A7ICZu YnNwO3wgJmx0O0lEJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBDb21tYW5kJm5ic3A7ICZuYnNwOyAmbmJzcDsg fCAxMCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTWVzc2FnZSBzaXplIHwgMjggKyBkYXRhIHNpemUmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IEZsYWdzJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7IHwgUmVwbHkgYml0IHNldCBpbiByZXBseSB8PGJyPg0KKystLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgRXJyb3ImbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgfCAwL2Vycm5vJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rPGJyPg0KK3wgRE1BIGluZm8mbmJzcDsgJm5ic3A7ICZuYnNwO3wgRE1BIHJlYWQv d3JpdGUgZGF0YSZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKzxicj4NCis8YnI+DQorVGhpcyBjb21tYW5kIG1lc3NhZ2UgaXMgc2Vu dCBmcm9tIHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudCB0byByZWFkIGZyb20gY2xpZW50PGJyPg0K K21lbW9yeS4mbmJzcDsgSW4gdGhlIGNvbW1hbmQgbWVzc2FnZSwgdGhlcmUgaXMgbm8gZGF0YSwg YW5kIHRoZSBjb3VudCBtdXN0IHdpbGwgYmU8YnI+DQordGhlIGFtb3VudCBvZiBkYXRhIHRvIGJl IHJlYWQuIFRoZSByZXBseSBtZXNzYWdlIG11c3QgaW5jbHVkZSB0aGUgZGF0YSByZWFkLDxicj4N CithbmQgaXRzIGNvdW50IGZpZWxkIG11c3QgYmUgdGhlIGFtb3VudCBvZiBkYXRhIHJlYWQuPGJy Pg0KKzxicj4NCitWRklPX1VTRVJfRE1BX1dSSVRFPGJyPg0KKy0tLS0tLS0tLS0tLS0tLS0tLS08 YnI+DQorPGJyPg0KK01lc3NhZ2UgZm9ybWF0PGJyPg0KK15eXl5eXl5eXl5eXl5ePGJyPg0KKzxi cj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IE5h bWUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBWYWx1ZSZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQor Kz09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PSs8YnI+DQorfCBNZXNzYWdl IElEJm5ic3A7ICZuYnNwO3wgJmx0O0lEJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBDb21tYW5kJm5ic3A7ICZu YnNwOyAmbmJzcDsgfCAxMSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTWVzc2FnZSBzaXplIHwgMjggKyBk YXRhIHNpemUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IEZsYWdzJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7IHwgUmVwbHkgYml0IHNldCBpbiByZXBseSB8PGJyPg0KKystLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgRXJyb3ImbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfCAwL2Vycm5vJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgRE1BIGluZm8mbmJzcDsgJm5ic3A7ICZuYnNw O3wgRE1BIHJlYWQvd3JpdGUgZGF0YSZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCis8YnI+DQorVGhpcyBjb21tYW5kIG1l c3NhZ2UgaXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudCB0byB3cml0ZSB0byBj bGllbnQ8YnI+DQorbWVtb3J5LiZuYnNwOyBUaGUgY29tbWFuZCBtZXNzYWdlIG11c3QgY29udGFp biB0aGUgZGF0YSB0byBiZSB3cml0dGVuLCBhbmQgaXRzIGNvdW50PGJyPg0KK2ZpZWxkIG11c3Qg Y29udGFpbiB0aGUgYW1vdW50IG9mIHdyaXRlIGRhdGEuIFRoZSBjb3VudCBmaWVsZCBpbiB0aGUg cmVwbHk8YnI+DQorbWVzc2FnZSBtdXN0IGJlIHplcm8uPGJyPg0KKzxicj4NCitWRklPX1VTRVJf Vk1fSU5URVJSVVBUPGJyPg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+DQorPGJyPg0KK01l c3NhZ2UgZm9ybWF0PGJyPg0KK15eXl5eXl5eXl5eXl5ePGJyPg0KKzxicj4NCisrLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTmFtZSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBWYWx1ZSZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKz09PT09 PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09Kzxicj4NCit8IE1lc3NhZ2UgSUQm bmJzcDsgJm5ic3A7ICZuYnNwO3wgJmx0O0lEJmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IENvbW1hbmQmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCAxMiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKyst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBNZXNzYWdl IHNpemUmbmJzcDsgJm5ic3A7fCAyMCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBGbGFncyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBSZXBseSBiaXQgc2V0IGluIHJlcGx5IHw8YnI+ DQorKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IEVy cm9yJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDAvZXJybm8mbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IEludGVycnVw dCBpbmZvIHwgJmx0O2ludGVycnVwdCZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSs8YnI+DQorPGJyPg0KK1RoaXMgY29tbWFuZCBtZXNzYWdlIGlzIHNlbnQgZnJvbSB0aGUg c2VydmVyIHRvIHRoZSBjbGllbnQgdG8gc2lnbmFsIHRoZSBkZXZpY2U8YnI+DQoraGFzIHJhaXNl ZCBhbiBpbnRlcnJ1cHQuPGJyPg0KKzxicj4NCitJbnRlcnJ1cHQgaW5mbyBmb3JtYXQ8YnI+DQor Xl5eXl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0KKzxicj4NCisrLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tKzxicj4NCit8IE5hbWUmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IE9mZnNldCB8IFNpemUg fDxicj4NCisrPT09PT09PT09PT0rPT09PT09PT0rPT09PT09Kzxicj4NCit8IFN1Yi1pbmRleCB8 IDE2Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IDQmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLSs8YnI+DQorPGJyPg0KKyogKlN1Yi1pbmRleCogaXMgcmVsYXRp dmUgdG8gdGhlIElSUSBpbmRleCwgZS5nLiwgdGhlIHZlY3RvciBudW1iZXIgdXNlZCBpbiBQQ0k8 YnI+DQorJm5ic3A7IE1TSS9YIHR5cGUgaW50ZXJydXB0cy48YnI+DQorPGJyPg0KK1ZGSU9fVVNF Ul9ERVZJQ0VfUkVTRVQ8YnI+DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4NCis8YnI+DQor TWVzc2FnZSBmb3JtYXQ8YnI+DQorXl5eXl5eXl5eXl5eXl48YnI+DQorPGJyPg0KKystLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTmFtZSZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFZhbHVlJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrPT09PT09PT09PT09 PT0rPT09PT09PT09PT09PT09PT09PT09PT09Kzxicj4NCit8IE1lc3NhZ2UgSUQmbmJzcDsgJm5i c3A7fCAmbHQ7SUQmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IENvbW1hbmQmbmJzcDsgJm5ic3A7ICZuYnNwOyB8 IDEzJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSs8YnI+DQorfCBNZXNzYWdlIHNpemUgfCAxNiZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0K K3wgRmxhZ3MmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBSZXBseSBiaXQgc2V0IGluIHJl cGx5IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+ DQorfCBFcnJvciZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDAvZXJybm8mbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorPGJyPg0KK1RoaXMg Y29tbWFuZCBtZXNzYWdlIGlzIHNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIgdG8g cmVzZXQgdGhlIGRldmljZS48YnI+DQorPGJyPg0KK1ZGSU9fVVNFUl9ESVJUWV9QQUdFUzxicj4N CistLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+DQorPGJyPg0KK01lc3NhZ2UgZm9ybWF0PGJyPg0K K15eXl5eXl5eXl5eXl5ePGJyPg0KKzxicj4NCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCit8IE5hbWUmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBWYWx1ZSZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKz09PT09 PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PSs8YnI+DQorfCBNZXNzYWdl IElEJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgJmx0O0lEJmd0OyZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwO3w8YnI+DQorKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSs8YnI+DQorfCBDb21tYW5kJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgfCAxNCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgTWVzc2FnZSBzaXplJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7fCAxNiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPGJyPg0KK3wgRmxhZ3MmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBSZXBseSBiaXQgc2V0 IGluIHJlcGx5IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSs8YnI+DQorfCBFcnJvciZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyB8IDAvZXJybm8mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+DQorKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBWRklPIERpcnR5IGJpdG1hcCZuYnNwOyB8ICZs dDtkaXJ0eSBiaXRtYXAmZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8YnI+ DQorKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQor PGJyPg0KK1RoaXMgY29tbWFuZCBpcyBhbmFsb2dvdXMgdG8gVkZJT19JT01NVV9ESVJUWV9QQUdF Uy4gSXQgaXMgc2VudCBieSB0aGUgY2xpZW50PGJyPg0KK3RvIHRoZSBzZXJ2ZXIgaW4gb3JkZXIg dG8gY29udHJvbCBsb2dnaW5nIG9mIGRpcnR5IHBhZ2VzLCB1c3VhbGx5IGR1cmluZyBhIGxpdmU8 YnI+DQorbWlncmF0aW9uLiBUaGUgVkZJTyBkaXJ0eSBiaXRtYXAgc3RydWN0dXJlIGlzIGRlZmlu ZWQgaW4gYGAmbHQ7bGludXgvdmZpby5oJmd0O2BgPGJyPg0KKyhgYHN0cnVjdCB2ZmlvX2lvbW11 X3R5cGUxX2RpcnR5X2JpdG1hcGBgKS48YnI+DQorPGJyPg0KK1ZGSU8gRGlydHkgQml0bWFwIEZv cm1hdDxicj4NCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl48YnI+DQorPGJyPg0KKystLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4N Cit8IE5hbWUmbmJzcDsgfCBPZmZzZXQgfCBTaXplJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDxicj4NCisrPT09PT09 PSs9PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs8YnI+ DQorfCBhcmdzeiB8IDAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IDQmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7fDxicj4NCisrLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCBmbGFncyB8IDQmbmJzcDsgJm5ic3A7ICZuYnNwOyB8 IDQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj4NCisrLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8YnI+DQorfCZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO3wgKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rIHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgfCBCaXQgfCBE ZWZpbml0aW9uJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8 IHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgKz09PT09Kz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rIHw8YnI+DQorfCZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwO3wgfCAwJm5ic3A7ICZuYnNwO3wgVkZJT19JT01NVV9ESVJUWV9QQUdFU19GTEFH X1NUQVJUJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDt8ICstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t KyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IHwgMSZuYnNwOyAmbmJzcDt8 IFZGSU9fSU9NTVVfRElSVFlfUEFHRVNfRkxBR19TVE9QJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7fCB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8ICstLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyB8PGJyPg0KK3wmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDt8IHwgMiZuYnNwOyAmbmJzcDt8IFZGSU9fSU9NTVVfRElSVFlfUEFHRVNf RkxBR19HRVRfQklUTUFQIHwgfDxicj4NCit8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCAr LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgfDxicj4NCisr LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSs8YnI+DQorfCBkYXRhJm5ic3A7IHwgOCZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgNCZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDt8PGJyPg0KKystLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzxicj4NCis8YnI+DQorKiAqYXJnc3oqIGlzIHRo ZSBzaXplIG9mIHRoZSBWRklPIGRpcnR5IGJpdG1hcCBpbmZvIHN0cnVjdHVyZS48YnI+DQorPGJy Pg0KKyogKmZsYWdzKiBkZWZpbmVzIHRoZSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkIGJ5IHRoZSBz ZXJ2ZXI6PGJyPg0KKzxicj4NCismbmJzcDsgKiAqVkZJT19JT01NVV9ESVJUWV9QQUdFU19GTEFH X1NUQVJUKiBpbnN0cnVjdHMgdGhlIHNlcnZlciB0byBzdGFydCBsb2dnaW5nPGJyPg0KKyZuYnNw OyAmbmJzcDsgcGFnZXMgaXQgZGlydGllcy4gTG9nZ2luZyBjb250aW51ZXMgdW50aWwgZXhwbGlj aXRseSBkaXNhYmxlZCBieTxicj4NCismbmJzcDsgJm5ic3A7IFZGSU9fSU9NTVVfRElSVFlfUEFH RVNfRkxBR19TVE9QLjxicj4NCis8YnI+DQorJm5ic3A7ICogKlZGSU9fSU9NTVVfRElSVFlfUEFH RVNfRkxBR19TVE9QKiBpbnN0cnVjdHMgdGhlIHNlcnZlciB0byBzdG9wIGxvZ2dpbmc8YnI+DQor Jm5ic3A7ICZuYnNwOyBkaXJ0eSBwYWdlcy48YnI+DQorPGJyPg0KKyZuYnNwOyAqICpWRklPX0lP TU1VX0RJUlRZX1BBR0VTX0ZMQUdfR0VUX0JJVE1BUCogcmVxdWVzdHMgZnJvbSB0aGUgc2VydmVy IHRvIHJldHVybjxicj4NCismbmJzcDsgJm5ic3A7IHRoZSBkaXJ0eSBiaXRtYXAgZm9yIGEgc3Bl Y2lmaWMgSU9WQSByYW5nZS4gVGhlIElPVkEgcmFuZ2UgaXMgc3BlY2lmaWVkIGJ5PGJyPg0KKyZu YnNwOyAmbmJzcDsgJnF1b3Q7VkZJTyBkaXJ0eSBiaXRtYXAgZ2V0JnF1b3Q7IHN0cnVjdHVyZSwg d2hpY2ggbXVzdCBpbW1lZGlhdGVsbHkgZm9sbG93IHRoZTxicj4NCismbmJzcDsgJm5ic3A7ICZx dW90O1ZGSU8gZGlydHkgYml0bWFwJnF1b3Q7IHN0cnVjdHVyZSwgZXhwbGFpbmVkIG5leHQuIFRo aXMgb3BlcmF0aW9uIGlzIG9ubHkgdmFsaWQ8YnI+DQorJm5ic3A7ICZuYnNwOyBpZiBsb2dnaW5n IG9mIGRpcnR5IHBhZ2VzIGhhcyBiZWVuIHByZXZpb3VzbHkgc3RhcnRlZC4gVGhlIHNlcnZlciBt dXN0PGJyPg0KKyZuYnNwOyAmbmJzcDsgcmVzcG9uZCB0aGUgc2FtZSB3YXkgaXQgZG9lcyBmb3Ig VkZJT19VU0VSX0RNQV9VTk1BUCAodGhlIGRpcnR5IHBhZ2VzPGJyPg0KKyZuYnNwOyAmbmJzcDsg Yml0bWFwIG11c3QgZm9sbG93IHRoZSByZXNwb25zZSBoZWFkZXIpLjxicj4NCis8YnI+DQorJm5i c3A7IFRoZXNlIGZsYWdzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBlYWNoIG90aGVyLjxi cj4NCis8YnI+DQorKiAqZGF0YSogVGhpcyBmaWVsZCBpcyB1bnVzZWQgaW4gdmZpby11c2VyLjxi cj4NCis8YnI+DQorVkZJTyBEaXJ0eSBCaXRtYXAgR2V0IEZvcm1hdDxicj4NCiteXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5ePGJyPg0KKzxicj4NCisrLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t Kzxicj4NCit8IE5hbWUmbmJzcDsgJm5ic3A7fCBPZmZzZXQgfCBTaXplIHw8YnI+DQorKz09PT09 PT09Kz09PT09PT09Kz09PT09PSs8YnI+DQorfCBpb3ZhJm5ic3A7ICZuYnNwO3wgMCZuYnNwOyAm bmJzcDsgJm5ic3A7IHwgOCZuYnNwOyAmbmJzcDsgfDxicj4NCisrLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tKzxicj4NCit8IHNpemUmbmJzcDsgJm5ic3A7fCA4Jm5ic3A7ICZuYnNwOyAmbmJzcDsg fCA4Jm5ic3A7ICZuYnNwOyB8PGJyPg0KKystLS0tLS0tLSstLS0tLS0tLSstLS0tLS0rPGJyPg0K K3wgYml0bWFwIHwgMTYmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMjQmbmJzcDsgJm5ic3A7fDxicj4N CisrLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tKzxicj4NCis8YnI+DQorKiAqaW92YSogaXMgdGhl IElPVkEgb2Zmc2V0PGJyPg0KKzxicj4NCisqICpzaXplKiBpcyB0aGUgc2l6ZSBvZiB0aGUgSU9W QSByZWdpb248YnI+DQorPGJyPg0KKyogKmJpdG1hcCogaXMgdGhlIFZGSU8gYml0bWFwIChgYHN0 cnVjdCB2ZmlvX2JpdG1hcGBgKSwgd2l0aCB0aGUgc2FtZSBzZW1hbnRpY3M8YnI+DQorJm5ic3A7 IGFzIFZGSU9fVVNFUl9ETUFfVU5NQVAuPGJyPg0KKzxicj4NCis8YnI+DQorQXBwZW5kaWNlczxi cj4NCis9PT09PT09PT09PGJyPg0KKzxicj4NCitVbnVzZWQgVkZJTyBpb2N0bCgpIGNvbW1hbmRz PGJyPg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+DQorPGJyPg0KK1RoZSBmb2xs b3dpbmcgVkZJTyBjb21tYW5kcyBkbyBub3QgaGF2ZSBhbiBlcXVpdmFsZW50IHZmaW8tdXNlciBj b21tYW5kOjxicj4NCis8YnI+DQorKiBWRklPX0dFVF9BUElfVkVSU0lPTjxicj4NCisqIFZGSU9f Q0hFQ0tfRVhURU5TSU9OPGJyPg0KKyogVkZJT19TRVRfSU9NTVU8YnI+DQorKiBWRklPX0dST1VQ X0dFVF9TVEFUVVM8YnI+DQorKiBWRklPX0dST1VQX1NFVF9DT05UQUlORVI8YnI+DQorKiBWRklP X0dST1VQX1VOU0VUX0NPTlRBSU5FUjxicj4NCisqIFZGSU9fR1JPVVBfR0VUX0RFVklDRV9GRDxi cj4NCisqIFZGSU9fSU9NTVVfR0VUX0lORk88YnI+DQorPGJyPg0KK0hvd2V2ZXIsIG9uY2Ugc3Vw cG9ydCBmb3IgbGl2ZSBtaWdyYXRpb24gZm9yIFZGSU8gZGV2aWNlcyBpcyBmaW5hbGl6ZWQgc29t ZTxicj4NCitvZiB0aGUgYWJvdmUgY29tbWFuZHMgbWF5IGhhdmUgdG8gYmUgaGFuZGxlZCBieSB0 aGUgY2xpZW50IGluIHRoZWlyPGJyPg0KK2NvcnJlc3BvbmRpbmcgdmZpby11c2VyIGZvcm0uIFRo aXMgd2lsbCBiZSBhZGRyZXNzZWQgaW4gYSBmdXR1cmUgcHJvdG9jb2w8YnI+DQordmVyc2lvbi48 YnI+DQorPGJyPg0KK1ZGSU8gZ3JvdXBzIGFuZCBjb250YWluZXJzPGJyPg0KK15eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5ePGJyPg0KKzxicj4NCitUaGUgY3VycmVudCBWRklPIGltcGxlbWVudGF0 aW9uIGluY2x1ZGVzIGdyb3VwIGFuZCBjb250YWluZXIgaWRpb21zIHRoYXQ8YnI+DQorZGVzY3Jp YmUgaG93IGEgZGV2aWNlIHJlbGF0ZXMgdG8gdGhlIGhvc3QgSU9NTVUuIEluIHRoZSB2ZmlvLXVz ZXI8YnI+DQoraW1wbGVtZW50YXRpb24sIHRoZSBJT01NVSBpcyBpbXBsZW1lbnRlZCBpbiBTVyBi eSB0aGUgY2xpZW50LCBhbmQgaXMgbm90PGJyPg0KK3Zpc2libGUgdG8gdGhlIHNlcnZlci4gVGhl IHNpbXBsZXN0IGlkZWEgd291bGQgYmUgdGhhdCB0aGUgY2xpZW50IHB1dCBlYWNoPGJyPg0KK2Rl dmljZSBpbnRvIGl0cyBvd24gZ3JvdXAgYW5kIGNvbnRhaW5lci48YnI+DQorPGJyPg0KK0JhY2tl bmQgUHJvZ3JhbSBDb252ZW50aW9uczxicj4NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08 YnI+DQorPGJyPg0KK3ZmaW8tdXNlciBiYWNrZW5kIHByb2dyYW0gY29udmVudGlvbnMgYXJlIGJh c2VkIG9uIHRoZSB2aG9zdC11c2VyIG9uZXMuPGJyPg0KKzxicj4NCisqIFRoZSBiYWNrZW5kIHBy b2dyYW0gbXVzdCBub3QgZGFlbW9uaXplIGl0c2VsZi48YnI+DQorKiBObyBhc3N1bXB0aW9ucyBt dXN0IGJlIG1hZGUgYXMgdG8gd2hhdCBhY2Nlc3MgdGhlIGJhY2tlbmQgcHJvZ3JhbSBoYXMgb24g dGhlPGJyPg0KKyZuYnNwOyBzeXN0ZW0uPGJyPg0KKyogRmlsZSBkZXNjcmlwdG9ycyAwLCAxIGFu ZCAyIG11c3QgZXhpc3QsIG11c3QgaGF2ZSByZWd1bGFyPGJyPg0KKyZuYnNwOyBzdGRpbi9zdGRv dXQvc3RkZXJyIHNlbWFudGljcywgYW5kIGNhbiBiZSByZWRpcmVjdGVkLjxicj4NCisqIFRoZSBi YWNrZW5kIHByb2dyYW0gbXVzdCBob25vciB0aGUgU0lHVEVSTSBzaWduYWwuPGJyPg0KKyogVGhl IGJhY2tlbmQgcHJvZ3JhbSBtdXN0IGFjY2VwdCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGxpbmUg b3B0aW9uczo8YnI+DQorPGJyPg0KKyZuYnNwOyAqIGBgLS1zb2NrZXQtcGF0aD1QQVRIYGA6IHBh dGggdG8gVU5JWCBkb21haW4gc29ja2V0LDxicj4NCismbmJzcDsgKiBgYC0tZmQ9RkROVU1gYDog ZmlsZSBkZXNjcmlwdG9yIGZvciBVTklYIGRvbWFpbiBzb2NrZXQsIGluY29tcGF0aWJsZSB3aXRo PGJyPg0KKyZuYnNwOyAmbmJzcDsgYGAtLXNvY2tldC1wYXRoYGA8YnI+DQorKiBUaGUgYmFja2Vu ZCBwcm9ncmFtIG11c3QgYmUgYWNjb21wYW5pZWQgd2l0aCBhIEpTT04gZmlsZSBzdG9yZWQgdW5k ZXI8YnI+DQorJm5ic3A7IGBgL3Vzci9zaGFyZS92ZmlvLXVzZXJgYC48YnI+DQotLSA8YnI+DQoy LjEyLjI8bzpwPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+ DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJy aSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFu PjwvZm9udD48L3A+DQo8L2Rpdj4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9udCBz aXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdCI+SXMg dGhlcmUgYSBzY2hlbWEgZm9yIGl0PyAoc2ltaWxhciB0byBkb2NzL2ludGVyb3Avdmhvc3QtdXNl ci5qc29uKS4gSWYgaXQncyBsZWZ0IGZvciBsYXRlciwgdGhlbiBhIFRPRE8gbm90ZSBzaG91bGQg YmUgbGVmdC48bzpwPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1h bCI+PGZvbnQgc2l6ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTox MS4wcHQ7bXNvLWFzY2lpLWZvbnQtZmFtaWx5OkNhbGlicmk7bXNvLWhhbnNpLWZvbnQtZmFtaWx5 OkNhbGlicmk7bXNvLWJpZGktZm9udC1mYW1pbHk6JnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7 Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9u dC1zaXplOjExLjBwdDttc28tYXNjaWktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28taGFuc2ktZm9u dC1mYW1pbHk6Q2FsaWJyaTttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9t YW4mcXVvdDsiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8cCBjbGFzcz0i TXNvTm9ybWFsIj48Zm9udCBzaXplPSIyIiBmYWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9u dC1zaXplOjExLjBwdDttc28tYXNjaWktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28taGFuc2ktZm9u dC1mYW1pbHk6Q2FsaWJyaTttc28tYmlkaS1mb250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9t YW4mcXVvdDsiPk5vdCB5ZXQsIHRoYXTigJlzIGEgZ29vZCBzdWdnZXN0aW9uLjxvOnA+PC9vOnA+ PC9zcGFuPjwvZm9udD48L3A+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48Zm9udCBzaXplPSIyIiBm YWNlPSJDYWxpYnJpIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDttc28tYXNjaWktZm9u dC1mYW1pbHk6Q2FsaWJyaTttc28taGFuc2ktZm9udC1mYW1pbHk6Q2FsaWJyaTttc28tYmlkaS1m b250LWZhbWlseTomcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDsiPjxvOnA+Jm5ic3A7PC9vOnA+ PC9zcGFuPjwvZm9udD48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PGZvbnQgc2l6 ZT0iMiIgZmFjZT0iQ2FsaWJyaSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxMS4wcHQiPjxvOnA+ Jm5ic3A7PC9vOnA+PC9zcGFuPjwvZm9udD48L3A+DQo8L2Rpdj4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6 MTEuMHB0Ij48YnI+DQotLSA8bzpwPjwvbzpwPjwvc3Bhbj48L2ZvbnQ+PC9wPg0KPGRpdj4NCjxw IGNsYXNzPSJNc29Ob3JtYWwiPjxmb250IHNpemU9IjIiIGZhY2U9IkNhbGlicmkiPjxzcGFuIHN0 eWxlPSJmb250LXNpemU6MTEuMHB0Ij5NYXJjLUFuZHLDqSBMdXJlYXU8bzpwPjwvbzpwPjwvc3Bh bj48L2ZvbnQ+PC9wPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2Pg0KPC9kaXY+DQo8L2JvZHk+DQo8 L2h0bWw+DQo= --_000_MW2PR02MB3723FB7118FC68E96C59E75B8BF40MW2PR02MB3723namp_--