Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp1320014rwb; Fri, 7 Oct 2022 10:51:36 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5xRg1/5RL4I9XF20gLIhk3191VS3FYw+mZ4tQgxbm4SDbRFTgRDHFqAI5Hvv/GB/cJg8Rs X-Received: by 2002:a17:907:75f2:b0:78d:49a6:5052 with SMTP id jz18-20020a17090775f200b0078d49a65052mr4841344ejc.680.1665165096465; Fri, 07 Oct 2022 10:51:36 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1665165096; cv=pass; d=google.com; s=arc-20160816; b=gF8JcTNTHcZs/+Qo0pZMFImvlN8MbqYrVnBW9Pfjej8BYyjmtnti0jfWecIrURIb1T BOYe5SCKgkvewBIQInfdH4Y1t2tV6quRj3iQk43mu8aALYVUX7pVeFy/aufrqHON5w7n AX9hMT2ixq7v/EVTj4otDcKVnG0QyB1kebhJswSPnIBZwsHn2o/tSgPvw05PJZ2LVudA PC1d3KC1oQRKGD59gxzGAsB6V3UuTpf4SZ/s9MRjz0gAbELxgsRU+rdcly5xo5y7EZuq PrdoNl81YnZU8H8mc2DMZ1W9V/D70grQKj7W31KfGFPvamtJ4lymJsOHEm5n1rTzZz9d K2ng== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=tPTrQC5ZIsOBvwhK/yI1h2HY2ZX9ykzf5kxYYOwCUqs=; b=poyhAYphUopKa9oC4Iaqo7Og3drjj4v/34iu1LZFB6KZ76c2MYrJrBoX2nTA8uvPPn 26kxJnffT/lz5rKt39D2vW7+5ieUrLpdK1II2CDOp6X3MOBF/SpKcl2T3nSiBp2qJEnV uTNva5cPmkNZ+NjA9Bs0dJ/rrPhgdKUwdVeE2hMneFh9A4WZ7vdtd5jKUo9Gp9gxRiqk ThIn4sqgU9KJurLuQuzmcAoyO9f9IKA/mHbw90oTiI72j3h3XmQv70tWwuUwRw+zshSg NUah41QdewFDwBvjzcPyRzV27LVvg0BKwW8Xqjp5PQSbiasuaFN4pmjMgXyudYzJr11C aC1Q== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@epam.com header.s=selector2 header.b=PjpoYdWu; arc=pass (i=1 spf=pass spfdomain=epam.com dkim=pass dkdomain=epam.com dmarc=pass fromdomain=epam.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=epam.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u3-20020a17090626c300b0078d0e45a7e5si2413677ejc.172.2022.10.07.10.51.08; Fri, 07 Oct 2022 10:51:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@epam.com header.s=selector2 header.b=PjpoYdWu; arc=pass (i=1 spf=pass spfdomain=epam.com dkim=pass dkdomain=epam.com dmarc=pass fromdomain=epam.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=epam.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229692AbiJGRfp (ORCPT + 99 others); Fri, 7 Oct 2022 13:35:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41122 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229505AbiJGRfl (ORCPT ); Fri, 7 Oct 2022 13:35:41 -0400 Received: from mx0b-0039f301.pphosted.com (mx0b-0039f301.pphosted.com [148.163.137.242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 78AA46C95D for ; Fri, 7 Oct 2022 10:35:39 -0700 (PDT) Received: from pps.filterd (m0174683.ppops.net [127.0.0.1]) by mx0b-0039f301.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 297E49le018131; Fri, 7 Oct 2022 17:35:22 GMT Received: from eur04-vi1-obe.outbound.protection.outlook.com (mail-vi1eur04lp2052.outbound.protection.outlook.com [104.47.14.52]) by mx0b-0039f301.pphosted.com (PPS) with ESMTPS id 3k2kap9cyq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 07 Oct 2022 17:35:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LbxlkZheDMAF+K96CDnpwZph1uegJZP93Jxrv3oOyvLbGXDVRLOsLDik4LVkujhqgLnOeqsWQZNUkb0T0DNJdgIiaVfWzQPjDAcRJfyouuMs8U0N7cLPnaQ86RsDUt/gMnVx92TovMbZS80StgbNEPPEcBBuqHxR6ouB9CMxZkOO8r1X/vksjqqAe6EQkc7G4lpTArPQ3ZyOr+cK9eD9zUEgJ9leUSA0UcQaazH7/YEJRlKKTtuoLVyuXIVPGR/QnZkzL/xoVAqg7XLkdzxljtwmspFvhHIyry+OAqNka5/feaIDd0k6F573ZBgCJ/ycL4/jU9Fz9GKxO4qaLsJ8lQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tPTrQC5ZIsOBvwhK/yI1h2HY2ZX9ykzf5kxYYOwCUqs=; b=IfG6kHP1206CH/mE2EljOIiCIXexlmwY3d1K9LdyDXjqJRG4uZK/NOdOXrnuD5ov6oVgQdm8YttLpX3AhlKGgeKL3QPCzAzrseioW8DLCQf5V9pwkVVBBUVzfTtoZvEtY/UC+t39XRdI4Cnr0ud9gZmzonpDQigZPQiIf0K4sbDfuYvI80is/WF3BXyU21WZwojVcxL/EbCVVyhCN32cQr8jni7KBT43zvH9o6ZQied7wyLqc4dUAkUgJg5hXasokcXYr7sq986PRCcQ0GCIkMofLGF147k6manb4acJJVuqHaNgwOEOFySJqjGeWqD7oEVlhraKMkrj4CanQPYqLA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tPTrQC5ZIsOBvwhK/yI1h2HY2ZX9ykzf5kxYYOwCUqs=; b=PjpoYdWungux0he8gs7R2tFIBIP5BzwDuHNyXt73EDDb8GZa41u6mN/0ydNR8k4aG6kFXEvfEIBWirWQ7CmfLGc6ft6yIbgE6BZneYSHVWgc9bu3StqThwgFkdFJ2ObLLMQvYA92dCB+kjxWUInPvhKr5G5RPn0PBXDbQDWn8yeNQ/zX3qQ47owrZrlhqw0vgnLIVIPD+4ywDGpkcLDsz8JphOGo5XN0Cei7h24a1foSSolaZO6ZzuE+GlWdEo/ILkE86D4mN4st7NeEmbpcpWbimUZMEZfylVPjx5pazur+VUETavr+cGJp/lKjr+EFJg9LX2MaGYFvZLiYwZOp2A== Received: from DB8PR03MB6108.eurprd03.prod.outlook.com (2603:10a6:10:ed::15) by DB9PR03MB9637.eurprd03.prod.outlook.com (2603:10a6:10:457::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Fri, 7 Oct 2022 17:35:19 +0000 Received: from DB8PR03MB6108.eurprd03.prod.outlook.com ([fe80::93be:22b1:654c:e4bc]) by DB8PR03MB6108.eurprd03.prod.outlook.com ([fe80::93be:22b1:654c:e4bc%5]) with mapi id 15.20.5676.038; Fri, 7 Oct 2022 17:35:19 +0000 From: Oleksandr Tyshchenko To: Xenia Ragiadakou , "xen-devel@lists.xenproject.org" , "linux-kernel@vger.kernel.org" CC: Stefano Stabellini , Juergen Gross , Oleksandr Tyshchenko Subject: Re: [PATCH] xen/virtio: Convert PAGE_SIZE/PAGE_SHIFT/PFN_UP to Xen counterparts Thread-Topic: [PATCH] xen/virtio: Convert PAGE_SIZE/PAGE_SHIFT/PFN_UP to Xen counterparts Thread-Index: AQHY2Xx9ME9woenUJk6IqJF2QACToq4Bp86AgAA2I4CAAKgkgIAAbJWAgAAjboCAAAc3gIAAFg0A Date: Fri, 7 Oct 2022 17:35:18 +0000 Message-ID: <55d9f368-bf20-5439-e821-04c7709cb9a5@epam.com> References: <20221006120912.1948459-1-olekstysh@gmail.com> <96a16b32-0950-b538-65e5-9955ed8cc529@gmail.com> <7f54bdab-c68f-0d38-93f4-007408151f01@gmail.com> <816da52a-f646-c114-fa6d-9320152a0e79@epam.com> <677bc264-c507-3bed-6d51-0d010a0dd449@gmail.com> In-Reply-To: Accept-Language: en-US, ru-RU Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DB8PR03MB6108:EE_|DB9PR03MB9637:EE_ x-ms-office365-filtering-correlation-id: 9a0d8ccd-0e2f-47e5-4bfd-08daa88a4dc2 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: rJR3mPt+tVVmtun+cCHtxPzYtZDEu8NXwMuiRu4lUqxD8SQ+omdVHJZTqYiWExVlAXTWlvWmauXAQ6wtbxAAyrPVUOx+JZji8njbHVfq0H44jd0xDYsIQWFAnh3tr1mBIOK12ZYwQsy/dFIStFKmZFLgt+vq9MTbNDrtxQ9jb4YIb7L21941VJl2/S0svr3KGDwJCD49ENfL+ia+RvOe73MzzroZgoSdNbD2dbjcxdLI13g2x0fmedntxSzBx0w3F9XsW07XgeJguIlPmp8dLSzO8rsKUj7c+/91K1Jz5FnRR6AQZNXyK1FaZ09HwRmoHT98glIdtWtPMpspoCtLDjPFyJ0CFxCQhtuDMXgkS8ofRiaP5mC+atuNBfvzy5JPjlSwULMeHWYiWomdrCett8x2h95AQzxXlScGOyOL6/d772nt/o38tvxhBtds5ZviyuTckmRoV5XJUI3t78CLKcCeHUxfCoBPYYXeAOv/MT3BZa+VlYpG8HGlCpvBB29UqXlmub/gpceYW/t84I3LzIt5R9UMVXt2aw0W1pajY88JJSaAW7z8ovKNtof/Yhbt1UXkMTo88bhAxTlkelZxLgFDYI/c4jvcu9e7CK7GCFnyTpCoDq/kk/v/j6degNKdLeCqQyt3cIY6wnEkFS3DKekaOMh522ZG20LdZD/tgC0XoA0RxE1IZmAdF3oE3Vi/XYPS9UzXLTm+KwoX9AMfdTqSDjLUex115w47qUDXh0bzb21nqMiwXqkHOy0PBbKc7E4cAvhgqLG9yZRrut/PmOJwjgrrN2WUrCHkM+mBaGYsADr1a3e27xjfVb9TZcE13eLyVPMCF8h9/wnPOWHjxA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR03MB6108.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(346002)(39860400002)(136003)(376002)(396003)(451199015)(110136005)(26005)(2906002)(31686004)(66899015)(36756003)(6506007)(4326008)(31696002)(8676002)(64756008)(66446008)(966005)(83380400001)(71200400001)(6512007)(38100700002)(478600001)(45080400002)(55236004)(122000001)(53546011)(2616005)(6486002)(91956017)(66556008)(86362001)(41300700001)(30864003)(186003)(66476007)(38070700005)(316002)(54906003)(8936002)(5660300002)(66946007)(76116006)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WWN5WS9Fa1Btd1VoZGkrTXhsYWNtL0M5bkJJbnppOHd5R1hwN1NKUXU1bk9J?= =?utf-8?B?MnJlVFc5UFBqcUUxQ1llKzB0OERUeHcwcmNhNDlDdjNrYzdZUXpselNTWHo0?= =?utf-8?B?V2hNUk1vNzlHbVQrdUtqVW94dG9tbWpyd1dRVTlhT2hlN0ZvUWlzQkdPZCtV?= =?utf-8?B?aTRXUFg1RExPQXVlMytpWFBmNllsK0hQOVEvNVdoT3Axc1BNbjZMTVBCSDB2?= =?utf-8?B?TXd3SzhSODA4RW01Q0VUN0wvdFZYOGpGQjRKRzdVTG1GMnlLdk5TMzM2MWF4?= =?utf-8?B?dmJQSU56VGNpYnpLalhtbGtFNUhTUUt6bERueDN3TGNDTlRUZGhKQ0U4WE8w?= =?utf-8?B?OXV1WDJkdmoreFBvRVFuRHRGVTJ3V01XZ2JVeXVBc0xqelpHSFZ3MktDR1N6?= =?utf-8?B?enMwa3FRaHU5UzNvbDJ3dGxwa3RtdmsvRlMyUUhrM3F0aEVKZnVxZFBaeEU5?= =?utf-8?B?UzRpQWtYZW1kZXNPWTBIb01HdHJuZTMwc0l0M2pOUW5sbDE4WFRERlIxck5J?= =?utf-8?B?VDZMQTZlSFVRbHJVd0dlTnh6SUJDSy9IWGhld0wwbDZIVERmTERJVVNhellE?= =?utf-8?B?bThjNW9nVWhzNnlELzIwM0V6UGdxK2pndHc1WlJVSmFWMFJ3cnNRUzdocFRH?= =?utf-8?B?NkxtZ1FaOElQU0hDY3FkVDRTbTUzeXZWZHFqamVVMUR1NGpIdnBCYWtEQXdm?= =?utf-8?B?ZUdNa2MxRTdhZDR4OFJkUXJsQ2ZyOHpuTUh0bTZjcytNTnhQd0djVW9BS0xM?= =?utf-8?B?TEpobk9PUDlKUElidFk5YUZZc3YwUmRsemNEYUxPRHp5RkVCTXFTQzFTU2tY?= =?utf-8?B?ZDNtRVR1TjBhRGJyb1hwVEd4cGVHbndlU0lLRkdkUTBDR3VCK0JjSUtUSzkr?= =?utf-8?B?dExBWG8rV00zUk5ZblJnMUx5MmtjdlRFRzRQKytTeE9FMzFod0tPejdseDRj?= =?utf-8?B?ZEJ1aHlvRlRWeG1VZDdQQ3c3T1pzSVlPcVR6Vk9yRkUwK3d4dVpOZS9xdnFv?= =?utf-8?B?MVkwWGVaMHA0ck4wcitvKytIVll0RjhiNlZRMFV3TVdmMmtubllaQjg3Tkh0?= =?utf-8?B?clFYU2d1Y3l4WjdOejlneFhCTENqUkJvK0VTWnpYaUd4VENPbWxNRWVjRWdt?= =?utf-8?B?U2VoZUc5RXRtVGtKU1ZROXR6d0VNMVFMeHZ0cU00SVFmc25QZkpEYXFqUlJC?= =?utf-8?B?b04yY0tTTVhJMVZrMlZ3UFc4RDlyM1A3TUtCZmJOSkVTRUdMSUpnZ2JOUC8r?= =?utf-8?B?TEd3YUtlcHY2MVRuNG9DMVA4MzMzL1BaQTgyUXN3aWQ2VlJPekR0bkVrNU9U?= =?utf-8?B?MjROeGhGMHNkU2FmMnZWeEVib05NemZyQ3htM1I2MlF6SThzeDhuVDR1enVw?= =?utf-8?B?VVdKYlMxTmVjTUd0b2ZwVm9mK3I3MzM5MVd2bmw3TnYrNTUxc2gxMmhEZEFu?= =?utf-8?B?blpWOUxYTFdwT1V2a3FNUVl3MW13VEZuYUJlcWd0b1NuUDdUbjVJLzdhYzRB?= =?utf-8?B?L1YwbktIQ0RUdit5VG9OVWp4Q0U0dHFoWU1DNWFEa0puMmZkb0xTbXFxVVRs?= =?utf-8?B?UzY0MnQvS1o4Z1hEMXlnY3I0WHhpb3ExTU01YTh6bURUVFA4dUxoNDMwYTJV?= =?utf-8?B?N0R3eGdvOVA5VlpyS3BVOHMwblRCR2JBM3VTcjNINEtjWm8zQ0lidkFUeVZt?= =?utf-8?B?OFJQZkJXUDBFQ1llS3NBcFFoNW5mcjNZeThUeGZlakZBdHFQN2lVUTFUSXpa?= =?utf-8?B?aS9CeWh1UXYycWwzMG5ldDBrMEQ0ejUrT3UwaVpobXFRYU85WXpKZlFZSi9u?= =?utf-8?B?Szh5ZzFwS3B3TDJyeWFVS09BQUYzOUhwL1o3UmVkNzRmSWw2YXlHeHZ1YXFq?= =?utf-8?B?TWl6aklnc0xJT2pWOVlSVXpqZEZ4N1hrRzB3QnVXSTNIbjA0ckhuVkVDVnp5?= =?utf-8?B?V3IzNHYzNVFDZTBGZk14L21NdTBWWjJsQWJ6MFRyUTZuN2xIYmMvaFRGV1lw?= =?utf-8?B?d3ZzZUF2cXAzam1TSWxaVUVXem5Ca280dklHQy96WnZvdDFkNHhMb20zcE8z?= =?utf-8?B?Zk5rUnZXTHZpckhWT1pKa3N0UFhtSFBqSnp5WUxaczNpbFBnMzRzOGtDNmJu?= =?utf-8?B?WXQrVWFQY3hwdE1ORlFhL0ZleXZ3ZHl6Yyt3Y1FKbEFFVEN2UEFWck44M2d4?= =?utf-8?Q?KGGJ68SPnY1msflJ05X+Wbg=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB8PR03MB6108.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a0d8ccd-0e2f-47e5-4bfd-08daa88a4dc2 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Oct 2022 17:35:18.9410 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KaJjIt2SV4dokhz5KDqNAKEaawei5ifTaQnNRhUp5rJxOSwkJBCVZauLQ8oZHeQCRwxCscpDkr2EW2cnFTnC7BR5LirVx/YfXJy1B69SGng= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR03MB9637 X-Proofpoint-GUID: QAXRxH-9Sd3_akUCaNu91x_9UDqdzJiG X-Proofpoint-ORIG-GUID: QAXRxH-9Sd3_akUCaNu91x_9UDqdzJiG X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-10-07_04,2022-10-07_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 spamscore=0 suspectscore=0 phishscore=0 clxscore=1015 priorityscore=1501 mlxscore=0 mlxlogscore=999 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210070103 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQpPbiAwNy4xMC4yMiAxOToxNiwgT2xla3NhbmRyIHdyb3RlOg0KDQpIZWxsbyBYZW5pYQ0KDQo+ DQo+IE9uIDA3LjEwLjIyIDE4OjUwLCBYZW5pYSBSYWdpYWRha291IHdyb3RlOg0KPg0KPg0KPiBI ZWxsbyBYZW5pYQ0KPg0KPj4NCj4+IE9uIDEwLzcvMjIgMTY6NDMsIE9sZWtzYW5kciBUeXNoY2hl bmtvIHdyb3RlOg0KPj4+DQo+Pj4gT24gMDcuMTAuMjIgMTA6MTUsIFhlbmlhIFJhZ2lhZGFrb3Ug d3JvdGU6DQo+Pj4+DQo+Pj4+IE9uIDEwLzcvMjIgMDA6MTMsIE9sZWtzYW5kciBUeXNoY2hlbmtv IHdyb3RlOg0KPj4+Pg0KPj4+PiBIaSBPbGVrc2FuZHINCj4+Pg0KPj4+DQo+Pj4gSGVsbG8gWGVu aWENCj4+Pg0KPj4+DQo+Pj4+DQo+Pj4+Pg0KPj4+Pj4gT24gMDYuMTAuMjIgMjA6NTksIFhlbmlh IFJhZ2lhZGFrb3Ugd3JvdGU6DQo+Pj4+Pg0KPj4+Pj4gSGVsbG8gWGVuaWENCj4+Pj4+DQo+Pj4+ Pj4NCj4+Pj4+PiBPbiAxMC82LzIyIDE1OjA5LCBPbGVrc2FuZHIgVHlzaGNoZW5rbyB3cm90ZToN Cj4+Pj4+Pj4gRnJvbTogT2xla3NhbmRyIFR5c2hjaGVua28gPG9sZWtzYW5kcl90eXNoY2hlbmtv QGVwYW0uY29tPg0KPj4+Pj4+Pg0KPj4+Pj4+PiBBbHRob3VnaCBYRU5fUEFHRV9TSVpFIGlzIGVx dWFsIHRvIFBBR0VfU0laRSAoNEtCKSBmb3Igbm93LCBpdCANCj4+Pj4+Pj4gd291bGQNCj4+Pj4+ Pj4gYmUgbW9yZSBjb3JyZWN0IHRvIHVzZSBYZW4gc3BlY2lmaWMgI2RlZmluZS1zIGFzIFhFTl9Q QUdFX1NJWkUgY2FuDQo+Pj4+Pj4+IGJlIGNoYW5nZWQgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0 dXJlLg0KPj4+Pj4+Pg0KPj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgVHlzaGNoZW5r byA8b2xla3NhbmRyX3R5c2hjaGVua29AZXBhbS5jb20+DQo+Pj4+Pj4+IC0tLQ0KPj4+Pj4+PiBD YzogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPg0KPj4+Pj4+PiBDYzogWGVuaWEgUmFn aWFkYWtvdSA8YnVyemFsb2Rvd2FAZ21haWwuY29tPg0KPj4+Pj4+Pg0KPj4+Pj4+PiBBcyBpdCB3 YXMgcHJvcG9zZWQgYXQ6DQo+Pj4+Pj4+IGh0dHBzOi8vdXJsZGVmZW5zZS5jb20vdjMvX19odHRw czovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2ZWwvMjAyMjEwMDUxNzQ4MjMuMTgwMDc2MS0xLW9s ZWtzdHlzaEBnbWFpbC5jb20vX187ISFHRl8yOWRiY1FJVUJQQSF6SHQteFpfN3RaY19FTTZ6dmEy MUVfWWd3SWlFZWltRldmc0pJcFB3QXUtVEJjbnpRaFhIcWxLem1YbXdJY0k2dUl4X2FySE5aaWFa ZUh0XzQyOF84cC1EeU1wZCQgDQo+Pj4+Pj4+DQo+Pj4+Pj4+DQo+Pj4+Pj4+IFtsb3JlWy5da2Vy bmVsWy5db3JnXQ0KPj4+Pj4+Pg0KPj4+Pj4+PiBTaG91bGQgZ28gaW4gb25seSBhZnRlciB0aGF0 IHNlcmllcy4NCj4+Pj4+Pj4gLS0tDQo+Pj4+Pj4+IMKgwqDCoCBkcml2ZXJzL3hlbi9ncmFudC1k bWEtb3BzLmMgfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQ0KPj4+Pj4+PiDCoMKgwqAgMSBmaWxl IGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQ0KPj4+Pj4+Pg0KPj4+ Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vZ3JhbnQtZG1hLW9wcy5jIA0KPj4+Pj4+PiBi L2RyaXZlcnMveGVuL2dyYW50LWRtYS1vcHMuYw0KPj4+Pj4+PiBpbmRleCBjNjZmNTZkMjQwMTMu LjUzOTJmZGMyNWRjYSAxMDA2NDQNCj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy94ZW4vZ3JhbnQtZG1h LW9wcy5jDQo+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMveGVuL2dyYW50LWRtYS1vcHMuYw0KPj4+Pj4+ PiBAQCAtMzEsMTIgKzMxLDEyIEBAIHN0YXRpYyANCj4+Pj4+Pj4gREVGSU5FX1hBUlJBWV9GTEFH Uyh4ZW5fZ3JhbnRfZG1hX2RldmljZXMsDQo+Pj4+Pj4+IFhBX0ZMQUdTX0xPQ0tfSVJRKTsNCj4+ Pj4+Pj4gwqDCoMKgIMKgIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBncmFudF90b19kbWEoZ3Jh bnRfcmVmX3QgZ3JhbnQpDQo+Pj4+Pj4+IMKgwqDCoCB7DQo+Pj4+Pj4+IC3CoMKgwqAgcmV0dXJu IFhFTl9HUkFOVF9ETUFfQUREUl9PRkYgfCAoKGRtYV9hZGRyX3QpZ3JhbnQgPDwNCj4+Pj4+Pj4g UEFHRV9TSElGVCk7DQo+Pj4+Pj4+ICvCoMKgwqAgcmV0dXJuIFhFTl9HUkFOVF9ETUFfQUREUl9P RkYgfCAoKGRtYV9hZGRyX3QpZ3JhbnQgPDwNCj4+Pj4+Pj4gWEVOX1BBR0VfU0hJRlQpOw0KPj4+ Pj4+PiDCoMKgwqAgfQ0KPj4+Pj4+DQo+Pj4+Pj4gV2l0aCB0aGlzIGNoYW5nZSwgY2FuIHRoZSBv ZmZzZXQgYWRkZWQgdG8gdGhlIGRtYSBoYW5kbGUsIA0KPj4+Pj4+IGdlbmVyYXRlZCBieQ0KPj4+ Pj4+IGdyYW50X3RvX2RtYSgpLCBiZSB0aGUgb2Zmc2V0IGluIHRoZSBwYWdlPyBDb3VsZG4ndCBp dCBjb3JydXB0IHRoZQ0KPj4+Pj4+IGdyYW50IHJlZj8NCj4+Pj4+DQo+Pj4+Pg0KPj4+Pj4gR29v ZCBwb2ludCwgaW5kZWVkLCBJIHRoaW5rIGl0IGNvdWxkIGNvcnJ1cHQgaWYgZ3Vlc3QgdXNlcyBh IA0KPj4+Pj4gZGlmZmVyZW50DQo+Pj4+PiB0aGFuIFhlbiBwYWdlIGdyYW51bGFyaXR5IChpLmUg NjRLQikuDQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+Pg0KPj4+Pj4+PiDCoMKgwqAgwqAgc3RhdGljIGlu bGluZSBncmFudF9yZWZfdCBkbWFfdG9fZ3JhbnQoZG1hX2FkZHJfdCBkbWEpDQo+Pj4+Pj4+IMKg wqDCoCB7DQo+Pj4+Pj4+IC3CoMKgwqAgcmV0dXJuIChncmFudF9yZWZfdCkoKGRtYSAmIH5YRU5f R1JBTlRfRE1BX0FERFJfT0ZGKSA+Pg0KPj4+Pj4+PiBQQUdFX1NISUZUKTsNCj4+Pj4+Pj4gK8Kg wqDCoCByZXR1cm4gKGdyYW50X3JlZl90KSgoZG1hICYgflhFTl9HUkFOVF9ETUFfQUREUl9PRkYp ID4+DQo+Pj4+Pj4+IFhFTl9QQUdFX1NISUZUKTsNCj4+Pj4+Pj4gwqDCoMKgIH0NCj4+Pj4+Pj4g wqDCoMKgIMKgIHN0YXRpYyBzdHJ1Y3QgeGVuX2dyYW50X2RtYV9kYXRhIA0KPj4+Pj4+PiAqZmlu ZF94ZW5fZ3JhbnRfZG1hX2RhdGEoc3RydWN0DQo+Pj4+Pj4+IGRldmljZSAqZGV2KQ0KPj4+Pj4+ PiBAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgdm9pZCAqeGVuX2dyYW50X2RtYV9hbGxvYyhzdHJ1 Y3QgZGV2aWNlDQo+Pj4+Pj4+ICpkZXYsIHNpemVfdCBzaXplLA0KPj4+Pj4+PiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgYXR0cnMpDQo+Pj4+ Pj4+IMKgwqDCoCB7DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB4ZW5fZ3JhbnRfZG1h X2RhdGEgKmRhdGE7DQo+Pj4+Pj4+IC3CoMKgwqAgdW5zaWduZWQgaW50IGksIG5fcGFnZXMgPSBQ Rk5fVVAoc2l6ZSk7DQo+Pj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGksIG5fcGFnZXMgPSBY RU5fUEZOX1VQKHNpemUpOw0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHBm bjsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgZ3JhbnRfcmVmX3QgZ3JhbnQ7DQo+Pj4+Pj4+IMKg wqDCoMKgwqDCoMKgIHZvaWQgKnJldDsNCj4+Pj4+Pj4gQEAgLTkxLDE0ICs5MSwxNCBAQCBzdGF0 aWMgdm9pZCAqeGVuX2dyYW50X2RtYV9hbGxvYyhzdHJ1Y3QgZGV2aWNlDQo+Pj4+Pj4+ICpkZXYs IHNpemVfdCBzaXplLA0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBpZiAodW5saWtlbHkoZGF0YS0+ YnJva2VuKSkNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsNCj4+ Pj4+Pj4gwqDCoMKgIC3CoMKgwqAgcmV0ID0gYWxsb2NfcGFnZXNfZXhhY3Qobl9wYWdlcyAqIFBB R0VfU0laRSwgZ2ZwKTsNCj4+Pj4+Pj4gK8KgwqDCoCByZXQgPSBhbGxvY19wYWdlc19leGFjdChu X3BhZ2VzICogWEVOX1BBR0VfU0laRSwgZ2ZwKTsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgaWYg KCFyZXQpDQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7DQo+Pj4+ Pj4+IMKgwqDCoCDCoMKgwqDCoMKgIHBmbiA9IHZpcnRfdG9fcGZuKHJldCk7DQo+Pj4+Pj4+IMKg wqDCoCDCoMKgwqDCoMKgIGlmIChnbnR0YWJfYWxsb2NfZ3JhbnRfcmVmZXJlbmNlX3NlcShuX3Bh Z2VzLCAmZ3JhbnQpKSB7DQo+Pj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBmcmVlX3BhZ2VzX2V4YWN0 KHJldCwgbl9wYWdlcyAqIFBBR0VfU0laRSk7DQo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBmcmVl X3BhZ2VzX2V4YWN0KHJldCwgbl9wYWdlcyAqIFhFTl9QQUdFX1NJWkUpOw0KPj4+Pj4+PiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxMOw0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCB9 DQo+Pj4+Pj4+IMKgwqDCoCBAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyB2b2lkIHhlbl9ncmFu dF9kbWFfZnJlZShzdHJ1Y3QgDQo+Pj4+Pj4+IGRldmljZQ0KPj4+Pj4+PiAqZGV2LCBzaXplX3Qg c2l6ZSwgdm9pZCAqdmFkZHIsDQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRtYV9hZGRyX3QgZG1hX2hhbmRsZSwgdW5zaWduZWQgbG9uZyBhdHRy cykNCj4+Pj4+Pj4gwqDCoMKgIHsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgc3RydWN0IHhlbl9n cmFudF9kbWFfZGF0YSAqZGF0YTsNCj4+Pj4+Pj4gLcKgwqDCoCB1bnNpZ25lZCBpbnQgaSwgbl9w YWdlcyA9IFBGTl9VUChzaXplKTsNCj4+Pj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaSwgbl9w YWdlcyA9IFhFTl9QRk5fVVAoc2l6ZSk7DQo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgIGdyYW50X3Jl Zl90IGdyYW50Ow0KPj4+Pj4+PiDCoMKgwqAgwqDCoMKgwqDCoCBkYXRhID0gZmluZF94ZW5fZ3Jh bnRfZG1hX2RhdGEoZGV2KTsNCj4+Pj4+Pj4gQEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgdm9p ZCB4ZW5fZ3JhbnRfZG1hX2ZyZWUoc3RydWN0IGRldmljZQ0KPj4+Pj4+PiAqZGV2LCBzaXplX3Qg c2l6ZSwgdm9pZCAqdmFkZHIsDQo+Pj4+Pj4+IMKgwqDCoCDCoMKgwqDCoMKgIGdudHRhYl9mcmVl X2dyYW50X3JlZmVyZW5jZV9zZXEoZ3JhbnQsIG5fcGFnZXMpOw0KPj4+Pj4+PiDCoMKgwqAgLcKg wqDCoCBmcmVlX3BhZ2VzX2V4YWN0KHZhZGRyLCBuX3BhZ2VzICogUEFHRV9TSVpFKTsNCj4+Pj4+ Pj4gK8KgwqDCoCBmcmVlX3BhZ2VzX2V4YWN0KHZhZGRyLCBuX3BhZ2VzICogWEVOX1BBR0VfU0la RSk7DQo+Pj4+Pj4+IMKgwqDCoCB9DQo+Pj4+Pj4+IMKgwqDCoCDCoCBzdGF0aWMgc3RydWN0IHBh Z2UgKnhlbl9ncmFudF9kbWFfYWxsb2NfcGFnZXMoc3RydWN0IA0KPj4+Pj4+PiBkZXZpY2UgKmRl diwNCj4+Pj4+Pj4gc2l6ZV90IHNpemUsDQo+Pj4+Pj4+IEBAIC0xNjgsNyArMTY4LDcgQEAgc3Rh dGljIGRtYV9hZGRyX3QgeGVuX2dyYW50X2RtYV9tYXBfcGFnZShzdHJ1Y3QNCj4+Pj4+Pj4gZGV2 aWNlICpkZXYsIHN0cnVjdCBwYWdlICpwYWdlLA0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgbG9uZyBhdHRycykNCj4+Pj4+ Pj4gwqDCoMKgIHsNCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgc3RydWN0IHhlbl9ncmFudF9kbWFf ZGF0YSAqZGF0YTsNCj4+Pj4+Pj4gLcKgwqDCoCB1bnNpZ25lZCBpbnQgaSwgbl9wYWdlcyA9IFBG Tl9VUChvZmZzZXQgKyBzaXplKTsNCj4+Pj4+Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaSwgbl9w YWdlcyA9IFhFTl9QRk5fVVAob2Zmc2V0ICsgc2l6ZSk7DQo+Pj4+Pj4NCj4+Pj4+PiBUaGUgb2Zm c2V0LCBoZXJlLCByZWZlcnMgdG8gdGhlIG9mZnNldCBpbiB0aGUgcGFnZSAuLi4NCj4+Pj4+Pg0K Pj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBncmFudF9yZWZfdCBncmFudDsNCj4+Pj4+Pj4gwqDCoMKg wqDCoMKgwqAgZG1hX2FkZHJfdCBkbWFfaGFuZGxlOw0KPj4+Pj4+PiDCoMKgwqAgQEAgLTIwMCw4 ICsyMDAsOCBAQCBzdGF0aWMgdm9pZCB4ZW5fZ3JhbnRfZG1hX3VubWFwX3BhZ2Uoc3RydWN0DQo+ Pj4+Pj4+IGRldmljZSAqZGV2LCBkbWFfYWRkcl90IGRtYV9oYW5kbGUsDQo+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25n IGF0dHJzKQ0KPj4+Pj4+PiDCoMKgwqAgew0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg eGVuX2dyYW50X2RtYV9kYXRhICpkYXRhOw0KPj4+Pj4+PiAtwqDCoMKgIHVuc2lnbmVkIGxvbmcg b2Zmc2V0ID0gZG1hX2hhbmRsZSAmIChQQUdFX1NJWkUgLSAxKTsNCj4+Pj4+Pj4gLcKgwqDCoCB1 bnNpZ25lZCBpbnQgaSwgbl9wYWdlcyA9IFBGTl9VUChvZmZzZXQgKyBzaXplKTsNCj4+Pj4+Pj4g K8KgwqDCoCB1bnNpZ25lZCBsb25nIG9mZnNldCA9IGRtYV9oYW5kbGUgJiB+WEVOX1BBR0VfTUFT SzsNCj4+Pj4+Pg0KPj4+Pj4+IC4uLiB3aGlsZSwgaGVyZSwgaXQgcmVmZXJzIHRvIHRoZSBvZmZz ZXQgaW4gdGhlIGdyYW50Lg0KPj4+Pj4+IFNvLCB0aGUgY2FsY3VsYXRlZCBudW1iZXIgb2YgZ3Jh bnRzIG1heSBkaWZmZXIuDQo+Pj4+Pg0KPj4+Pj4gR29vZCBwb2ludCwgSSB0aGluayB5b3UgYXJl IHJpZ2h0LCBzbyB3ZSBuZWVkIHRvIGFkZGl0aW9uYWxseSB1c2UNCj4+Pj4+IHhlbl9vZmZzZXRf aW5fcGFnZSgpIG1hY3JvIGluIHhlbl9ncmFudF9kbWFfbWFwX3BhZ2UoKSwNCj4+Pj4+DQo+Pj4+ PiBzb21ldGhpbmcgbGlrZSB0aGF0IHRvIGJlIHNxdWFzaGVkIHdpdGggY3VycmVudCBwYXRjaDoN Cj4+Pj4+DQo+Pj4+Pg0KPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2dyYW50LWRtYS1v cHMuYyANCj4+Pj4+IGIvZHJpdmVycy94ZW4vZ3JhbnQtZG1hLW9wcy5jDQo+Pj4+PiBpbmRleCA5 ZDVlY2E2ZDYzOGEuLmJiOTg0ZGMwNWRlYiAxMDA2NDQNCj4+Pj4+IC0tLSBhL2RyaXZlcnMveGVu L2dyYW50LWRtYS1vcHMuYw0KPj4+Pj4gKysrIGIvZHJpdmVycy94ZW4vZ3JhbnQtZG1hLW9wcy5j DQo+Pj4+PiBAQCAtMTY5LDcgKzE2OSw3IEBAIHN0YXRpYyBkbWFfYWRkcl90IHhlbl9ncmFudF9k bWFfbWFwX3BhZ2Uoc3RydWN0DQo+Pj4+PiBkZXZpY2UgKmRldiwgc3RydWN0IHBhZ2UgKnBhZ2Us DQo+Pj4+PiDCoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcgYXR0cnMp DQo+Pj4+PiDCoMKgIMKgew0KPj4+Pj4gwqDCoCDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGVuX2dy YW50X2RtYV9kYXRhICpkYXRhOw0KPj4+Pj4gLcKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaSwg bl9wYWdlcyA9IFhFTl9QRk5fVVAob2Zmc2V0ICsgc2l6ZSk7DQo+Pj4+PiArwqDCoMKgwqDCoMKg IHVuc2lnbmVkIGludCBpLCBuX3BhZ2VzID0gDQo+Pj4+PiBYRU5fUEZOX1VQKHhlbl9vZmZzZXRf aW5fcGFnZShvZmZzZXQpDQo+Pj4+PiArIHNpemUpOw0KPj4+Pj4gwqDCoCDCoMKgwqDCoMKgwqDC oCBncmFudF9yZWZfdCBncmFudDsNCj4+Pj4+IMKgwqAgwqDCoMKgwqDCoMKgwqAgZG1hX2FkZHJf dCBkbWFfaGFuZGxlOw0KPj4+Pj4NCj4+Pj4+IEBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIGRt YV9hZGRyX3QgeGVuX2dyYW50X2RtYV9tYXBfcGFnZShzdHJ1Y3QNCj4+Pj4+IGRldmljZSAqZGV2 LCBzdHJ1Y3QgcGFnZSAqcGFnZSwNCj4+Pj4+IMKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeGVuX3BhZ2VfdG9fZ2ZuKHBh Z2UpICsgaSwgZGlyID09DQo+Pj4+PiBETUFfVE9fREVWSUNFKTsNCj4+Pj4+IMKgwqAgwqDCoMKg wqDCoMKgwqAgfQ0KPj4+Pj4NCj4+Pj4+IC3CoMKgwqDCoMKgwqAgZG1hX2hhbmRsZSA9IGdyYW50 X3RvX2RtYShncmFudCkgKyBvZmZzZXQ7DQo+Pj4+PiArwqDCoMKgwqDCoMKgIGRtYV9oYW5kbGUg PSBncmFudF90b19kbWEoZ3JhbnQpICsgDQo+Pj4+PiB4ZW5fb2Zmc2V0X2luX3BhZ2Uob2Zmc2V0 KTsNCj4+Pj4+DQo+Pj4+PiDCoMKgIMKgwqDCoMKgwqDCoMKgIHJldHVybiBkbWFfaGFuZGxlOw0K Pj4+Pj4gwqDCoCDCoH0NCj4+Pj4+DQo+Pj4+PiBEaWQgSSBnZXQgeW91ciBwb2ludCByaWdodD8N Cj4+Pj4+DQo+Pj4+DQo+Pj4+IEkgdGhpbmsgaXQgJ3MgbW9yZSBjb21wbGljYXRlZCB0aGFuIHRo YXQuDQo+Pj4+IExldCdzIHNheSB0aGF0IHRoZSBvZmZzZXQgaW4gcGFnZSBpcyA+IFhFTl9QQUdF X1NJWkUsIHRoZW4gdGhlDQo+Pj4+IGNhbGN1bGF0aW9uIG9mIHRoZSBudW1iZXIgb2YgZ3JhbnRz IHdvbid0IHRha2UgaW50byBhY2NvdW50IHRoZSBwYXJ0DQo+Pj4+IG9mIHRoZSBvZmZzZXQgdGhh dCBpcyBtdWx0aXBsZSBvZiB0aGUgWEVOX1BBR0VfU0laRSBpLmUgaXQgd2lsbA0KPj4+PiBjYWxj dWxhdGUgb25seSB0aGUgc3RyaWN0bHkgbmVjZXNzYXJ5IG51bWJlciBvZiBncmFudHMuDQo+Pj4+ IEJ1dCB4ZW5fZ3JhbnRfZG1hX21hcF9wYWdlKCkgZ3JhbnRzIGFjY2VzcyB0byB0aGUgd2hvbGUg cGFnZSBiZWNhdXNlLA0KPj4+PiBhcyBpdCBjYW4gYmUgb2JzZXJ2ZWQgaW4gdGhlIGNvZGUgc25p cHBldCBiZWxvdywgaXQgZG9lcyBub3QgdGFrZSBpbnRvDQo+Pj4+IGFjY291bnQgdGhlIHBhZ2Ug b2Zmc2V0Lg0KPj4+Pg0KPj4+PiBmb3IgKGkgPSAwOyBpIDwgbl9wYWdlczsgaSsrKSB7DQo+Pj4+ IMKgwqAgZ250dGFiX2dyYW50X2ZvcmVpZ25fYWNjZXNzX3JlZihncmFudCArIGksIGRhdGEtPmJh Y2tlbmRfZG9taWQsDQo+Pj4+IHhlbl9wYWdlX3RvX2dmbihwYWdlKSArIGksIGRpciA9PSBETUFf VE9fREVWSUNFKTsNCj4+Pj4gfQ0KPj4+DQo+Pj4NCj4+PiBUaGFua3MsIHZhbGlkIHBvaW50LiBB Z3JlZSBpdCdzIGluZGVlZCBtb3JlIGNvbXBsaWNhdGVkLiBJIHdpbGwgY29tbWVudA0KPj4+IG9u IHRoYXQgbGF0ZXIuIEkgaGF2ZSBqdXN0IHB1c2hlZCBhbm90aGVyIGZpeCwgaXQgaXMgbm90IHJl bGF0ZWQgdG8NCj4+PiBYRU5fUEFHRV9TSVpFIGRpcmVjdGx5LCBidXQgYWxzbyBhYm91dCBwYWdl IG9mZnNldCA+IFBBR0VfU0laRQ0KPj4+DQo+Pg0KPj4gSSBnb3QgYSBsaXR0bGUgYml0IGNvbmZ1 c2VkIHdpdGggdGhlIG9yZGVyIHRoYXQgdGhlIHBhdGNoZXMgd2lsbCBiZSANCj4+IGFwcGxpZWQg OikNCj4NCj4gVGhpcyBzZXJpZXMgc2hvdWxkIGdvIGluIHRoZSBmaXJzdCBbMV06DQo+DQo+IEN1 cnJlbnQgcGF0Y2ggZGVwZW5kcyBvbiBpdCBhbmQgbmV3IHBhdGNoIFsyXSBhbHNvIGRlcGVuZHMg b24gaXQuIEkgDQo+IHRoaW5rIChidXQgbWlnaHQgbWlzdGFrZSkgdGhhdCBjdXJyZW50IHBhdGNo IHdlIG5lZWQvd2FudCB0byBwb3N0cG9uZSANCj4gKGJlY2F1c2UgaXQgZG9lc24ndCBmaXgvaW1w cm92ZSBzb21ldGhpbmcgaW1tZWRpYXRlbHksIGJ1dCBtb3JlIGZvciANCj4gZnV0dXJlIHVzZS1j YXNlcyksDQo+DQo+IGJ1dCB0aGUgbmV3IHBhdGNoIGlzIGEgZml4IGZvciB0aGUgcmVhbCBzaXR1 YXRpb24uIE9uY2Ugd2UgZGVjaWRlIHdpdGggDQo+IG5ldyBwYXRjaCBbMl0gd2Ugd2lsbCBiZSBh YmxlIHRvIHJldHVybiB0byB0aGUgY3VycmVudCBwYXRjaCBhbmQgDQo+IHJlYmFzZSBpdC4NCj4N Cj4NCj4gWzFdIA0KPiBodHRwczovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2ZWwvMjAyMjEwMDUx NzQ4MjMuMTgwMDc2MS0xLW9sZWtzdHlzaEBnbWFpbC5jb20vDQo+DQo+IFsyXSANCj4gaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcveGVuLWRldmVsLzIwMjIxMDA3MTMyNzM2LjIyNzU1NzQtMS1vbGVr c3R5c2hAZ21haWwuY29tLw0KPg0KPg0KPg0KPj4gSUlVQyB0aGUgYWJvdmUgc2NlbmFyaW8gY2Fu bm90IGhhcHBlbiwgaS5lIHRoZSBvZmZzZXQgdG8gYmUgPiANCj4+IFBBR0VfU0laRSwgYmVjYXVz ZSB0aGlzIGNhbGxiYWNrIGlzIHVzZWQgdG8gbWFwIGZvciB0cmFuc2ZlciBhIA0KPj4gcG9ydGlv biBvZiBhIHNpbmdsZSBwYWdlLg0KPg0KPiBJdCBoYXBwZW5zLiBJIGhhdmUgcmVjaGVja2VkIHRo YXQuIEFuZCBjYW4gcHJvdmlkZSBzb21lIGRlYnVnIHByaW50cyANCj4gaWYgbmVlZGVkLg0KDQoN ClRoaXMgaXMgdGhlIHByaW50IGluIHhlbl9ncmFudF9kbWFfbWFwX3BhZ2UoKSB3aGljaCBpcyBv bmx5IHRyaWdnZXJzIGlmIA0KcGFzc2VkIG9mZnNldCA+IFBBR0VfU0laRSAoSSBhcHBsaWVkIGl0 IG9uIHRvcCBvZiBbMl0pDQoNCkBAIC0xOTUsNiArMTk1LDEyIEBAIHN0YXRpYyBkbWFfYWRkcl90 IHhlbl9ncmFudF9kbWFfbWFwX3BhZ2Uoc3RydWN0IA0KZGV2aWNlICpkZXYsIHN0cnVjdCBwYWdl ICpwYWdlLA0KDQogwqDCoMKgwqDCoMKgwqAgZG1hX2hhbmRsZSA9IGdyYW50X3RvX2RtYShncmFu dCkgKyBkbWFfb2Zmc2V0Ow0KDQorwqDCoMKgwqDCoMKgIGlmIChvZmZzZXQgPiBQQUdFX1NJWkUp IHsNCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaW50aygiJXNbJWRdIGRtYV9oYW5k bGUgMHglbGx4OiBvZmZzZXQgMHglbHggDQooZG1hX29mZnNldCAweCVseCBnZm5fb2Zmc2V0IDB4 JWx4KSBzaXplIDB4JWx4IG5fcGFnZXMgJWRcbiIsIF9fZnVuY19fLCANCl9fTElORV9fLA0KK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkbWFfaGFuZGxlLCBvZmZzZXQsIGRtYV9vZmZzZXQsIA0KZ2ZuX29mZnNldCwgc2l6ZSwgbl9w YWdlcyk7DQorwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBXQVJOX09OKDEpOw0KK8KgwqDC oMKgwqDCoCB9DQorDQogwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGRtYV9oYW5kbGU7DQogwqB9DQoN Cg0KQXQgdGhlIHJ1bnRpbWUgd2UgaGF2ZSwgZm9yIGV4YW1wbGU6DQoNClvCoMKgIDEwLjI3NzU5 OV0geGVuX2dyYW50X2RtYV9tYXBfcGFnZVsxOTldIGRtYV9oYW5kbGUgDQoweDgwMDAwMDAwMDAw NDRhYTg6IG9mZnNldCAweDNhYTggKGRtYV9vZmZzZXQgMHhhYTggZ2ZuX29mZnNldCAweDMpIHNp emUgDQoweDNhMCBuX3BhZ2VzIDENCg0KW8KgwqAgMTAuMjc3Njk1XSAtLS0tLS0tLS0tLS1bIGN1 dCBoZXJlIF0tLS0tLS0tLS0tLS0NClvCoMKgIDEwLjI3NzcxNV0gV0FSTklORzogQ1BVOiAzIFBJ RDogMTIyIGF0IA0KZHJpdmVycy94ZW4vZ3JhbnQtZG1hLW9wcy5jOjIwMSB4ZW5fZ3JhbnRfZG1h X21hcF9wYWdlKzB4MTk0LzB4MWEwDQpbwqDCoCAxMC4yNzc3NTddIE1vZHVsZXMgbGlua2VkIGlu Og0KW8KgwqAgMTAuMjc3Nzc5XSBDUFU6IDMgUElEOiAxMjIgQ29tbToga3dvcmtlci91ODo2IFRh aW50ZWQ6IEfCoMKgwqDCoMKgwqDCoCBXIA0KNi4wLjAtcmM3LXlvY3RvLXN0YW5kYXJkLTAwMzUy LWcwYzVlNDQyMzgyYmItZGlydHkgIzENClvCoMKgIDEwLjI3NzgyM10gSGFyZHdhcmUgbmFtZTog WEVOVk0tNC4xNyAoRFQpDQpbwqDCoCAxMC4yNzc4NDBdIFdvcmtxdWV1ZTogcnBjaW9kIHJwY19h c3luY19zY2hlZHVsZQ0KW8KgwqAgMTAuMjc3ODcwXSBwc3RhdGU6IDYwMDAwMDA1IChuWkN2IGRh aWYgLVBBTiAtVUFPIC1UQ08gLURJVCAtU1NCUyANCkJUWVBFPS0tKQ0KW8KgwqAgMTAuMjc3ODk3 XSBwYyA6IHhlbl9ncmFudF9kbWFfbWFwX3BhZ2UrMHgxOTQvMHgxYTANClvCoMKgIDEwLjI3Nzky MF0gbHIgOiB4ZW5fZ3JhbnRfZG1hX21hcF9wYWdlKzB4MTk0LzB4MWEwDQpbwqDCoCAxMC40Nzcw MzZdIHNwIDogZmZmZjgwMDAwOWViMzRhMA0KW8KgwqAgMTAuNDc3MDY4XSB4Mjk6IGZmZmY4MDAw MDllYjM0YjAgeDI4OiBmZmZmMDAwMWMxZTBjNjAwIHgyNzogDQpmZmZmMDAwMWMwYmIzZjAwDQpb wqDCoCAxMC40NzcxMTZdIHgyNjogMDAwMDAwMDAwMDAwM2FhOCB4MjU6IGZmZmYwMDAxYzBmYmFi ODAgeDI0OiANCmZmZmZmYzAwMDAwMDAwMDANClvCoMKgIDEwLjQ3NzE2N10geDIzOiAwMDAwMDAw MDAwMDAwMDAzIHgyMjogMDAwMDAwMDAwMDAwMDAwMSB4MjE6IA0KMDAwMDAwMDAwMDAwMDAwMQ0K W8KgwqAgMTAuNDc3MjE1XSB4MjA6IGZmZmZmYzAwMDcwNDg4MDAgeDE5OiA4MDAwMDAwMDAwMDQ0 YWE4IHgxODogDQowMDAwMDAwMDAwMDAwMDEwDQpbwqDCoCAxMC40NzcyNjVdIHgxNzogNjU3MzY2 NjY2ZjIwM2EzOCB4MTY6IDAwMDAwMDAwZGVhZGJlZWYgeDE1OiANCjMwMzAzMDMwMzAzMDM4NzgN ClvCoMKgIDEwLjQ3NzMxMV0geDE0OiAwMDAwMDAwMDAwMDAwNWQ1IHgxMzogZmZmZjAwMDFjMGZi YWZlMCB4MTI6IA0KMDAwMDAwMDBmZmZmZmZlYQ0KW8KgwqAgMTAuNDc3MzYxXSB4MTE6IDAwMDAw MDAwZmZmZmVmZmYgeDEwOiAwMDAwMDAwMGZmZmZlZmZmIHg5IDogDQpmZmZmODAwMDA5NjlhY2Mw DQpbwqDCoCAxMC40Nzc0MDddIHg4IDogMDAwMDAwMDAwMDAxN2ZlOCB4NyA6IGMwMDAwMDAwZmZm ZmVmZmYgeDYgOiANCjAwMDAwMDAwMDAwMGJmZjQNClvCoMKgIDEwLjQ3NzQ1OV0geDUgOiAwMDAw MDAwMDAwMDU3ZmE4IHg0IDogMDAwMDAwMDAwMDAwMDAwMCB4MyA6IA0KZmZmZjgwMDAwOWViMzIz OA0KW8KgwqAgMTAuNDc3NTA3XSB4MiA6IGFjZDlhYmYyYTYxZmM4MDAgeDEgOiAwMDAwMDAwMDAw MDAwMDAwIHgwIDogDQowMDAwMDAwMDAwMDAwMDdmDQpbwqDCoCAxMC40Nzc1NTRdIENhbGwgdHJh Y2U6DQpbwqDCoCAxMC40Nzc1NzBdwqAgeGVuX2dyYW50X2RtYV9tYXBfcGFnZSsweDE5NC8weDFh MA0KW8KgwqAgMTAuNDc3NjA4XcKgIGRtYV9tYXBfcGFnZV9hdHRycysweDFkNC8weDIzMA0KW8Kg wqAgMTAuNDc3NjM4XcKgIHZyaW5nX21hcF9vbmVfc2crMHg2MC8weDcwDQpbwqDCoCAxMC40Nzc2 NjhdwqAgdmlydHF1ZXVlX2FkZF9vdXRidWYrMHgyNDgvMHg3ODANClvCoMKgIDEwLjQ3NzcwNV3C oCBzdGFydF94bWl0KzB4MWQwLzB4NTE4DQpbwqDCoCAxMC40Nzc3MzRdwqAgZGV2X2hhcmRfc3Rh cnRfeG1pdCsweDk4LzB4MTU4DQpbwqDCoCAxMC40Nzc3NjddwqAgc2NoX2RpcmVjdF94bWl0KzB4 ZWMvMHgzNzgNClvCoMKgIDEwLjQ3Nzc5NV3CoCBfX2Rldl9xdWV1ZV94bWl0KzB4NWI4LzB4YzUw DQpbwqDCoCAxMC40Nzc4MjBdwqAgaXBfZmluaXNoX291dHB1dDIrMHgyMzQvMHg1NjANClvCoMKg IDEwLjQ3Nzg1M13CoCBfX2lwX2ZpbmlzaF9vdXRwdXQrMHhhYy8weDI2OA0KW8KgwqAgMTAuNDc3 ODc4XcKgIGlwX291dHB1dCsweGZjLzB4MWIwDQpbwqDCoCAxMC40Nzc5MDVdwqAgaXBfbG9jYWxf b3V0KzB4NDgvMHg2MA0KW8KgwqAgMTAuNDc3OTM0XcKgIF9faXBfcXVldWVfeG1pdCsweDE0MC8w eDNjOA0KW8KgwqAgMTAuNDc3OTYwXcKgIGlwX3F1ZXVlX3htaXQrMHgxNC8weDIwDQpbwqDCoCAx MC40Nzc5ODZdwqAgX190Y3BfdHJhbnNtaXRfc2tiKzB4NDgwLzB4YWQwDQpbwqDCoCAxMC40Nzgw MTRdwqAgdGNwX3dyaXRlX3htaXQrMHg1ZGMvMHgxMDQ4DQpbwqDCoCAxMC40NzgwNDVdwqAgX190 Y3BfcHVzaF9wZW5kaW5nX2ZyYW1lcysweDNjLzB4YzgNClvCoMKgIDEwLjQ3ODA3N13CoCBfX3Rj cF9zb2NrX3NldF9jb3JrLnBhcnQuMCsweDYwLzB4NzANClvCoMKgIDEwLjQ3ODExM13CoCB0Y3Bf c29ja19zZXRfY29yaysweDUwLzB4NjgNClvCoMKgIDEwLjQ3ODE0MV3CoCB4c190Y3Bfc2VuZF9y ZXF1ZXN0KzB4MWQwLzB4MjQ4DQpbwqDCoCAxMC40NzgxNzRdwqAgeHBydF90cmFuc21pdCsweDE1 NC8weDI5OA0KW8KgwqAgMTAuNDc4MjA2XcKgIGNhbGxfdHJhbnNtaXQrMHg5OC8weGIwDQpbwqDC oCAxMC40NzgyMzJdwqAgX19ycGNfZXhlY3V0ZSsweGIwLzB4MzM4DQpbwqDCoCAxMC40NzgyNThd wqAgcnBjX2FzeW5jX3NjaGVkdWxlKzB4MmMvMHg1MA0KW8KgwqAgMTAuNDc4Mjg2XcKgIHByb2Nl c3Nfb25lX3dvcmsrMHgxZDAvMHgzMjANClvCoMKgIDEwLjQ3ODMxNF3CoCB3b3JrZXJfdGhyZWFk KzB4NGMvMHg0MDANClvCoMKgIDEwLjQ3ODM0MV3CoCBrdGhyZWFkKzB4MTEwLzB4MTIwDQpbwqDC oCAxMC40NzgzNzFdwqAgcmV0X2Zyb21fZm9yaysweDEwLzB4MjANClvCoMKgIDEwLjQ3ODM5OV0g LS0tWyBlbmQgdHJhY2UgMDAwMDAwMDAwMDAwMDAwMCBdLS0tDQoNCg0KV2UgZ2V0IGFuIG9mZnNl dCAweDNhYTguIFdlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBtYXBwaW5nIHZpcnRpbyANCmRlc2Ny aXB0b3Igd2hpY2ggaXMgcGFzc2VkIGZyb20gdGhlIHRvcCBsZXZlbCBhcyBzY2F0dGVybGlzdCwg YWNjb3JkaW5nIA0KdG8gdGhlIGR1bXANCg0KdGhlIGRtYV9tYXBfcGFnZSgpIGlzIGNhbGxlZCBm cm9tIGhlcmUgd2l0aCBzY2F0dGVybGlzdCBwYXJhbWV0ZXJzOg0KDQpodHRwczovL2VsaXhpci5i b290bGluLmNvbS9saW51eC92Ni4wLXJjNy9zb3VyY2UvZHJpdmVycy92aXJ0aW8vdmlydGlvX3Jp bmcuYyNMMzYzDQoNClNvIHdlIGFyZSBub3QgZGVhbGluZyB3aXRoIGEgcmFuZ2Ugd2l0aGluIGEg c2luZ2xlIHBhZ2UuDQoNCg0KT3IgSSByZWFsbHkgbWlzc2VkIHNvbWV0aGluZy4NCg0KDQo+DQo+ DQo+DQo+Pg0KPj4NCj4+PiBzbyB0b3VjaGVzIHRoZSBzYW1lIGNvZGUgYW5kIHNob3VsZCBiZSBw cmVyZXE6DQo+Pj4NCj4+PiBodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvYWxsLzIwMjIxMDA3MTMyNzM2LjIyNzU1NzQtMS1vbGVrc3R5c2hAZ21haWwu Y29tL19fOyEhR0ZfMjlkYmNRSVVCUEEhMzZDSjVTNVQ0N0hNaDlOcS0wV1ZVUFNsbkhqdmxVb24t b29GR293YnZHQThCZFdTQ0M5bmlGMGZfYnR2aXRlMUc2TElSd3l3NlhzVTZQQW5Dak15OTJLaU5r TUckIA0KPj4+IFtsb3JlWy5da2VybmVsWy5db3JnXQ0KPj4+DQo+Pj4NCj4+Pj4NCj4+Pj4+Pg0K Pj4+Pj4+DQo+Pj4+Pj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGksIG5fcGFnZXMgPSBYRU5fUEZO X1VQKG9mZnNldCArIHNpemUpOw0KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoCBncmFudF9yZWZfdCBn cmFudDsNCj4+Pj4+Pj4gwqDCoMKgIMKgwqDCoMKgwqAgaWYgKFdBUk5fT04oZGlyID09IERNQV9O T05FKSkNCj4+Pj4+Pg0KPj4+Pj4NCj4+Pj4+IFRoYW5rIHlvdS4NCj4+Pj4+DQo+Pj4+Pg0KPj4+ Pg0KPj4NCi0tIA0KUmVnYXJkcywNCg0KT2xla3NhbmRyIFR5c2hjaGVua28NCg==