Received: by 2002:a05:7412:bbc7:b0:fc:a2b0:25d7 with SMTP id kh7csp1265048rdb; Fri, 2 Feb 2024 22:22:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IHPULp25ZFXRO5RhD8sejecIaI7GTngGa2yYAElsInk2xLbmWhu8Rb7TVIXV+q2Rc9lbQ46 X-Received: by 2002:a17:907:3602:b0:a35:6c2f:f0e7 with SMTP id bk2-20020a170907360200b00a356c2ff0e7mr3511452ejc.74.1706941325391; Fri, 02 Feb 2024 22:22:05 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706941325; cv=pass; d=google.com; s=arc-20160816; b=tkzKHkIx9cjycC6fb0ZFYkEbI9SWH03Q0Q1jgyr5wk6OJXWiWRKhcOiVJjixnJh8cm kQC6dRrL886NWmzus3oY6jSYvYqWNJGPMMpFTYqX059bSHfTlj8mb9cAuO7aqgQiuM3D FgFG02aIFvPLbEEHaS5UiqiXfq5NF9EPyqhOuVUe8bu9EBhwbuYVCLi8rOQaW1e8T3ui XU3vt1OfHJVHxki36vQeuTFAIm5lrK8EbtuoyYjvCD/ionz9JC41YTaGOfwMaoDMEGjR rGkmRSAnMYLxFPjpK/Rj60zLAAUlvKVvTPmCiwhFSf8jEyZRjlombnTFtkUeGxt0a7op 7CTw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:message-id:reply-to:cc:to:from:date; bh=y0Fo7xpoTmP+mqAHYoP3Nz/VAe1eg0/ANI/FfqoJNNQ=; fh=fcHm/nQjbDYp1WsVLw+DVGADfqDBBSLdfSC2qF27Jkg=; b=0LnKRDnkF/JN+ydS19ISwW4VST/i5gTudpYqYMAo0bKkHimQa1/GMLrZkaTj68NY3h OQ8O6BMCz8QFfXgHHOxaBRtUO8KAFARUPRPBaUvR5z6SiThR5szsntzVdRUWPSpYHIuy To7Womu+DoLqz7dwUGRD+gyp9XZmmaceWibRsCXhSR2Zq91acdb3tolExZFKrqp3phEY VkQq23qAqPSZvqUh6ZLNcQ0BRC9xNvJ9jR6Y84i4R/KZA+q5FECtljDnsSwqH4T3iRp5 hg8lfyIdDZbe1qihawrDEb7hXbQ8OILyqqI2aUBuN6IEBHCCfTqxruzklk7eZVvgRJgP sArg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-50941-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-50941-linux.lists.archive=gmail.com@vger.kernel.org" X-Forwarded-Encrypted: i=1; AJvYcCULKzOX43WCxmKF2qSpy2FBin5fCqWDqdYtigdBucEs1ZgJoj9bzs6qaZz/EKERuO8evLOyWbjEVFYw9qXIi3/I4mOkX2rjZYb6Dm7asQ== Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id i19-20020a170906115300b00a36600d8ed0si1462171eja.658.2024.02.02.22.22.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Feb 2024 22:22:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-50941-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-50941-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-50941-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 6D45A1F24F90 for ; Sat, 3 Feb 2024 06:22:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id B5B7F13FF1; Sat, 3 Feb 2024 06:21:57 +0000 (UTC) Received: from out28-219.mail.aliyun.com (out28-219.mail.aliyun.com [115.124.28.219]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 063EE1640B; Sat, 3 Feb 2024 06:21:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.28.219 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706941314; cv=none; b=twiEi/DKoky0H8THyYP8Ns+xEwTwN0IISHxTKLtgR0AMnZH02T9frmn5U87bYR1/V4yMV/pxVBc8dn4qcBb9B0qAFrrdi5fxaiA93pkzHQc1DgtGJdK90ZOFJ0mpqxP6MUDy6NjcWS0f2GfrGGIQBsAtZYLys7RNiI42Eeqakcg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706941314; c=relaxed/simple; bh=y0Fo7xpoTmP+mqAHYoP3Nz/VAe1eg0/ANI/FfqoJNNQ=; h=Date:From:To:Cc:Message-ID:Subject:MIME-Version:Content-Type; b=pxp9R9yIkFr8aiqIv8oHl4lF+9jknU/kL0ugJoPHpcp3PecrS+7hNfM+JtpCX2VhKvjvOeNy9ADNc284rEZT7fNMT90K4jr99rgMmUTx5jNTu07I3qcUB8w/JHgVD9LBlz1wWLbNzSfqqvuQt7NmFnUsYyisLXkhjbGrWtkcdmk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com; spf=pass smtp.mailfrom=ubisectech.com; arc=none smtp.client-ip=115.124.28.219 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ubisectech.com X-Alimail-AntiSpam:AC=CONTINUE;BC=0.07389186|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_alarm|0.044578-0.0322923-0.92313;FP=0|0|0|0|0|0|0|0;HT=ay29a033018047190;MF=bugreport@ubisectech.com;NM=1;PH=DW;RN=3;RT=3;SR=0;TI=W4_0.2.3_v5_212505EA_1706940864067_o7001c640; Received: from WS-web (bugreport@ubisectech.com[W4_0.2.3_v5_212505EA_1706940864067_o7001c640]) at Sat, 03 Feb 2024 14:16:16 +0800 Date: Sat, 03 Feb 2024 14:16:16 +0800 From: "Ubisectech Sirius" To: "linux-trace-kernel" , "linux-kernel" Cc: "kuba" Reply-To: "Ubisectech Sirius" Message-ID: <4db12050-bd87-487c-8298-7ac8e8393d79.bugreport@ubisectech.com> Subject: =?UTF-8?B?SU5GTzogcmN1IGRldGVjdGVkIHN0YWxsIGluIG5zaW1fZmliX2V2ZW50X3dvcms=?= X-Mailer: [Alimail-Mailagent revision 1][W4_0.2.3][v5][Chrome] Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 x-aliyun-mail-creator: W4_0.2.3_v5_M3LTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMS4wLjAuMCBTYWZhcmkvNTM3LjM2vN Content-Type: multipart/mixed; boundary="----=ALIBOUNDARY_11946_7f1fa17ff700_65bdda30_37ac01" This is a multi-part message in MIME format. ------=ALIBOUNDARY_11946_7f1fa17ff700_65bdda30_37ac01 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 CkhlbGxvLgpXZSBhcmUgVWJpc2VjdGVjaCBTaXJpdXMgVGVhbSwgdGhlIHZ1bG5lcmFiaWxpdHkg bGFiIG9mIENoaW5hIFZhbGlhbnRTZWMuIFJlY2VudGx5LCBvdXIgdGVhbSBoYXMgZGlzY292ZXJl ZCBhIGlzc3VlIGluIExpbnV4IGtlcm5lbCA2LjguMC1yYzItZzY3NjRjMzE3YjZiYi4gQXR0YWNo ZWQgdG8gdGhlIGVtYWlsIHdlcmUgYSBQT0MgZmlsZSBvZiB0aGUgaXNzdWUuCgpTdGFjayBkdW1w OgpyY3U6IElORk86IHJjdV9wcmVlbXB0IGRldGVjdGVkIGV4cGVkaXRlZCBzdGFsbHMgb24gQ1BV cy90YXNrczogeyAxLS4uLkQgfSAyNjU2IGppZmZpZXMgczogMTQzMyByb290OiAweDIvLgpyY3U6 IGJsb2NraW5nIHJjdV9ub2RlIHN0cnVjdHVyZXMgKGludGVybmFsIFJDVSBkZWJ1Zyk6ClNlbmRp bmcgTk1JIGZyb20gQ1BVIDAgdG8gQ1BVcyAxOgpOTUkgYmFja3RyYWNlIGZvciBjcHUgMQpDUFU6 IDEgUElEOiAyMyBDb21tOiBrd29ya2VyLzE6MCBOb3QgdGFpbnRlZCA2LjguMC1yYzItZzY3NjRj MzE3YjZiYiAjMjIKSGFyZHdhcmUgbmFtZTogUUVNVSBTdGFuZGFyZCBQQyAoaTQ0MEZYICsgUElJ WCwgMTk5NiksIEJJT1MgMS4xNS4wLTEgMDQvMDEvMjAxNApXb3JrcXVldWU6IGV2ZW50cyBuc2lt X2ZpYl9ldmVudF93b3JrClJJUDogMDAxMDptYXRjaF9oZWxkX2xvY2srMHg3Yi8weGMwIGtlcm5l bC9sb2NraW5nL2xvY2tkZXAuYzo1MjMxCkNvZGU6IDIwIDViIDgxIGUyIGZmIDFmIDAwIDAwIDQ4 IDM5IGQwIDQxIDBmIDk0IGM0IDQ0IDg5IGUwIDQxIDVjIGMzIDMxIGY2IGU4IDYzIGZlIGZmIGZm IDQ4IDg1IGMwIDc1IGFlIDQ1IDMxIGU0IDQ0IDg5IGUwIDViIDQxIDVjIDxjMz4gNDEgYmMgMDEg MDAgMDAgMDAgNWIgNDQgODkgZTAgNDEgNWMgYzMgOTAgZTggOTEgMmIgZTggZjkgODUgYzAKUlNQ OiAwMDE4OmZmZmZjOTAwMDA0YjhkZjggRUZMQUdTOiAwMDAwMDA0NgpSQVg6IDAwMDAwMDAwMDAw MDAwMDAgUkJYOiAwMDAwMDAwMDAwMDAwMDAxIFJDWDogMDAwMDAwMDAwMDAwMDAwMQpSRFg6IDAw MDAwMDAwMDAwMDAwMDAgUlNJOiBmZmZmODg4MDdlYzJiYWQ4IFJESTogZmZmZjg4ODA0MGVkYWZh OApSQlA6IGZmZmY4ODgwN2VjMmJhZDggUjA4OiAwMDAwMDAwMDAwMDAwMDA1IFIwOTogMDAwMDAw MDAwMDAwMDAwMApSMTA6IDAwMDAwMDAwMDAwMDAwMDEgUjExOiAwMDAwMDAwMDAwMDAwMDAwIFIx MjogZmZmZjg4ODA0MGVkYTRjMApSMTM6IGZmZmY4ODgwNDBlZGFmODAgUjE0OiAwMDAwMDAwMGZm ZmZmZmZmIFIxNTogZmZmZjg4ODA0MGVkYWZhOApGUzogIDAwMDAwMDAwMDAwMDAwMDAoMDAwMCkg R1M6ZmZmZjg4ODA3ZWMwMDAwMCgwMDAwKSBrbmxHUzowMDAwMDAwMDAwMDAwMDAwCkNTOiAgMDAx MCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMKQ1IyOiAwMDAwN2ZiZDhm MDI0MjEwIENSMzogMDAwMDAwMDAyMDM1ZjAwMCBDUjQ6IDAwMDAwMDAwMDA3NTBlZjAKRFIwOiAw MDAwMDAwMDAwMDAwMDAwIERSMTogMDAwMDAwMDAwMDAwMDAwMCBEUjI6IDAwMDAwMDAwMDAwMDAw MDAKRFIzOiAwMDAwMDAwMDAwMDAwMDAwIERSNjogMDAwMDAwMDBmZmZlMGZmMCBEUjc6IDAwMDAw MDAwMDAwMDA0MDAKUEtSVTogNTU1NTU1NTQKQ2FsbCBUcmFjZToKIDxOTUk+CiA8L05NST4KIDxJ UlE+CiBfX2xvY2tfaXNfaGVsZCBrZXJuZWwvbG9ja2luZy9sb2NrZGVwLmM6NTQ5NSBbaW5saW5l XQogbG9ja19pc19oZWxkX3R5cGUrMHhhYi8weDE0MCBrZXJuZWwvbG9ja2luZy9sb2NrZGVwLmM6 NTgyNQogbG9ja19pc19oZWxkIGluY2x1ZGUvbGludXgvbG9ja2RlcC5oOjIzMSBbaW5saW5lXQog X19ydW5faHJ0aW1lciBrZXJuZWwvdGltZS9ocnRpbWVyLmM6MTY1NCBbaW5saW5lXQogX19ocnRp bWVyX3J1bl9xdWV1ZXMrMHg5NTUvMHhjMTAga2VybmVsL3RpbWUvaHJ0aW1lci5jOjE3NTIKIGhy dGltZXJfaW50ZXJydXB0KzB4MzIwLzB4N2IwIGtlcm5lbC90aW1lL2hydGltZXIuYzoxODE0CiBs b2NhbF9hcGljX3RpbWVyX2ludGVycnVwdCBhcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljLmM6MTA2 NSBbaW5saW5lXQogX19zeXN2ZWNfYXBpY190aW1lcl9pbnRlcnJ1cHQrMHgxMDUvMHg0MDAgYXJj aC94ODYva2VybmVsL2FwaWMvYXBpYy5jOjEwODIKIHN5c3ZlY19hcGljX3RpbWVyX2ludGVycnVw dCsweDk0LzB4YjAgYXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5jOjEwNzYKIDwvSVJRPgogPFRB U0s+CiBhc21fc3lzdmVjX2FwaWNfdGltZXJfaW50ZXJydXB0KzB4MWEvMHgyMCBhcmNoL3g4Ni9p bmNsdWRlL2FzbS9pZHRlbnRyeS5oOjY0OQpSSVA6IDAwMTA6d3JpdGVfY29tcF9kYXRhKzB4MzUv MHg4MCBrZXJuZWwva2Nvdi5jOjIzNgpDb2RlOiA4YiAxNCAyNSA0MCBjMiAwMyAwMCA2NSA4YiAw NSAwZiAwMiA3ZSA3ZSBhOSAwMCAwMSBmZiAwMCA3NCAwZiBmNiBjNCAwMSA3NCA1OSA4YiA4MiBm YyAxNSAwMCAwMCA4NSBjMCA3NCA0ZiA4YiA4MiBkOCAxNSAwMCAwMCA8ODM+IGY4IDAzIDc1IDQ0 IDQ4IDhiIDgyIGUwIDE1IDAwIDAwIDhiIDkyIGRjIDE1IDAwIDAwIDQ4IDhiIDM4IDQ4ClJTUDog MDAxODpmZmZmYzkwMDAwNDlmNzkwIEVGTEFHUzogMDAwMDAyNDYKUkFYOiAwMDAwMDAwMDAwMDAw MDAwIFJCWDogZmZmZmM5MDAwMDQ5ZjdiOCBSQ1g6IGZmZmZmZmZmODEzOWEyOTQKUkRYOiBmZmZm ODg4MDQwZWRhNGMwIFJTSTogMDAwMDAwMDAwMDAwMDAwMCBSREk6IDAwMDAwMDAwMDAwMDAwMDUK UkJQOiAwMDAwMDAwMDAwMDAwMDAxIFIwODogMDAwMDAwMDAwMDAwMDAwNSBSMDk6IDAwMDAwMDAw MDAwMDAwMDAKUjEwOiAwMDAwMDAwMDAwMDAwMDAxIFIxMTogMDAwMDAwMDAwMDAwMDAwMCBSMTI6 IGZmZmZjOTAwMDA0OWY4MDAKUjEzOiBmZmZmYzkwMDAwNDlmODc4IFIxNDogZmZmZjg4ODA0MGVk YTRjMCBSMTU6IGZmZmZjOTAwMDA0OWY4NDgKIHVud2luZF9nZXRfcmV0dXJuX2FkZHJlc3MgYXJj aC94ODYva2VybmVsL3Vud2luZF9vcmMuYzozNjkgW2lubGluZV0KIHVud2luZF9nZXRfcmV0dXJu X2FkZHJlc3MrMHg4NC8weGUwIGFyY2gveDg2L2tlcm5lbC91bndpbmRfb3JjLmM6MzY0CiBhcmNo X3N0YWNrX3dhbGsrMHg5Zi8weDE2MCBhcmNoL3g4Ni9rZXJuZWwvc3RhY2t0cmFjZS5jOjI2CiBz dGFja190cmFjZV9zYXZlKzB4OTAvMHhjMCBrZXJuZWwvc3RhY2t0cmFjZS5jOjEyMgoga2FzYW5f c2F2ZV9zdGFjaysweDI0LzB4NDAgbW0va2FzYW4vY29tbW9uLmM6NDcKIGthc2FuX3NhdmVfdHJh Y2srMHgxNC8weDMwIG1tL2thc2FuL2NvbW1vbi5jOjY4CiBwb2lzb25fa21hbGxvY19yZWR6b25l IG1tL2thc2FuL2NvbW1vbi5jOjM3MiBbaW5saW5lXQogX19rYXNhbl9rbWFsbG9jKzB4YTIvMHhi MCBtbS9rYXNhbi9jb21tb24uYzozODkKIGttYWxsb2MgaW5jbHVkZS9saW51eC9zbGFiLmg6NTkw IFtpbmxpbmVdCiBremFsbG9jIGluY2x1ZGUvbGludXgvc2xhYi5oOjcxMSBbaW5saW5lXQogbnNp bV9maWI0X3J0X2NyZWF0ZSBkcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM6MjgwIFtpbmxpbmVd CiBuc2ltX2ZpYjRfcnRfaW5zZXJ0IGRyaXZlcnMvbmV0L25ldGRldnNpbS9maWIuYzo0MjYgW2lu bGluZV0KIG5zaW1fZmliNF9ldmVudCBkcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM6NDY0IFtp bmxpbmVdCiBuc2ltX2ZpYl9ldmVudCBkcml2ZXJzL25ldC9uZXRkZXZzaW0vZmliLmM6ODg0IFtp bmxpbmVdCiBuc2ltX2ZpYl9ldmVudF93b3JrKzB4NzMxLzB4MjRiMCBkcml2ZXJzL25ldC9uZXRk ZXZzaW0vZmliLmM6MTQ5MgogcHJvY2Vzc19vbmVfd29yaysweDg3OC8weDE1YzAga2VybmVsL3dv cmtxdWV1ZS5jOjI2MzMKIHByb2Nlc3Nfc2NoZWR1bGVkX3dvcmtzIGtlcm5lbC93b3JrcXVldWUu YzoyNzA2IFtpbmxpbmVdCiB3b3JrZXJfdGhyZWFkKzB4ODU1LzB4MTIwMCBrZXJuZWwvd29ya3F1 ZXVlLmM6Mjc4Nwoga3RocmVhZCsweDJjYy8weDNiMCBrZXJuZWwva3RocmVhZC5jOjM4OAogcmV0 X2Zyb21fZm9yaysweDQ1LzB4ODAgYXJjaC94ODYva2VybmVsL3Byb2Nlc3MuYzoxNDcKIHJldF9m cm9tX2ZvcmtfYXNtKzB4MTEvMHgyMCBhcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TOjI0MgogPC9U QVNLPgpJTkZPOiBOTUkgaGFuZGxlciAobm1pX2NwdV9iYWNrdHJhY2VfaGFuZGxlcikgdG9vayB0 b28gbG9uZyB0byBydW46IDEuNzkxIG1zZWNzCgpUaGFuayB5b3UgZm9yIHRha2luZyB0aGUgdGlt ZSB0byByZWFkIHRoaXMgZW1haWwgYW5kIHdlIGxvb2sgZm9yd2FyZCB0byB3b3JraW5nIHdpdGgg eW91IGZ1cnRoZXIuCgoKCgoKCgoKCg== ------=ALIBOUNDARY_11946_7f1fa17ff700_65bdda30_37ac01 Content-Type: application/octet-stream Content-Disposition: attachment; filename="=?UTF-8?B?cG9jLmM=?=" Content-Transfer-Encoding: base64 Ly8gYXV0b2dlbmVyYXRlZCBieSBzeXprYWxsZXIgKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv c3l6a2FsbGVyKQoKI2RlZmluZSBfR05VX1NPVVJDRQoKI2luY2x1ZGUgPGFycGEvaW5ldC5oPgoj aW5jbHVkZSA8ZGlyZW50Lmg+CiNpbmNsdWRlIDxlbmRpYW4uaD4KI2luY2x1ZGUgPGVycm5vLmg+ CiNpbmNsdWRlIDxmY250bC5oPgojaW5jbHVkZSA8bmV0L2lmLmg+CiNpbmNsdWRlIDxuZXQvaWZf YXJwLmg+CiNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiNpbmNsdWRlIDxzY2hlZC5oPgojaW5jbHVk ZSA8c2lnbmFsLmg+CiNpbmNsdWRlIDxzdGRhcmcuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KI2lu Y2x1ZGUgPHN0ZGludC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoj aW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KI2luY2x1ZGUgPHN5cy9t b3VudC5oPgojaW5jbHVkZSA8c3lzL3ByY3RsLmg+CiNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4K I2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiNpbmNsdWRlIDxz eXMvc3lzY2FsbC5oPgojaW5jbHVkZSA8c3lzL3RpbWUuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5o PgojaW5jbHVkZSA8c3lzL3Vpby5oPgojaW5jbHVkZSA8c3lzL3dhaXQuaD4KI2luY2x1ZGUgPHRp bWUuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgoKI2luY2x1ZGUgPGxpbnV4L2NhcGFiaWxpdHkuaD4K I2luY2x1ZGUgPGxpbnV4L2dlbmV0bGluay5oPgojaW5jbHVkZSA8bGludXgvaWZfYWRkci5oPgoj aW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KI2luY2x1ZGUgPGxpbnV4L2lmX2xpbmsuaD4KI2lu Y2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgojaW5jbHVkZSA8bGludXgvaW42Lmg+CiNpbmNsdWRlIDxs aW51eC9pcC5oPgojaW5jbHVkZSA8bGludXgvbmVpZ2hib3VyLmg+CiNpbmNsdWRlIDxsaW51eC9u ZXQuaD4KI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGlu ay5oPgojaW5jbHVkZSA8bGludXgvdGNwLmg+CiNpbmNsdWRlIDxsaW51eC92ZXRoLmg+CgpzdGF0 aWMgdW5zaWduZWQgbG9uZyBsb25nIHByb2NpZDsKCnN0YXRpYyB2b2lkIHNsZWVwX21zKHVpbnQ2 NF90IG1zKQp7CiAgdXNsZWVwKG1zICogMTAwMCk7Cn0KCnN0YXRpYyB1aW50NjRfdCBjdXJyZW50 X3RpbWVfbXModm9pZCkKewogIHN0cnVjdCB0aW1lc3BlYyB0czsKICBpZiAoY2xvY2tfZ2V0dGlt ZShDTE9DS19NT05PVE9OSUMsICZ0cykpCiAgICBleGl0KDEpOwogIHJldHVybiAodWludDY0X3Qp dHMudHZfc2VjICogMTAwMCArICh1aW50NjRfdCl0cy50dl9uc2VjIC8gMTAwMDAwMDsKfQoKI2Rl ZmluZSBCSVRNQVNLKGJmX29mZiwgYmZfbGVuKSAoKCgxdWxsIDw8IChiZl9sZW4pKSAtIDEpIDw8 IChiZl9vZmYpKQojZGVmaW5lIFNUT1JFX0JZX0JJVE1BU0sodHlwZSwgaHRvYmUsIGFkZHIsIHZh bCwgYmZfb2ZmLCBiZl9sZW4pICAgICAgICAgICAgICAgXAogICoodHlwZSopKGFkZHIpID0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAogICAgICBodG9iZSgoaHRvYmUoKih0eXBlKikoYWRkcikpICYgfkJJVE1BU0soKGJmX29mZiks IChiZl9sZW4pKSkgfCAgICAgICAgICAgXAogICAgICAgICAgICAoKCh0eXBlKSh2YWwpIDw8IChi Zl9vZmYpKSAmIEJJVE1BU0soKGJmX29mZiksIChiZl9sZW4pKSkpCgpzdGF0aWMgYm9vbCB3cml0 ZV9maWxlKGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IGNoYXIqIHdoYXQsIC4uLikKewogIGNoYXIg YnVmWzEwMjRdOwogIHZhX2xpc3QgYXJnczsKICB2YV9zdGFydChhcmdzLCB3aGF0KTsKICB2c25w cmludGYoYnVmLCBzaXplb2YoYnVmKSwgd2hhdCwgYXJncyk7CiAgdmFfZW5kKGFyZ3MpOwogIGJ1 ZltzaXplb2YoYnVmKSAtIDFdID0gMDsKICBpbnQgbGVuID0gc3RybGVuKGJ1Zik7CiAgaW50IGZk ID0gb3BlbihmaWxlLCBPX1dST05MWSB8IE9fQ0xPRVhFQyk7CiAgaWYgKGZkID09IC0xKQogICAg cmV0dXJuIGZhbHNlOwogIGlmICh3cml0ZShmZCwgYnVmLCBsZW4pICE9IGxlbikgewogICAgaW50 IGVyciA9IGVycm5vOwogICAgY2xvc2UoZmQpOwogICAgZXJybm8gPSBlcnI7CiAgICByZXR1cm4g ZmFsc2U7CiAgfQogIGNsb3NlKGZkKTsKICByZXR1cm4gdHJ1ZTsKfQoKc3RydWN0IG5sbXNnIHsK ICBjaGFyKiBwb3M7CiAgaW50IG5lc3Rpbmc7CiAgc3RydWN0IG5sYXR0ciogbmVzdGVkWzhdOwog IGNoYXIgYnVmWzQwOTZdOwp9OwoKc3RhdGljIHZvaWQgbmV0bGlua19pbml0KHN0cnVjdCBubG1z Zyogbmxtc2csIGludCB0eXAsIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHZvaWQqIGRhdGEsIGludCBzaXplKQp7CiAgbWVtc2V0KG5sbXNnLCAwLCBzaXplb2YoKm5s bXNnKSk7CiAgc3RydWN0IG5sbXNnaGRyKiBoZHIgPSAoc3RydWN0IG5sbXNnaGRyKilubG1zZy0+ YnVmOwogIGhkci0+bmxtc2dfdHlwZSA9IHR5cDsKICBoZHItPm5sbXNnX2ZsYWdzID0gTkxNX0Zf UkVRVUVTVCB8IE5MTV9GX0FDSyB8IGZsYWdzOwogIG1lbWNweShoZHIgKyAxLCBkYXRhLCBzaXpl KTsKICBubG1zZy0+cG9zID0gKGNoYXIqKShoZHIgKyAxKSArIE5MTVNHX0FMSUdOKHNpemUpOwp9 CgpzdGF0aWMgdm9pZCBuZXRsaW5rX2F0dHIoc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHR5cCwg Y29uc3Qgdm9pZCogZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplKQp7CiAg c3RydWN0IG5sYXR0ciogYXR0ciA9IChzdHJ1Y3QgbmxhdHRyKilubG1zZy0+cG9zOwogIGF0dHIt Pm5sYV9sZW4gPSBzaXplb2YoKmF0dHIpICsgc2l6ZTsKICBhdHRyLT5ubGFfdHlwZSA9IHR5cDsK ICBpZiAoc2l6ZSA+IDApCiAgICBtZW1jcHkoYXR0ciArIDEsIGRhdGEsIHNpemUpOwogIG5sbXNn LT5wb3MgKz0gTkxNU0dfQUxJR04oYXR0ci0+bmxhX2xlbik7Cn0KCnN0YXRpYyB2b2lkIG5ldGxp bmtfbmVzdChzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgdHlwKQp7CiAgc3RydWN0IG5sYXR0ciog YXR0ciA9IChzdHJ1Y3QgbmxhdHRyKilubG1zZy0+cG9zOwogIGF0dHItPm5sYV90eXBlID0gdHlw OwogIG5sbXNnLT5wb3MgKz0gc2l6ZW9mKCphdHRyKTsKICBubG1zZy0+bmVzdGVkW25sbXNnLT5u ZXN0aW5nKytdID0gYXR0cjsKfQoKc3RhdGljIHZvaWQgbmV0bGlua19kb25lKHN0cnVjdCBubG1z Zyogbmxtc2cpCnsKICBzdHJ1Y3QgbmxhdHRyKiBhdHRyID0gbmxtc2ctPm5lc3RlZFstLW5sbXNn LT5uZXN0aW5nXTsKICBhdHRyLT5ubGFfbGVuID0gbmxtc2ctPnBvcyAtIChjaGFyKilhdHRyOwp9 CgpzdGF0aWMgaW50IG5ldGxpbmtfc2VuZF9leHQoc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNv Y2ssIHVpbnQxNl90IHJlcGx5X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQq IHJlcGx5X2xlbiwgYm9vbCBkb2ZhaWwpCnsKICBpZiAobmxtc2ctPnBvcyA+IG5sbXNnLT5idWYg KyBzaXplb2Yobmxtc2ctPmJ1ZikgfHwgbmxtc2ctPm5lc3RpbmcpCiAgICBleGl0KDEpOwogIHN0 cnVjdCBubG1zZ2hkciogaGRyID0gKHN0cnVjdCBubG1zZ2hkciopbmxtc2ctPmJ1ZjsKICBoZHIt Pm5sbXNnX2xlbiA9IG5sbXNnLT5wb3MgLSBubG1zZy0+YnVmOwogIHN0cnVjdCBzb2NrYWRkcl9u bCBhZGRyOwogIG1lbXNldCgmYWRkciwgMCwgc2l6ZW9mKGFkZHIpKTsKICBhZGRyLm5sX2ZhbWls eSA9IEFGX05FVExJTks7CiAgc3NpemVfdCBuID0gc2VuZHRvKHNvY2ssIG5sbXNnLT5idWYsIGhk ci0+bmxtc2dfbGVuLCAwLAogICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyKikm YWRkciwgc2l6ZW9mKGFkZHIpKTsKICBpZiAobiAhPSAoc3NpemVfdCloZHItPm5sbXNnX2xlbikg ewogICAgaWYgKGRvZmFpbCkKICAgICAgZXhpdCgxKTsKICAgIHJldHVybiAtMTsKICB9CiAgbiA9 IHJlY3Yoc29jaywgbmxtc2ctPmJ1Ziwgc2l6ZW9mKG5sbXNnLT5idWYpLCAwKTsKICBpZiAocmVw bHlfbGVuKQogICAgKnJlcGx5X2xlbiA9IDA7CiAgaWYgKG4gPCAwKSB7CiAgICBpZiAoZG9mYWls KQogICAgICBleGl0KDEpOwogICAgcmV0dXJuIC0xOwogIH0KICBpZiAobiA8IChzc2l6ZV90KXNp emVvZihzdHJ1Y3Qgbmxtc2doZHIpKSB7CiAgICBlcnJubyA9IEVJTlZBTDsKICAgIGlmIChkb2Zh aWwpCiAgICAgIGV4aXQoMSk7CiAgICByZXR1cm4gLTE7CiAgfQogIGlmIChoZHItPm5sbXNnX3R5 cGUgPT0gTkxNU0dfRE9ORSkKICAgIHJldHVybiAwOwogIGlmIChyZXBseV9sZW4gJiYgaGRyLT5u bG1zZ190eXBlID09IHJlcGx5X3R5cGUpIHsKICAgICpyZXBseV9sZW4gPSBuOwogICAgcmV0dXJu IDA7CiAgfQogIGlmIChuIDwgKHNzaXplX3QpKHNpemVvZihzdHJ1Y3Qgbmxtc2doZHIpICsgc2l6 ZW9mKHN0cnVjdCBubG1zZ2VycikpKSB7CiAgICBlcnJubyA9IEVJTlZBTDsKICAgIGlmIChkb2Zh aWwpCiAgICAgIGV4aXQoMSk7CiAgICByZXR1cm4gLTE7CiAgfQogIGlmIChoZHItPm5sbXNnX3R5 cGUgIT0gTkxNU0dfRVJST1IpIHsKICAgIGVycm5vID0gRUlOVkFMOwogICAgaWYgKGRvZmFpbCkK ICAgICAgZXhpdCgxKTsKICAgIHJldHVybiAtMTsKICB9CiAgZXJybm8gPSAtKChzdHJ1Y3Qgbmxt c2dlcnIqKShoZHIgKyAxKSktPmVycm9yOwogIHJldHVybiAtZXJybm87Cn0KCnN0YXRpYyBpbnQg bmV0bGlua19zZW5kKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrKQp7CiAgcmV0dXJuIG5l dGxpbmtfc2VuZF9leHQobmxtc2csIHNvY2ssIDAsIE5VTEwsIHRydWUpOwp9CgpzdGF0aWMgaW50 IG5ldGxpbmtfcXVlcnlfZmFtaWx5X2lkKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGZhbWlseV9uYW1l LCBib29sIGRvZmFpbCkKewogIHN0cnVjdCBnZW5sbXNnaGRyIGdlbmxoZHI7CiAgbWVtc2V0KCZn ZW5saGRyLCAwLCBzaXplb2YoZ2VubGhkcikpOwogIGdlbmxoZHIuY21kID0gQ1RSTF9DTURfR0VU RkFNSUxZOwogIG5ldGxpbmtfaW5pdChubG1zZywgR0VOTF9JRF9DVFJMLCAwLCAmZ2VubGhkciwg c2l6ZW9mKGdlbmxoZHIpKTsKICBuZXRsaW5rX2F0dHIobmxtc2csIENUUkxfQVRUUl9GQU1JTFlf TkFNRSwgZmFtaWx5X25hbWUsCiAgICAgICAgICAgICAgIHN0cm5sZW4oZmFtaWx5X25hbWUsIEdF TkxfTkFNU0laIC0gMSkgKyAxKTsKICBpbnQgbiA9IDA7CiAgaW50IGVyciA9IG5ldGxpbmtfc2Vu ZF9leHQobmxtc2csIHNvY2ssIEdFTkxfSURfQ1RSTCwgJm4sIGRvZmFpbCk7CiAgaWYgKGVyciA8 IDApIHsKICAgIHJldHVybiAtMTsKICB9CiAgdWludDE2X3QgaWQgPSAwOwogIHN0cnVjdCBubGF0 dHIqIGF0dHIgPSAoc3RydWN0IG5sYXR0ciopKG5sbXNnLT5idWYgKyBOTE1TR19IRFJMRU4gKwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MTVNHX0FMSUdOKHNpemVv ZihnZW5saGRyKSkpOwogIGZvciAoOyAoY2hhciopYXR0ciA8IG5sbXNnLT5idWYgKyBuOwogICAg ICAgYXR0ciA9IChzdHJ1Y3QgbmxhdHRyKikoKGNoYXIqKWF0dHIgKyBOTE1TR19BTElHTihhdHRy LT5ubGFfbGVuKSkpIHsKICAgIGlmIChhdHRyLT5ubGFfdHlwZSA9PSBDVFJMX0FUVFJfRkFNSUxZ X0lEKSB7CiAgICAgIGlkID0gKih1aW50MTZfdCopKGF0dHIgKyAxKTsKICAgICAgYnJlYWs7CiAg ICB9CiAgfQogIGlmICghaWQpIHsKICAgIGVycm5vID0gRUlOVkFMOwogICAgcmV0dXJuIC0xOwog IH0KICByZWN2KHNvY2ssIG5sbXNnLT5idWYsIHNpemVvZihubG1zZy0+YnVmKSwgMCk7CiAgcmV0 dXJuIGlkOwp9CgpzdGF0aWMgaW50IG5ldGxpbmtfbmV4dF9tc2coc3RydWN0IG5sbXNnKiBubG1z ZywgdW5zaWduZWQgaW50IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGludCB0b3RhbF9sZW4pCnsKICBzdHJ1Y3Qgbmxtc2doZHIqIGhkciA9IChzdHJ1Y3Qgbmxt c2doZHIqKShubG1zZy0+YnVmICsgb2Zmc2V0KTsKICBpZiAob2Zmc2V0ID09IHRvdGFsX2xlbiB8 fCBvZmZzZXQgKyBoZHItPm5sbXNnX2xlbiA+IHRvdGFsX2xlbikKICAgIHJldHVybiAtMTsKICBy ZXR1cm4gaGRyLT5ubG1zZ19sZW47Cn0KCnN0YXRpYyB2b2lkIG5ldGxpbmtfYWRkX2RldmljZV9p bXBsKHN0cnVjdCBubG1zZyogbmxtc2csIGNvbnN0IGNoYXIqIHR5cGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUsIGJvb2wgdXApCnsKICBzdHJ1 Y3QgaWZpbmZvbXNnIGhkcjsKICBtZW1zZXQoJmhkciwgMCwgc2l6ZW9mKGhkcikpOwogIGlmICh1 cCkKICAgIGhkci5pZmlfZmxhZ3MgPSBoZHIuaWZpX2NoYW5nZSA9IElGRl9VUDsKICBuZXRsaW5r X2luaXQobmxtc2csIFJUTV9ORVdMSU5LLCBOTE1fRl9FWENMIHwgTkxNX0ZfQ1JFQVRFLCAmaGRy LAogICAgICAgICAgICAgICBzaXplb2YoaGRyKSk7CiAgaWYgKG5hbWUpCiAgICBuZXRsaW5rX2F0 dHIobmxtc2csIElGTEFfSUZOQU1FLCBuYW1lLCBzdHJsZW4obmFtZSkpOwogIG5ldGxpbmtfbmVz dChubG1zZywgSUZMQV9MSU5LSU5GTyk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX0lORk9f S0lORCwgdHlwZSwgc3RybGVuKHR5cGUpKTsKfQoKc3RhdGljIHZvaWQgbmV0bGlua19hZGRfZGV2 aWNlKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLCBjb25zdCBjaGFyKiB0eXBlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSkKewogIG5ldGxpbmtf YWRkX2RldmljZV9pbXBsKG5sbXNnLCB0eXBlLCBuYW1lLCBmYWxzZSk7CiAgbmV0bGlua19kb25l KG5sbXNnKTsKICBpbnQgZXJyID0gbmV0bGlua19zZW5kKG5sbXNnLCBzb2NrKTsKICBpZiAoZXJy IDwgMCkgewogIH0KfQoKc3RhdGljIHZvaWQgbmV0bGlua19hZGRfdmV0aChzdHJ1Y3Qgbmxtc2cq IG5sbXNnLCBpbnQgc29jaywgY29uc3QgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyKiBwZWVyKQp7CiAgbmV0bGlua19hZGRfZGV2aWNlX2ltcGwobmxt c2csICJ2ZXRoIiwgbmFtZSwgZmFsc2UpOwogIG5ldGxpbmtfbmVzdChubG1zZywgSUZMQV9JTkZP X0RBVEEpOwogIG5ldGxpbmtfbmVzdChubG1zZywgVkVUSF9JTkZPX1BFRVIpOwogIG5sbXNnLT5w b3MgKz0gc2l6ZW9mKHN0cnVjdCBpZmluZm9tc2cpOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZM QV9JRk5BTUUsIHBlZXIsIHN0cmxlbihwZWVyKSk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBu ZXRsaW5rX2RvbmUobmxtc2cpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgaW50IGVyciA9IG5l dGxpbmtfc2VuZChubG1zZywgc29jayk7CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0YXRpYyB2 b2lkIG5ldGxpbmtfYWRkX3hmcm0oc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0 IGNoYXIqIG5hbWUpCnsKICBuZXRsaW5rX2FkZF9kZXZpY2VfaW1wbChubG1zZywgInhmcm0iLCBu YW1lLCB0cnVlKTsKICBuZXRsaW5rX25lc3Qobmxtc2csIElGTEFfSU5GT19EQVRBKTsKICBpbnQg aWZfaWQgPSAxOwogIG5ldGxpbmtfYXR0cihubG1zZywgMiwgJmlmX2lkLCBzaXplb2YoaWZfaWQp KTsKICBuZXRsaW5rX2RvbmUobmxtc2cpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgaW50IGVy ciA9IG5ldGxpbmtfc2VuZChubG1zZywgc29jayk7CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0 YXRpYyB2b2lkIG5ldGxpbmtfYWRkX2hzcihzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywg Y29uc3QgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq IHNsYXZlMSwgY29uc3QgY2hhciogc2xhdmUyKQp7CiAgbmV0bGlua19hZGRfZGV2aWNlX2ltcGwo bmxtc2csICJoc3IiLCBuYW1lLCBmYWxzZSk7CiAgbmV0bGlua19uZXN0KG5sbXNnLCBJRkxBX0lO Rk9fREFUQSk7CiAgaW50IGlmaW5kZXgxID0gaWZfbmFtZXRvaW5kZXgoc2xhdmUxKTsKICBuZXRs aW5rX2F0dHIobmxtc2csIElGTEFfSFNSX1NMQVZFMSwgJmlmaW5kZXgxLCBzaXplb2YoaWZpbmRl eDEpKTsKICBpbnQgaWZpbmRleDIgPSBpZl9uYW1ldG9pbmRleChzbGF2ZTIpOwogIG5ldGxpbmtf YXR0cihubG1zZywgSUZMQV9IU1JfU0xBVkUyLCAmaWZpbmRleDIsIHNpemVvZihpZmluZGV4Mikp OwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBpbnQgZXJy ID0gbmV0bGlua19zZW5kKG5sbXNnLCBzb2NrKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoKc3Rh dGljIHZvaWQgbmV0bGlua19hZGRfbGlua2VkKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2Nr LCBjb25zdCBjaGFyKiB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciogbmFtZSwgY29uc3QgY2hhciogbGluaykKewogIG5ldGxpbmtfYWRkX2RldmljZV9pbXBs KG5sbXNnLCB0eXBlLCBuYW1lLCBmYWxzZSk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBpbnQg aWZpbmRleCA9IGlmX25hbWV0b2luZGV4KGxpbmspOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZM QV9MSU5LLCAmaWZpbmRleCwgc2l6ZW9mKGlmaW5kZXgpKTsKICBpbnQgZXJyID0gbmV0bGlua19z ZW5kKG5sbXNnLCBzb2NrKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoKc3RhdGljIHZvaWQgbmV0 bGlua19hZGRfdmxhbihzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywgY29uc3QgY2hhciog bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsaW5rLCB1aW50 MTZfdCBpZCwgdWludDE2X3QgcHJvdG8pCnsKICBuZXRsaW5rX2FkZF9kZXZpY2VfaW1wbChubG1z ZywgInZsYW4iLCBuYW1lLCBmYWxzZSk7CiAgbmV0bGlua19uZXN0KG5sbXNnLCBJRkxBX0lORk9f REFUQSk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX1ZMQU5fSUQsICZpZCwgc2l6ZW9mKGlk KSk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX1ZMQU5fUFJPVE9DT0wsICZwcm90bywgc2l6 ZW9mKHByb3RvKSk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBuZXRsaW5rX2RvbmUobmxtc2cp OwogIGludCBpZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgobGluayk7CiAgbmV0bGlua19hdHRyKG5s bXNnLCBJRkxBX0xJTkssICZpZmluZGV4LCBzaXplb2YoaWZpbmRleCkpOwogIGludCBlcnIgPSBu ZXRsaW5rX3NlbmQobmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQp9CgpzdGF0aWMg dm9pZCBuZXRsaW5rX2FkZF9tYWN2bGFuKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLCBj b25zdCBjaGFyKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIqIGxpbmspCnsKICBuZXRsaW5rX2FkZF9kZXZpY2VfaW1wbChubG1zZywgIm1hY3ZsYW4iLCBu YW1lLCBmYWxzZSk7CiAgbmV0bGlua19uZXN0KG5sbXNnLCBJRkxBX0lORk9fREFUQSk7CiAgdWlu dDMyX3QgbW9kZSA9IE1BQ1ZMQU5fTU9ERV9CUklER0U7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJ RkxBX01BQ1ZMQU5fTU9ERSwgJm1vZGUsIHNpemVvZihtb2RlKSk7CiAgbmV0bGlua19kb25lKG5s bXNnKTsKICBuZXRsaW5rX2RvbmUobmxtc2cpOwogIGludCBpZmluZGV4ID0gaWZfbmFtZXRvaW5k ZXgobGluayk7CiAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX0xJTkssICZpZmluZGV4LCBzaXpl b2YoaWZpbmRleCkpOwogIGludCBlcnIgPSBuZXRsaW5rX3NlbmQobmxtc2csIHNvY2spOwogIGlm IChlcnIgPCAwKSB7CiAgfQp9CgpzdGF0aWMgdm9pZCBuZXRsaW5rX2FkZF9nZW5ldmUoc3RydWN0 IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0IGNoYXIqIG5hbWUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCB2bmksIHN0cnVjdCBpbl9hZGRyKiBhZGRyNCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpbjZfYWRkciogYWRkcjYpCnsKICBu ZXRsaW5rX2FkZF9kZXZpY2VfaW1wbChubG1zZywgImdlbmV2ZSIsIG5hbWUsIGZhbHNlKTsKICBu ZXRsaW5rX25lc3Qobmxtc2csIElGTEFfSU5GT19EQVRBKTsKICBuZXRsaW5rX2F0dHIobmxtc2cs IElGTEFfR0VORVZFX0lELCAmdm5pLCBzaXplb2Yodm5pKSk7CiAgaWYgKGFkZHI0KQogICAgbmV0 bGlua19hdHRyKG5sbXNnLCBJRkxBX0dFTkVWRV9SRU1PVEUsIGFkZHI0LCBzaXplb2YoKmFkZHI0 KSk7CiAgaWYgKGFkZHI2KQogICAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX0dFTkVWRV9SRU1P VEU2LCBhZGRyNiwgc2l6ZW9mKCphZGRyNikpOwogIG5ldGxpbmtfZG9uZShubG1zZyk7CiAgbmV0 bGlua19kb25lKG5sbXNnKTsKICBpbnQgZXJyID0gbmV0bGlua19zZW5kKG5sbXNnLCBzb2NrKTsK ICBpZiAoZXJyIDwgMCkgewogIH0KfQoKI2RlZmluZSBJRkxBX0lQVkxBTl9GTEFHUyAyCiNkZWZp bmUgSVBWTEFOX01PREVfTDNTIDIKI3VuZGVmIElQVkxBTl9GX1ZFUEEKI2RlZmluZSBJUFZMQU5f Rl9WRVBBIDIKCnN0YXRpYyB2b2lkIG5ldGxpbmtfYWRkX2lwdmxhbihzdHJ1Y3Qgbmxtc2cqIG5s bXNnLCBpbnQgc29jaywgY29uc3QgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIqIGxpbmssIHVpbnQxNl90IG1vZGUsIHVpbnQxNl90IGZsYWdzKQp7 CiAgbmV0bGlua19hZGRfZGV2aWNlX2ltcGwobmxtc2csICJpcHZsYW4iLCBuYW1lLCBmYWxzZSk7 CiAgbmV0bGlua19uZXN0KG5sbXNnLCBJRkxBX0lORk9fREFUQSk7CiAgbmV0bGlua19hdHRyKG5s bXNnLCBJRkxBX0lQVkxBTl9NT0RFLCAmbW9kZSwgc2l6ZW9mKG1vZGUpKTsKICBuZXRsaW5rX2F0 dHIobmxtc2csIElGTEFfSVBWTEFOX0ZMQUdTLCAmZmxhZ3MsIHNpemVvZihmbGFncykpOwogIG5l dGxpbmtfZG9uZShubG1zZyk7CiAgbmV0bGlua19kb25lKG5sbXNnKTsKICBpbnQgaWZpbmRleCA9 IGlmX25hbWV0b2luZGV4KGxpbmspOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZMQV9MSU5LLCAm aWZpbmRleCwgc2l6ZW9mKGlmaW5kZXgpKTsKICBpbnQgZXJyID0gbmV0bGlua19zZW5kKG5sbXNn LCBzb2NrKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoKc3RhdGljIHZvaWQgbmV0bGlua19kZXZp Y2VfY2hhbmdlKHN0cnVjdCBubG1zZyogbmxtc2csIGludCBzb2NrLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSwgYm9vbCB1cCwgY29uc3QgY2hhciog bWFzdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogbWFj LCBpbnQgbWFjc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIqIG5ld19uYW1lKQp7CiAgc3RydWN0IGlmaW5mb21zZyBoZHI7CiAgbWVtc2V0KCZoZHIsIDAs IHNpemVvZihoZHIpKTsKICBpZiAodXApCiAgICBoZHIuaWZpX2ZsYWdzID0gaGRyLmlmaV9jaGFu Z2UgPSBJRkZfVVA7CiAgaGRyLmlmaV9pbmRleCA9IGlmX25hbWV0b2luZGV4KG5hbWUpOwogIG5l dGxpbmtfaW5pdChubG1zZywgUlRNX05FV0xJTkssIDAsICZoZHIsIHNpemVvZihoZHIpKTsKICBp ZiAobmV3X25hbWUpCiAgICBuZXRsaW5rX2F0dHIobmxtc2csIElGTEFfSUZOQU1FLCBuZXdfbmFt ZSwgc3RybGVuKG5ld19uYW1lKSk7CiAgaWYgKG1hc3RlcikgewogICAgaW50IGlmaW5kZXggPSBp Zl9uYW1ldG9pbmRleChtYXN0ZXIpOwogICAgbmV0bGlua19hdHRyKG5sbXNnLCBJRkxBX01BU1RF UiwgJmlmaW5kZXgsIHNpemVvZihpZmluZGV4KSk7CiAgfQogIGlmIChtYWNzaXplKQogICAgbmV0 bGlua19hdHRyKG5sbXNnLCBJRkxBX0FERFJFU1MsIG1hYywgbWFjc2l6ZSk7CiAgaW50IGVyciA9 IG5ldGxpbmtfc2VuZChubG1zZywgc29jayk7CiAgaWYgKGVyciA8IDApIHsKICB9Cn0KCnN0YXRp YyBpbnQgbmV0bGlua19hZGRfYWRkcihzdHJ1Y3Qgbmxtc2cqIG5sbXNnLCBpbnQgc29jaywgY29u c3QgY2hhciogZGV2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCogYWRk ciwgaW50IGFkZHJzaXplKQp7CiAgc3RydWN0IGlmYWRkcm1zZyBoZHI7CiAgbWVtc2V0KCZoZHIs IDAsIHNpemVvZihoZHIpKTsKICBoZHIuaWZhX2ZhbWlseSA9IGFkZHJzaXplID09IDQgPyBBRl9J TkVUIDogQUZfSU5FVDY7CiAgaGRyLmlmYV9wcmVmaXhsZW4gPSBhZGRyc2l6ZSA9PSA0ID8gMjQg OiAxMjA7CiAgaGRyLmlmYV9zY29wZSA9IFJUX1NDT1BFX1VOSVZFUlNFOwogIGhkci5pZmFfaW5k ZXggPSBpZl9uYW1ldG9pbmRleChkZXYpOwogIG5ldGxpbmtfaW5pdChubG1zZywgUlRNX05FV0FE RFIsIE5MTV9GX0NSRUFURSB8IE5MTV9GX1JFUExBQ0UsICZoZHIsCiAgICAgICAgICAgICAgIHNp emVvZihoZHIpKTsKICBuZXRsaW5rX2F0dHIobmxtc2csIElGQV9MT0NBTCwgYWRkciwgYWRkcnNp emUpOwogIG5ldGxpbmtfYXR0cihubG1zZywgSUZBX0FERFJFU1MsIGFkZHIsIGFkZHJzaXplKTsK ICByZXR1cm4gbmV0bGlua19zZW5kKG5sbXNnLCBzb2NrKTsKfQoKc3RhdGljIHZvaWQgbmV0bGlu a19hZGRfYWRkcjQoc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0IGNoYXIqIGRl diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWRkcikKewogIHN0 cnVjdCBpbl9hZGRyIGluX2FkZHI7CiAgaW5ldF9wdG9uKEFGX0lORVQsIGFkZHIsICZpbl9hZGRy KTsKICBpbnQgZXJyID0gbmV0bGlua19hZGRfYWRkcihubG1zZywgc29jaywgZGV2LCAmaW5fYWRk ciwgc2l6ZW9mKGluX2FkZHIpKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoKc3RhdGljIHZvaWQg bmV0bGlua19hZGRfYWRkcjYoc3RydWN0IG5sbXNnKiBubG1zZywgaW50IHNvY2ssIGNvbnN0IGNo YXIqIGRldiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogYWRkcikK ewogIHN0cnVjdCBpbjZfYWRkciBpbjZfYWRkcjsKICBpbmV0X3B0b24oQUZfSU5FVDYsIGFkZHIs ICZpbjZfYWRkcik7CiAgaW50IGVyciA9IG5ldGxpbmtfYWRkX2FkZHIobmxtc2csIHNvY2ssIGRl diwgJmluNl9hZGRyLCBzaXplb2YoaW42X2FkZHIpKTsKICBpZiAoZXJyIDwgMCkgewogIH0KfQoK c3RhdGljIHN0cnVjdCBubG1zZyBubG1zZzsKCiNkZWZpbmUgREVWTElOS19GQU1JTFlfTkFNRSAi ZGV2bGluayIKCiNkZWZpbmUgREVWTElOS19DTURfUE9SVF9HRVQgNQojZGVmaW5lIERFVkxJTktf QVRUUl9CVVNfTkFNRSAxCiNkZWZpbmUgREVWTElOS19BVFRSX0RFVl9OQU1FIDIKI2RlZmluZSBE RVZMSU5LX0FUVFJfTkVUREVWX05BTUUgNwoKc3RhdGljIHN0cnVjdCBubG1zZyBubG1zZzI7Cgpz dGF0aWMgdm9pZCBpbml0aWFsaXplX2RldmxpbmtfcG9ydHMoY29uc3QgY2hhciogYnVzX25hbWUs IGNvbnN0IGNoYXIqIGRldl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciogbmV0ZGV2X3ByZWZpeCkKewogIHN0cnVjdCBnZW5sbXNnaGRyIGdlbmxo ZHI7CiAgaW50IGxlbiwgdG90YWxfbGVuLCBpZCwgZXJyLCBvZmZzZXQ7CiAgdWludDE2X3QgbmV0 ZGV2X2luZGV4OwogIGludCBzb2NrID0gc29ja2V0KEFGX05FVExJTkssIFNPQ0tfUkFXLCBORVRM SU5LX0dFTkVSSUMpOwogIGlmIChzb2NrID09IC0xKQogICAgZXhpdCgxKTsKICBpbnQgcnRzb2Nr ID0gc29ja2V0KEFGX05FVExJTkssIFNPQ0tfUkFXLCBORVRMSU5LX1JPVVRFKTsKICBpZiAocnRz b2NrID09IC0xKQogICAgZXhpdCgxKTsKICBpZCA9IG5ldGxpbmtfcXVlcnlfZmFtaWx5X2lkKCZu bG1zZywgc29jaywgREVWTElOS19GQU1JTFlfTkFNRSwgdHJ1ZSk7CiAgaWYgKGlkID09IC0xKQog ICAgZ290byBlcnJvcjsKICBtZW1zZXQoJmdlbmxoZHIsIDAsIHNpemVvZihnZW5saGRyKSk7CiAg Z2VubGhkci5jbWQgPSBERVZMSU5LX0NNRF9QT1JUX0dFVDsKICBuZXRsaW5rX2luaXQoJm5sbXNn LCBpZCwgTkxNX0ZfRFVNUCwgJmdlbmxoZHIsIHNpemVvZihnZW5saGRyKSk7CiAgbmV0bGlua19h dHRyKCZubG1zZywgREVWTElOS19BVFRSX0JVU19OQU1FLCBidXNfbmFtZSwgc3RybGVuKGJ1c19u YW1lKSArIDEpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIERFVkxJTktfQVRUUl9ERVZfTkFNRSwg ZGV2X25hbWUsIHN0cmxlbihkZXZfbmFtZSkgKyAxKTsKICBlcnIgPSBuZXRsaW5rX3NlbmRfZXh0 KCZubG1zZywgc29jaywgaWQsICZ0b3RhbF9sZW4sIHRydWUpOwogIGlmIChlcnIgPCAwKSB7CiAg ICBnb3RvIGVycm9yOwogIH0KICBvZmZzZXQgPSAwOwogIG5ldGRldl9pbmRleCA9IDA7CiAgd2hp bGUgKChsZW4gPSBuZXRsaW5rX25leHRfbXNnKCZubG1zZywgb2Zmc2V0LCB0b3RhbF9sZW4pKSAh PSAtMSkgewogICAgc3RydWN0IG5sYXR0ciogYXR0ciA9IChzdHJ1Y3QgbmxhdHRyKikobmxtc2cu YnVmICsgb2Zmc2V0ICsgTkxNU0dfSERSTEVOICsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5MTVNHX0FMSUdOKHNpemVvZihnZW5saGRyKSkpOwogICAgZm9yICg7 IChjaGFyKilhdHRyIDwgbmxtc2cuYnVmICsgb2Zmc2V0ICsgbGVuOwogICAgICAgICBhdHRyID0g KHN0cnVjdCBubGF0dHIqKSgoY2hhciopYXR0ciArIE5MTVNHX0FMSUdOKGF0dHItPm5sYV9sZW4p KSkgewogICAgICBpZiAoYXR0ci0+bmxhX3R5cGUgPT0gREVWTElOS19BVFRSX05FVERFVl9OQU1F KSB7CiAgICAgICAgY2hhciogcG9ydF9uYW1lOwogICAgICAgIGNoYXIgbmV0ZGV2X25hbWVbSUZO QU1TSVpdOwogICAgICAgIHBvcnRfbmFtZSA9IChjaGFyKikoYXR0ciArIDEpOwogICAgICAgIHNu cHJpbnRmKG5ldGRldl9uYW1lLCBzaXplb2YobmV0ZGV2X25hbWUpLCAiJXMlZCIsIG5ldGRldl9w cmVmaXgsCiAgICAgICAgICAgICAgICAgbmV0ZGV2X2luZGV4KTsKICAgICAgICBuZXRsaW5rX2Rl dmljZV9jaGFuZ2UoJm5sbXNnMiwgcnRzb2NrLCBwb3J0X25hbWUsIHRydWUsIDAsIDAsIDAsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl9uYW1lKTsKICAgICAgICBicmVhazsK ICAgICAgfQogICAgfQogICAgb2Zmc2V0ICs9IGxlbjsKICAgIG5ldGRldl9pbmRleCsrOwogIH0K ZXJyb3I6CiAgY2xvc2UocnRzb2NrKTsKICBjbG9zZShzb2NrKTsKfQoKI2RlZmluZSBERVZfSVBW NCAiMTcyLjIwLjIwLiVkIgojZGVmaW5lIERFVl9JUFY2ICJmZTgwOjolMDJ4IgojZGVmaW5lIERF Vl9NQUMgMHgwMGFhYWFhYWFhYWEKCnN0YXRpYyB2b2lkIG5ldGRldnNpbV9hZGQodW5zaWduZWQg aW50IGFkZHIsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50KQp7CiAgd3JpdGVfZmlsZSgiL3N5cy9i dXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2UiLCAiJXUiLCBhZGRyKTsKICBpZiAod3JpdGVfZmlsZSgi L3N5cy9idXMvbmV0ZGV2c2ltL25ld19kZXZpY2UiLCAiJXUgJXUiLCBhZGRyLCBwb3J0X2NvdW50 KSkgewogICAgY2hhciBidWZbMzJdOwogICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIm5l dGRldnNpbSVkIiwgYWRkcik7CiAgICBpbml0aWFsaXplX2RldmxpbmtfcG9ydHMoIm5ldGRldnNp bSIsIGJ1ZiwgIm5ldGRldnNpbSIpOwogIH0KfQoKI2RlZmluZSBXR19HRU5MX05BTUUgIndpcmVn dWFyZCIKZW51bSB3Z19jbWQgewogIFdHX0NNRF9HRVRfREVWSUNFLAogIFdHX0NNRF9TRVRfREVW SUNFLAp9OwplbnVtIHdnZGV2aWNlX2F0dHJpYnV0ZSB7CiAgV0dERVZJQ0VfQV9VTlNQRUMsCiAg V0dERVZJQ0VfQV9JRklOREVYLAogIFdHREVWSUNFX0FfSUZOQU1FLAogIFdHREVWSUNFX0FfUFJJ VkFURV9LRVksCiAgV0dERVZJQ0VfQV9QVUJMSUNfS0VZLAogIFdHREVWSUNFX0FfRkxBR1MsCiAg V0dERVZJQ0VfQV9MSVNURU5fUE9SVCwKICBXR0RFVklDRV9BX0ZXTUFSSywKICBXR0RFVklDRV9B X1BFRVJTLAp9OwplbnVtIHdncGVlcl9hdHRyaWJ1dGUgewogIFdHUEVFUl9BX1VOU1BFQywKICBX R1BFRVJfQV9QVUJMSUNfS0VZLAogIFdHUEVFUl9BX1BSRVNIQVJFRF9LRVksCiAgV0dQRUVSX0Ff RkxBR1MsCiAgV0dQRUVSX0FfRU5EUE9JTlQsCiAgV0dQRUVSX0FfUEVSU0lTVEVOVF9LRUVQQUxJ VkVfSU5URVJWQUwsCiAgV0dQRUVSX0FfTEFTVF9IQU5EU0hBS0VfVElNRSwKICBXR1BFRVJfQV9S WF9CWVRFUywKICBXR1BFRVJfQV9UWF9CWVRFUywKICBXR1BFRVJfQV9BTExPV0VESVBTLAogIFdH UEVFUl9BX1BST1RPQ09MX1ZFUlNJT04sCn07CmVudW0gd2dhbGxvd2VkaXBfYXR0cmlidXRlIHsK ICBXR0FMTE9XRURJUF9BX1VOU1BFQywKICBXR0FMTE9XRURJUF9BX0ZBTUlMWSwKICBXR0FMTE9X RURJUF9BX0lQQUREUiwKICBXR0FMTE9XRURJUF9BX0NJRFJfTUFTSywKfTsKCnN0YXRpYyB2b2lk IG5ldGxpbmtfd2lyZWd1YXJkX3NldHVwKHZvaWQpCnsKICBjb25zdCBjaGFyIGlmbmFtZV9hW10g PSAid2cwIjsKICBjb25zdCBjaGFyIGlmbmFtZV9iW10gPSAid2cxIjsKICBjb25zdCBjaGFyIGlm bmFtZV9jW10gPSAid2cyIjsKICBjb25zdCBjaGFyIHByaXZhdGVfYVtdID0KICAgICAgIlx4YTBc eDVjXHhhOFx4NGZceDZjXHg5Y1x4OGVceDM4XHg1M1x4ZTJceGZkXHg3YVx4NzBceGFlXHgwZlx4 YjJceDBmXHhhMSIKICAgICAgIlx4NTJceDYwXHgwY1x4YjBceDA4XHg0NVx4MTdceDRmXHgwOFx4 MDdceDZmXHg4ZFx4NzhceDQzIjsKICBjb25zdCBjaGFyIHByaXZhdGVfYltdID0KICAgICAgIlx4 YjBceDgwXHg3M1x4ZThceGQ0XHg0ZVx4OTFceGUzXHhkYVx4OTJceDJjXHgyMlx4NDNceDgyXHg0 NFx4YmJceDg4XHg1YyIKICAgICAgIlx4NjlceGUyXHg2OVx4YzhceGU5XHhkOFx4MzVceGIxXHgx NFx4MjlceDNhXHg0ZFx4ZGNceDZlIjsKICBjb25zdCBjaGFyIHByaXZhdGVfY1tdID0KICAgICAg Ilx4YTBceGNiXHg4N1x4OWFceDQ3XHhmNVx4YmNceDY0XHg0Y1x4MGVceDY5XHgzZlx4YTZceGQw XHgzMVx4YzdceDRhXHgxNSIKICAgICAgIlx4NTNceGI2XHhlOVx4MDFceGI5XHhmZlx4MmZceDUx XHg4Y1x4NzhceDA0XHgyZlx4YjVceDQyIjsKICBjb25zdCBjaGFyIHB1YmxpY19hW10gPQogICAg ICAiXHg5N1x4NWNceDlkXHg4MVx4YzlceDgzXHhjOFx4MjBceDllXHhlN1x4ODFceDI1XHg0Ylx4 ODlceDlmXHg4ZVx4ZDlceDI1IgogICAgICAiXHhhZVx4OWZceDA5XHgyM1x4YzJceDNjXHg2Mlx4 ZjVceDNjXHg1N1x4Y2RceGJmXHg2OVx4MWMiOwogIGNvbnN0IGNoYXIgcHVibGljX2JbXSA9CiAg ICAgICJceGQxXHg3M1x4MjhceDk5XHhmNlx4MTFceGNkXHg4OVx4OTRceDAzXHg0ZFx4N2ZceDQx XHgzZFx4YzlceDU3XHg2M1x4MGUiCiAgICAgICJceDU0XHg5M1x4YzJceDg1XHhhY1x4YTRceDAw XHg2NVx4Y2JceDYzXHgxMVx4YmVceDY5XHg2YiI7CiAgY29uc3QgY2hhciBwdWJsaWNfY1tdID0K ICAgICAgIlx4ZjRceDRkXHhhM1x4NjdceGE4XHg4ZVx4ZTZceDU2XHg0Zlx4MDJceDAyXHgxMVx4 NDVceDY3XHgyN1x4MDhceDJmXHg1YyIKICAgICAgIlx4ZWJceGVlXHg4Ylx4MWJceGY1XHhlYlx4 NzNceDM3XHgzNFx4MWJceDQ1XHg5Ylx4MzlceDIyIjsKICBjb25zdCB1aW50MTZfdCBsaXN0ZW5f YSA9IDIwMDAxOwogIGNvbnN0IHVpbnQxNl90IGxpc3Rlbl9iID0gMjAwMDI7CiAgY29uc3QgdWlu dDE2X3QgbGlzdGVuX2MgPSAyMDAwMzsKICBjb25zdCB1aW50MTZfdCBhZl9pbmV0ID0gQUZfSU5F VDsKICBjb25zdCB1aW50MTZfdCBhZl9pbmV0NiA9IEFGX0lORVQ2OwogIGNvbnN0IHN0cnVjdCBz b2NrYWRkcl9pbiBlbmRwb2ludF9iX3Y0ID0gewogICAgICAuc2luX2ZhbWlseSA9IEFGX0lORVQs CiAgICAgIC5zaW5fcG9ydCA9IGh0b25zKGxpc3Rlbl9iKSwKICAgICAgLnNpbl9hZGRyID0ge2h0 b25sKElOQUREUl9MT09QQkFDSyl9fTsKICBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gZW5kcG9p bnRfY192NCA9IHsKICAgICAgLnNpbl9mYW1pbHkgPSBBRl9JTkVULAogICAgICAuc2luX3BvcnQg PSBodG9ucyhsaXN0ZW5fYyksCiAgICAgIC5zaW5fYWRkciA9IHtodG9ubChJTkFERFJfTE9PUEJB Q0spfX07CiAgc3RydWN0IHNvY2thZGRyX2luNiBlbmRwb2ludF9hX3Y2ID0gey5zaW42X2ZhbWls eSA9IEFGX0lORVQ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2lu Nl9wb3J0ID0gaHRvbnMobGlzdGVuX2EpfTsKICBlbmRwb2ludF9hX3Y2LnNpbjZfYWRkciA9IGlu NmFkZHJfbG9vcGJhY2s7CiAgc3RydWN0IHNvY2thZGRyX2luNiBlbmRwb2ludF9jX3Y2ID0gey5z aW42X2ZhbWlseSA9IEFGX0lORVQ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAuc2luNl9wb3J0ID0gaHRvbnMobGlzdGVuX2MpfTsKICBlbmRwb2ludF9jX3Y2LnNpbjZf YWRkciA9IGluNmFkZHJfbG9vcGJhY2s7CiAgY29uc3Qgc3RydWN0IGluX2FkZHIgZmlyc3RfaGFs Zl92NCA9IHswfTsKICBjb25zdCBzdHJ1Y3QgaW5fYWRkciBzZWNvbmRfaGFsZl92NCA9IHsodWlu dDMyX3QpaHRvbmwoMTI4IDw8IDI0KX07CiAgY29uc3Qgc3RydWN0IGluNl9hZGRyIGZpcnN0X2hh bGZfdjYgPSB7e3swfX19OwogIGNvbnN0IHN0cnVjdCBpbjZfYWRkciBzZWNvbmRfaGFsZl92NiA9 IHt7ezB4ODB9fX07CiAgY29uc3QgdWludDhfdCBoYWxmX2NpZHIgPSAxOwogIGNvbnN0IHVpbnQx Nl90IHBlcnNpc3RlbnRfa2VlcGFsaXZlc1tdID0gezEsIDMsIDcsIDksIDE0LCAxOX07CiAgc3Ry dWN0IGdlbmxtc2doZHIgZ2VubGhkciA9IHsuY21kID0gV0dfQ01EX1NFVF9ERVZJQ0UsIC52ZXJz aW9uID0gMX07CiAgaW50IHNvY2s7CiAgaW50IGlkLCBlcnI7CiAgc29jayA9IHNvY2tldChBRl9O RVRMSU5LLCBTT0NLX1JBVywgTkVUTElOS19HRU5FUklDKTsKICBpZiAoc29jayA9PSAtMSkgewog ICAgcmV0dXJuOwogIH0KICBpZCA9IG5ldGxpbmtfcXVlcnlfZmFtaWx5X2lkKCZubG1zZywgc29j aywgV0dfR0VOTF9OQU1FLCB0cnVlKTsKICBpZiAoaWQgPT0gLTEpCiAgICBnb3RvIGVycm9yOwog IG5ldGxpbmtfaW5pdCgmbmxtc2csIGlkLCAwLCAmZ2VubGhkciwgc2l6ZW9mKGdlbmxoZHIpKTsK ICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX0lGTkFNRSwgaWZuYW1lX2EsIHN0cmxl bihpZm5hbWVfYSkgKyAxKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX1BSSVZB VEVfS0VZLCBwcml2YXRlX2EsIDMyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9B X0xJU1RFTl9QT1JULCAmbGlzdGVuX2EsIDIpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9G X05FU1RFRCB8IFdHREVWSUNFX0FfUEVFUlMpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9G X05FU1RFRCB8IDApOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BVQkxJQ19LRVks IHB1YmxpY19iLCAzMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0FfRU5EUE9JTlQs ICZlbmRwb2ludF9iX3Y0LAogICAgICAgICAgICAgICBzaXplb2YoZW5kcG9pbnRfYl92NCkpOwog IG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BFUlNJU1RFTlRfS0VFUEFMSVZFX0lOVEVS VkFMLAogICAgICAgICAgICAgICAmcGVyc2lzdGVudF9rZWVwYWxpdmVzWzBdLCAyKTsKICBuZXRs aW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCBXR1BFRVJfQV9BTExPV0VESVBTKTsKICBu ZXRsaW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5s bXNnLCBXR0FMTE9XRURJUF9BX0ZBTUlMWSwgJmFmX2luZXQsIDIpOwogIG5ldGxpbmtfYXR0cigm bmxtc2csIFdHQUxMT1dFRElQX0FfSVBBRERSLCAmZmlyc3RfaGFsZl92NCwKICAgICAgICAgICAg ICAgc2l6ZW9mKGZpcnN0X2hhbGZfdjQpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9X RURJUF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7 CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0bGlua19hdHRy KCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0NiwgMik7CiAgbmV0bGlua19h dHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFERFIsICZmaXJzdF9oYWxmX3Y2LAogICAgICAg ICAgICAgICBzaXplb2YoZmlyc3RfaGFsZl92NikpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdH QUxMT1dFRElQX0FfQ0lEUl9NQVNLLCAmaGFsZl9jaWRyLCAxKTsKICBuZXRsaW5rX2RvbmUoJm5s bXNnKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBu ZXRsaW5rX25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5s bXNnLCBXR1BFRVJfQV9QVUJMSUNfS0VZLCBwdWJsaWNfYywgMzIpOwogIG5ldGxpbmtfYXR0cigm bmxtc2csIFdHUEVFUl9BX0VORFBPSU5ULCAmZW5kcG9pbnRfY192NiwKICAgICAgICAgICAgICAg c2l6ZW9mKGVuZHBvaW50X2NfdjYpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR1BFRVJfQV9Q RVJTSVNURU5UX0tFRVBBTElWRV9JTlRFUlZBTCwKICAgICAgICAgICAgICAgJnBlcnNpc3RlbnRf a2VlcGFsaXZlc1sxXSwgMik7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwg V0dQRUVSX0FfQUxMT1dFRElQUyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVE IHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9p bmV0LCAyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0lQQUREUiwgJnNl Y29uZF9oYWxmX3Y0LAogICAgICAgICAgICAgICBzaXplb2Yoc2Vjb25kX2hhbGZfdjQpKTsKICBu ZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwg MSk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0Zf TkVTVEVEIHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFks ICZhZl9pbmV0NiwgMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFE RFIsICZzZWNvbmRfaGFsZl92NiwKICAgICAgICAgICAgICAgc2l6ZW9mKHNlY29uZF9oYWxmX3Y2 KSk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9DSURSX01BU0ssICZoYWxm X2NpZHIsIDEpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cp OwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIGVyciA9 IG5ldGxpbmtfc2VuZCgmbmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQogIG5ldGxp bmtfaW5pdCgmbmxtc2csIGlkLCAwLCAmZ2VubGhkciwgc2l6ZW9mKGdlbmxoZHIpKTsKICBuZXRs aW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX0lGTkFNRSwgaWZuYW1lX2IsIHN0cmxlbihpZm5h bWVfYikgKyAxKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX1BSSVZBVEVfS0VZ LCBwcml2YXRlX2IsIDMyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX0xJU1RF Tl9QT1JULCAmbGlzdGVuX2IsIDIpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RF RCB8IFdHREVWSUNFX0FfUEVFUlMpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RF RCB8IDApOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BVQkxJQ19LRVksIHB1Ymxp Y19hLCAzMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0FfRU5EUE9JTlQsICZlbmRw b2ludF9hX3Y2LAogICAgICAgICAgICAgICBzaXplb2YoZW5kcG9pbnRfYV92NikpOwogIG5ldGxp bmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BFUlNJU1RFTlRfS0VFUEFMSVZFX0lOVEVSVkFMLAog ICAgICAgICAgICAgICAmcGVyc2lzdGVudF9rZWVwYWxpdmVzWzJdLCAyKTsKICBuZXRsaW5rX25l c3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCBXR1BFRVJfQV9BTExPV0VESVBTKTsKICBuZXRsaW5r X25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBX R0FMTE9XRURJUF9BX0ZBTUlMWSwgJmFmX2luZXQsIDIpOwogIG5ldGxpbmtfYXR0cigmbmxtc2cs IFdHQUxMT1dFRElQX0FfSVBBRERSLCAmZmlyc3RfaGFsZl92NCwKICAgICAgICAgICAgICAgc2l6 ZW9mKGZpcnN0X2hhbGZfdjQpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9B X0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0 bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1z ZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0NiwgMik7CiAgbmV0bGlua19hdHRyKCZu bG1zZywgV0dBTExPV0VESVBfQV9JUEFERFIsICZmaXJzdF9oYWxmX3Y2LAogICAgICAgICAgICAg ICBzaXplb2YoZmlyc3RfaGFsZl92NikpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dF RElQX0FfQ0lEUl9NQVNLLCAmaGFsZl9jaWRyLCAxKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsK ICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5r X25lc3QoJm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBX R1BFRVJfQV9QVUJMSUNfS0VZLCBwdWJsaWNfYywgMzIpOwogIG5ldGxpbmtfYXR0cigmbmxtc2cs IFdHUEVFUl9BX0VORFBPSU5ULCAmZW5kcG9pbnRfY192NCwKICAgICAgICAgICAgICAgc2l6ZW9m KGVuZHBvaW50X2NfdjQpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR1BFRVJfQV9QRVJTSVNU RU5UX0tFRVBBTElWRV9JTlRFUlZBTCwKICAgICAgICAgICAgICAgJnBlcnNpc3RlbnRfa2VlcGFs aXZlc1szXSwgMik7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgV0dQRUVS X0FfQUxMT1dFRElQUyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7 CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0LCAy KTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0lQQUREUiwgJnNlY29uZF9o YWxmX3Y0LAogICAgICAgICAgICAgICBzaXplb2Yoc2Vjb25kX2hhbGZfdjQpKTsKICBuZXRsaW5r X2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAg bmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVE IHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9p bmV0NiwgMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFERFIsICZz ZWNvbmRfaGFsZl92NiwKICAgICAgICAgICAgICAgc2l6ZW9mKHNlY29uZF9oYWxmX3Y2KSk7CiAg bmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9DSURSX01BU0ssICZoYWxmX2NpZHIs IDEpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5l dGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIGVyciA9IG5ldGxp bmtfc2VuZCgmbmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQogIG5ldGxpbmtfaW5p dCgmbmxtc2csIGlkLCAwLCAmZ2VubGhkciwgc2l6ZW9mKGdlbmxoZHIpKTsKICBuZXRsaW5rX2F0 dHIoJm5sbXNnLCBXR0RFVklDRV9BX0lGTkFNRSwgaWZuYW1lX2MsIHN0cmxlbihpZm5hbWVfYykg KyAxKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX1BSSVZBVEVfS0VZLCBwcml2 YXRlX2MsIDMyKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0RFVklDRV9BX0xJU1RFTl9QT1JU LCAmbGlzdGVuX2MsIDIpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RFRCB8IFdH REVWSUNFX0FfUEVFUlMpOwogIG5ldGxpbmtfbmVzdCgmbmxtc2csIE5MQV9GX05FU1RFRCB8IDAp OwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVFUl9BX1BVQkxJQ19LRVksIHB1YmxpY19hLCAz Mik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dQRUVSX0FfRU5EUE9JTlQsICZlbmRwb2ludF9h X3Y2LAogICAgICAgICAgICAgICBzaXplb2YoZW5kcG9pbnRfYV92NikpOwogIG5ldGxpbmtfYXR0 cigmbmxtc2csIFdHUEVFUl9BX1BFUlNJU1RFTlRfS0VFUEFMSVZFX0lOVEVSVkFMLAogICAgICAg ICAgICAgICAmcGVyc2lzdGVudF9rZWVwYWxpdmVzWzRdLCAyKTsKICBuZXRsaW5rX25lc3QoJm5s bXNnLCBOTEFfRl9ORVNURUQgfCBXR1BFRVJfQV9BTExPV0VESVBTKTsKICBuZXRsaW5rX25lc3Qo Jm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9X RURJUF9BX0ZBTUlMWSwgJmFmX2luZXQsIDIpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxM T1dFRElQX0FfSVBBRERSLCAmZmlyc3RfaGFsZl92NCwKICAgICAgICAgICAgICAgc2l6ZW9mKGZp cnN0X2hhbGZfdjQpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0NJRFJf TUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlua19kb25lKCZubG1zZyk7CiAgbmV0bGlua19u ZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dB TExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0NiwgMik7CiAgbmV0bGlua19hdHRyKCZubG1zZywg V0dBTExPV0VESVBfQV9JUEFERFIsICZmaXJzdF9oYWxmX3Y2LAogICAgICAgICAgICAgICBzaXpl b2YoZmlyc3RfaGFsZl92NikpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHQUxMT1dFRElQX0Ff Q0lEUl9NQVNLLCAmaGFsZl9jaWRyLCAxKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRs aW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX2RvbmUoJm5sbXNnKTsKICBuZXRsaW5rX25lc3Qo Jm5sbXNnLCBOTEFfRl9ORVNURUQgfCAwKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR1BFRVJf QV9QVUJMSUNfS0VZLCBwdWJsaWNfYiwgMzIpOwogIG5ldGxpbmtfYXR0cigmbmxtc2csIFdHUEVF Ul9BX0VORFBPSU5ULCAmZW5kcG9pbnRfYl92NCwKICAgICAgICAgICAgICAgc2l6ZW9mKGVuZHBv aW50X2JfdjQpKTsKICBuZXRsaW5rX2F0dHIoJm5sbXNnLCBXR1BFRVJfQV9QRVJTSVNURU5UX0tF RVBBTElWRV9JTlRFUlZBTCwKICAgICAgICAgICAgICAgJnBlcnNpc3RlbnRfa2VlcGFsaXZlc1s1 XSwgMik7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgV0dQRUVSX0FfQUxM T1dFRElQUyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7CiAgbmV0 bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0LCAyKTsKICBu ZXRsaW5rX2F0dHIoJm5sbXNnLCBXR0FMTE9XRURJUF9BX0lQQUREUiwgJnNlY29uZF9oYWxmX3Y0 LAogICAgICAgICAgICAgICBzaXplb2Yoc2Vjb25kX2hhbGZfdjQpKTsKICBuZXRsaW5rX2F0dHIo Jm5sbXNnLCBXR0FMTE9XRURJUF9BX0NJRFJfTUFTSywgJmhhbGZfY2lkciwgMSk7CiAgbmV0bGlu a19kb25lKCZubG1zZyk7CiAgbmV0bGlua19uZXN0KCZubG1zZywgTkxBX0ZfTkVTVEVEIHwgMCk7 CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9GQU1JTFksICZhZl9pbmV0Niwg Mik7CiAgbmV0bGlua19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9JUEFERFIsICZzZWNvbmRf aGFsZl92NiwKICAgICAgICAgICAgICAgc2l6ZW9mKHNlY29uZF9oYWxmX3Y2KSk7CiAgbmV0bGlu a19hdHRyKCZubG1zZywgV0dBTExPV0VESVBfQV9DSURSX01BU0ssICZoYWxmX2NpZHIsIDEpOwog IG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtf ZG9uZSgmbmxtc2cpOwogIG5ldGxpbmtfZG9uZSgmbmxtc2cpOwogIGVyciA9IG5ldGxpbmtfc2Vu ZCgmbmxtc2csIHNvY2spOwogIGlmIChlcnIgPCAwKSB7CiAgfQoKZXJyb3I6CiAgY2xvc2Uoc29j ayk7Cn0KCnN0YXRpYyB2b2lkIGluaXRpYWxpemVfbmV0ZGV2aWNlcyh2b2lkKQp7CiAgY2hhciBu ZXRkZXZzaW1bMTZdOwogIHNwcmludGYobmV0ZGV2c2ltLCAibmV0ZGV2c2ltJWQiLCAoaW50KXBy b2NpZCk7CiAgc3RydWN0IHsKICAgIGNvbnN0IGNoYXIqIHR5cGU7CiAgICBjb25zdCBjaGFyKiBk ZXY7CiAgfSBkZXZ0eXBlc1tdID0gewogICAgICB7ImlwNmdyZXRhcCIsICJpcDZncmV0YXAwIn0s IHsiYnJpZGdlIiwgImJyaWRnZTAifSwgeyJ2Y2FuIiwgInZjYW4wIn0sCiAgICAgIHsiYm9uZCIs ICJib25kMCJ9LCAgICAgICAgICAgeyJ0ZWFtIiwgInRlYW0wIn0sICAgICB7ImR1bW15IiwgImR1 bW15MCJ9LAogICAgICB7Im5sbW9uIiwgIm5sbW9uMCJ9LCAgICAgICAgIHsiY2FpZiIsICJjYWlm MCJ9LCAgICAgeyJiYXRhZHYiLCAiYmF0YWR2MCJ9LAogICAgICB7InZ4Y2FuIiwgInZ4Y2FuMSJ9 LCAgICAgICAgIHsidmV0aCIsIDB9LCAgICAgICAgICAgeyJ3aXJlZ3VhcmQiLCAid2cwIn0sCiAg ICAgIHsid2lyZWd1YXJkIiwgIndnMSJ9LCAgICAgICAgeyJ3aXJlZ3VhcmQiLCAid2cyIn0sCiAg fTsKICBjb25zdCBjaGFyKiBkZXZtYXN0ZXJzW10gPSB7ImJyaWRnZSIsICJib25kIiwgInRlYW0i LCAiYmF0YWR2In07CiAgc3RydWN0IHsKICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICBpbnQgbWFj c2l6ZTsKICAgIGJvb2wgbm9pcHY2OwogIH0gZGV2aWNlc1tdID0gewogICAgICB7ImxvIiwgRVRI X0FMRU59LAogICAgICB7InNpdDAiLCAwfSwKICAgICAgeyJicmlkZ2UwIiwgRVRIX0FMRU59LAog ICAgICB7InZjYW4wIiwgMCwgdHJ1ZX0sCiAgICAgIHsidHVubDAiLCAwfSwKICAgICAgeyJncmUw IiwgMH0sCiAgICAgIHsiZ3JldGFwMCIsIEVUSF9BTEVOfSwKICAgICAgeyJpcF92dGkwIiwgMH0s CiAgICAgIHsiaXA2X3Z0aTAiLCAwfSwKICAgICAgeyJpcDZ0bmwwIiwgMH0sCiAgICAgIHsiaXA2 Z3JlMCIsIDB9LAogICAgICB7ImlwNmdyZXRhcDAiLCBFVEhfQUxFTn0sCiAgICAgIHsiZXJzcGFu MCIsIEVUSF9BTEVOfSwKICAgICAgeyJib25kMCIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMCIs IEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMSIsIEVUSF9BTEVOfSwKICAgICAgeyJ0ZWFtMCIsIEVU SF9BTEVOfSwKICAgICAgeyJ2ZXRoMF90b19icmlkZ2UiLCBFVEhfQUxFTn0sCiAgICAgIHsidmV0 aDFfdG9fYnJpZGdlIiwgRVRIX0FMRU59LAogICAgICB7InZldGgwX3RvX2JvbmQiLCBFVEhfQUxF Tn0sCiAgICAgIHsidmV0aDFfdG9fYm9uZCIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMF90b190 ZWFtIiwgRVRIX0FMRU59LAogICAgICB7InZldGgxX3RvX3RlYW0iLCBFVEhfQUxFTn0sCiAgICAg IHsidmV0aDBfdG9faHNyIiwgRVRIX0FMRU59LAogICAgICB7InZldGgxX3RvX2hzciIsIEVUSF9B TEVOfSwKICAgICAgeyJoc3IwIiwgMH0sCiAgICAgIHsiZHVtbXkwIiwgRVRIX0FMRU59LAogICAg ICB7Im5sbW9uMCIsIDB9LAogICAgICB7InZ4Y2FuMCIsIDAsIHRydWV9LAogICAgICB7InZ4Y2Fu MSIsIDAsIHRydWV9LAogICAgICB7ImNhaWYwIiwgRVRIX0FMRU59LAogICAgICB7ImJhdGFkdjAi LCBFVEhfQUxFTn0sCiAgICAgIHtuZXRkZXZzaW0sIEVUSF9BTEVOfSwKICAgICAgeyJ4ZnJtMCIs IEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMF92aXJ0X3dpZmkiLCBFVEhfQUxFTn0sCiAgICAgIHsi dmV0aDFfdmlydF93aWZpIiwgRVRIX0FMRU59LAogICAgICB7InZpcnRfd2lmaTAiLCBFVEhfQUxF Tn0sCiAgICAgIHsidmV0aDBfdmxhbiIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMV92bGFuIiwg RVRIX0FMRU59LAogICAgICB7InZsYW4wIiwgRVRIX0FMRU59LAogICAgICB7InZsYW4xIiwgRVRI X0FMRU59LAogICAgICB7Im1hY3ZsYW4wIiwgRVRIX0FMRU59LAogICAgICB7Im1hY3ZsYW4xIiwg RVRIX0FMRU59LAogICAgICB7ImlwdmxhbjAiLCBFVEhfQUxFTn0sCiAgICAgIHsiaXB2bGFuMSIs IEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMF9tYWN2dGFwIiwgRVRIX0FMRU59LAogICAgICB7InZl dGgxX21hY3Z0YXAiLCBFVEhfQUxFTn0sCiAgICAgIHsibWFjdnRhcDAiLCBFVEhfQUxFTn0sCiAg ICAgIHsibWFjc2VjMCIsIEVUSF9BTEVOfSwKICAgICAgeyJ2ZXRoMF90b19iYXRhZHYiLCBFVEhf QUxFTn0sCiAgICAgIHsidmV0aDFfdG9fYmF0YWR2IiwgRVRIX0FMRU59LAogICAgICB7ImJhdGFk dl9zbGF2ZV8wIiwgRVRIX0FMRU59LAogICAgICB7ImJhdGFkdl9zbGF2ZV8xIiwgRVRIX0FMRU59 LAogICAgICB7ImdlbmV2ZTAiLCBFVEhfQUxFTn0sCiAgICAgIHsiZ2VuZXZlMSIsIEVUSF9BTEVO fSwKICAgICAgeyJ3ZzAiLCAwfSwKICAgICAgeyJ3ZzEiLCAwfSwKICAgICAgeyJ3ZzIiLCAwfSwK ICB9OwogIGludCBzb2NrID0gc29ja2V0KEFGX05FVExJTkssIFNPQ0tfUkFXLCBORVRMSU5LX1JP VVRFKTsKICBpZiAoc29jayA9PSAtMSkKICAgIGV4aXQoMSk7CiAgdW5zaWduZWQgaTsKICBmb3Ig KGkgPSAwOyBpIDwgc2l6ZW9mKGRldnR5cGVzKSAvIHNpemVvZihkZXZ0eXBlc1swXSk7IGkrKykK ICAgIG5ldGxpbmtfYWRkX2RldmljZSgmbmxtc2csIHNvY2ssIGRldnR5cGVzW2ldLnR5cGUsIGRl dnR5cGVzW2ldLmRldik7CiAgZm9yIChpID0gMDsgaSA8IHNpemVvZihkZXZtYXN0ZXJzKSAvIChz aXplb2YoZGV2bWFzdGVyc1swXSkpOyBpKyspIHsKICAgIGNoYXIgbWFzdGVyWzMyXSwgc2xhdmUw WzMyXSwgdmV0aDBbMzJdLCBzbGF2ZTFbMzJdLCB2ZXRoMVszMl07CiAgICBzcHJpbnRmKHNsYXZl MCwgIiVzX3NsYXZlXzAiLCBkZXZtYXN0ZXJzW2ldKTsKICAgIHNwcmludGYodmV0aDAsICJ2ZXRo MF90b18lcyIsIGRldm1hc3RlcnNbaV0pOwogICAgbmV0bGlua19hZGRfdmV0aCgmbmxtc2csIHNv Y2ssIHNsYXZlMCwgdmV0aDApOwogICAgc3ByaW50ZihzbGF2ZTEsICIlc19zbGF2ZV8xIiwgZGV2 bWFzdGVyc1tpXSk7CiAgICBzcHJpbnRmKHZldGgxLCAidmV0aDFfdG9fJXMiLCBkZXZtYXN0ZXJz W2ldKTsKICAgIG5ldGxpbmtfYWRkX3ZldGgoJm5sbXNnLCBzb2NrLCBzbGF2ZTEsIHZldGgxKTsK ICAgIHNwcmludGYobWFzdGVyLCAiJXMwIiwgZGV2bWFzdGVyc1tpXSk7CiAgICBuZXRsaW5rX2Rl dmljZV9jaGFuZ2UoJm5sbXNnLCBzb2NrLCBzbGF2ZTAsIGZhbHNlLCBtYXN0ZXIsIDAsIDAsIE5V TEwpOwogICAgbmV0bGlua19kZXZpY2VfY2hhbmdlKCZubG1zZywgc29jaywgc2xhdmUxLCBmYWxz ZSwgbWFzdGVyLCAwLCAwLCBOVUxMKTsKICB9CiAgbmV0bGlua19hZGRfeGZybSgmbmxtc2csIHNv Y2ssICJ4ZnJtMCIpOwogIG5ldGxpbmtfZGV2aWNlX2NoYW5nZSgmbmxtc2csIHNvY2ssICJicmlk Z2Vfc2xhdmVfMCIsIHRydWUsIDAsIDAsIDAsIE5VTEwpOwogIG5ldGxpbmtfZGV2aWNlX2NoYW5n ZSgmbmxtc2csIHNvY2ssICJicmlkZ2Vfc2xhdmVfMSIsIHRydWUsIDAsIDAsIDAsIE5VTEwpOwog IG5ldGxpbmtfYWRkX3ZldGgoJm5sbXNnLCBzb2NrLCAiaHNyX3NsYXZlXzAiLCAidmV0aDBfdG9f aHNyIik7CiAgbmV0bGlua19hZGRfdmV0aCgmbmxtc2csIHNvY2ssICJoc3Jfc2xhdmVfMSIsICJ2 ZXRoMV90b19oc3IiKTsKICBuZXRsaW5rX2FkZF9oc3IoJm5sbXNnLCBzb2NrLCAiaHNyMCIsICJo c3Jfc2xhdmVfMCIsICJoc3Jfc2xhdmVfMSIpOwogIG5ldGxpbmtfZGV2aWNlX2NoYW5nZSgmbmxt c2csIHNvY2ssICJoc3Jfc2xhdmVfMCIsIHRydWUsIDAsIDAsIDAsIE5VTEwpOwogIG5ldGxpbmtf ZGV2aWNlX2NoYW5nZSgmbmxtc2csIHNvY2ssICJoc3Jfc2xhdmVfMSIsIHRydWUsIDAsIDAsIDAs IE5VTEwpOwogIG5ldGxpbmtfYWRkX3ZldGgoJm5sbXNnLCBzb2NrLCAidmV0aDBfdmlydF93aWZp IiwgInZldGgxX3ZpcnRfd2lmaSIpOwogIG5ldGxpbmtfYWRkX2xpbmtlZCgmbmxtc2csIHNvY2ss ICJ2aXJ0X3dpZmkiLCAidmlydF93aWZpMCIsCiAgICAgICAgICAgICAgICAgICAgICJ2ZXRoMV92 aXJ0X3dpZmkiKTsKICBuZXRsaW5rX2FkZF92ZXRoKCZubG1zZywgc29jaywgInZldGgwX3ZsYW4i LCAidmV0aDFfdmxhbiIpOwogIG5ldGxpbmtfYWRkX3ZsYW4oJm5sbXNnLCBzb2NrLCAidmxhbjAi LCAidmV0aDBfdmxhbiIsIDAsIGh0b25zKEVUSF9QXzgwMjFRKSk7CiAgbmV0bGlua19hZGRfdmxh bigmbmxtc2csIHNvY2ssICJ2bGFuMSIsICJ2ZXRoMF92bGFuIiwgMSwgaHRvbnMoRVRIX1BfODAy MUFEKSk7CiAgbmV0bGlua19hZGRfbWFjdmxhbigmbmxtc2csIHNvY2ssICJtYWN2bGFuMCIsICJ2 ZXRoMV92bGFuIik7CiAgbmV0bGlua19hZGRfbWFjdmxhbigmbmxtc2csIHNvY2ssICJtYWN2bGFu MSIsICJ2ZXRoMV92bGFuIik7CiAgbmV0bGlua19hZGRfaXB2bGFuKCZubG1zZywgc29jaywgImlw dmxhbjAiLCAidmV0aDBfdmxhbiIsIElQVkxBTl9NT0RFX0wyLCAwKTsKICBuZXRsaW5rX2FkZF9p cHZsYW4oJm5sbXNnLCBzb2NrLCAiaXB2bGFuMSIsICJ2ZXRoMF92bGFuIiwgSVBWTEFOX01PREVf TDNTLAogICAgICAgICAgICAgICAgICAgICBJUFZMQU5fRl9WRVBBKTsKICBuZXRsaW5rX2FkZF92 ZXRoKCZubG1zZywgc29jaywgInZldGgwX21hY3Z0YXAiLCAidmV0aDFfbWFjdnRhcCIpOwogIG5l dGxpbmtfYWRkX2xpbmtlZCgmbmxtc2csIHNvY2ssICJtYWN2dGFwIiwgIm1hY3Z0YXAwIiwgInZl dGgwX21hY3Z0YXAiKTsKICBuZXRsaW5rX2FkZF9saW5rZWQoJm5sbXNnLCBzb2NrLCAibWFjc2Vj IiwgIm1hY3NlYzAiLCAidmV0aDFfbWFjdnRhcCIpOwogIGNoYXIgYWRkclszMl07CiAgc3ByaW50 ZihhZGRyLCBERVZfSVBWNCwgMTQgKyAxMCk7CiAgc3RydWN0IGluX2FkZHIgZ2VuZXZlX2FkZHI0 OwogIGlmIChpbmV0X3B0b24oQUZfSU5FVCwgYWRkciwgJmdlbmV2ZV9hZGRyNCkgPD0gMCkKICAg IGV4aXQoMSk7CiAgc3RydWN0IGluNl9hZGRyIGdlbmV2ZV9hZGRyNjsKICBpZiAoaW5ldF9wdG9u KEFGX0lORVQ2LCAiZmMwMDo6MDEiLCAmZ2VuZXZlX2FkZHI2KSA8PSAwKQogICAgZXhpdCgxKTsK ICBuZXRsaW5rX2FkZF9nZW5ldmUoJm5sbXNnLCBzb2NrLCAiZ2VuZXZlMCIsIDAsICZnZW5ldmVf YWRkcjQsIDApOwogIG5ldGxpbmtfYWRkX2dlbmV2ZSgmbmxtc2csIHNvY2ssICJnZW5ldmUxIiwg MSwgMCwgJmdlbmV2ZV9hZGRyNik7CiAgbmV0ZGV2c2ltX2FkZCgoaW50KXByb2NpZCwgNCk7CiAg bmV0bGlua193aXJlZ3VhcmRfc2V0dXAoKTsKICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGRldmlj ZXMpIC8gKHNpemVvZihkZXZpY2VzWzBdKSk7IGkrKykgewogICAgY2hhciBhZGRyWzMyXTsKICAg IHNwcmludGYoYWRkciwgREVWX0lQVjQsIGkgKyAxMCk7CiAgICBuZXRsaW5rX2FkZF9hZGRyNCgm bmxtc2csIHNvY2ssIGRldmljZXNbaV0ubmFtZSwgYWRkcik7CiAgICBpZiAoIWRldmljZXNbaV0u bm9pcHY2KSB7CiAgICAgIHNwcmludGYoYWRkciwgREVWX0lQVjYsIGkgKyAxMCk7CiAgICAgIG5l dGxpbmtfYWRkX2FkZHI2KCZubG1zZywgc29jaywgZGV2aWNlc1tpXS5uYW1lLCBhZGRyKTsKICAg IH0KICAgIHVpbnQ2NF90IG1hY2FkZHIgPSBERVZfTUFDICsgKChpICsgMTB1bGwpIDw8IDQwKTsK ICAgIG5ldGxpbmtfZGV2aWNlX2NoYW5nZSgmbmxtc2csIHNvY2ssIGRldmljZXNbaV0ubmFtZSwg dHJ1ZSwgMCwgJm1hY2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlc1tpXS5t YWNzaXplLCBOVUxMKTsKICB9CiAgY2xvc2Uoc29jayk7Cn0Kc3RhdGljIHZvaWQgaW5pdGlhbGl6 ZV9uZXRkZXZpY2VzX2luaXQodm9pZCkKewogIGludCBzb2NrID0gc29ja2V0KEFGX05FVExJTkss IFNPQ0tfUkFXLCBORVRMSU5LX1JPVVRFKTsKICBpZiAoc29jayA9PSAtMSkKICAgIGV4aXQoMSk7 CiAgc3RydWN0IHsKICAgIGNvbnN0IGNoYXIqIHR5cGU7CiAgICBpbnQgbWFjc2l6ZTsKICAgIGJv b2wgbm9pcHY2OwogICAgYm9vbCBub3VwOwogIH0gZGV2dHlwZXNbXSA9IHsKICAgICAgeyJuciIs IDcsIHRydWV9LAogICAgICB7InJvc2UiLCA1LCB0cnVlLCB0cnVlfSwKICB9OwogIHVuc2lnbmVk IGk7CiAgZm9yIChpID0gMDsgaSA8IHNpemVvZihkZXZ0eXBlcykgLyBzaXplb2YoZGV2dHlwZXNb MF0pOyBpKyspIHsKICAgIGNoYXIgZGV2WzMyXSwgYWRkclszMl07CiAgICBzcHJpbnRmKGRldiwg IiVzJWQiLCBkZXZ0eXBlc1tpXS50eXBlLCAoaW50KXByb2NpZCk7CiAgICBzcHJpbnRmKGFkZHIs ICIxNzIuMzAuJWQuJWQiLCBpLCAoaW50KXByb2NpZCArIDEpOwogICAgbmV0bGlua19hZGRfYWRk cjQoJm5sbXNnLCBzb2NrLCBkZXYsIGFkZHIpOwogICAgaWYgKCFkZXZ0eXBlc1tpXS5ub2lwdjYp IHsKICAgICAgc3ByaW50ZihhZGRyLCAiZmU4ODo6JTAyeDolMDJ4IiwgaSwgKGludClwcm9jaWQg KyAxKTsKICAgICAgbmV0bGlua19hZGRfYWRkcjYoJm5sbXNnLCBzb2NrLCBkZXYsIGFkZHIpOwog ICAgfQogICAgaW50IG1hY3NpemUgPSBkZXZ0eXBlc1tpXS5tYWNzaXplOwogICAgdWludDY0X3Qg bWFjYWRkciA9IDB4YmJiYmJiICsKICAgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGxv bmcgbG9uZylpIDw8ICg4ICogKG1hY3NpemUgLSAyKSkpICsKICAgICAgICAgICAgICAgICAgICAg ICAocHJvY2lkIDw8ICg4ICogKG1hY3NpemUgLSAxKSkpOwogICAgbmV0bGlua19kZXZpY2VfY2hh bmdlKCZubG1zZywgc29jaywgZGV2LCAhZGV2dHlwZXNbaV0ubm91cCwgMCwgJm1hY2FkZHIsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgbWFjc2l6ZSwgTlVMTCk7CiAgfQogIGNsb3NlKHNvY2sp Owp9CgojZGVmaW5lIE1BWF9GRFMgMzAKCnN0YXRpYyB2b2lkIHNldHVwX2NvbW1vbigpCnsKICBp ZiAobW91bnQoMCwgIi9zeXMvZnMvZnVzZS9jb25uZWN0aW9ucyIsICJmdXNlY3RsIiwgMCwgMCkp IHsKICB9Cn0KCnN0YXRpYyB2b2lkIHNldHVwX2JpbmRlcmZzKCkKewogIGlmIChta2RpcigiL2Rl di9iaW5kZXJmcyIsIDA3NzcpKSB7CiAgfQogIGlmIChtb3VudCgiYmluZGVyIiwgIi9kZXYvYmlu ZGVyZnMiLCAiYmluZGVyIiwgMCwgTlVMTCkpIHsKICB9CiAgaWYgKHN5bWxpbmsoIi9kZXYvYmlu ZGVyZnMiLCAiLi9iaW5kZXJmcyIpKSB7CiAgfQp9CgpzdGF0aWMgdm9pZCBsb29wKCk7CgpzdGF0 aWMgdm9pZCBzYW5kYm94X2NvbW1vbigpCnsKICBwcmN0bChQUl9TRVRfUERFQVRIU0lHLCBTSUdL SUxMLCAwLCAwLCAwKTsKICBzZXRzaWQoKTsKICBzdHJ1Y3QgcmxpbWl0IHJsaW07CiAgcmxpbS5y bGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSAoMjAwIDw8IDIwKTsKICBzZXRybGltaXQoUkxJTUlU X0FTLCAmcmxpbSk7CiAgcmxpbS5ybGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSAzMiA8PCAyMDsK ICBzZXRybGltaXQoUkxJTUlUX01FTUxPQ0ssICZybGltKTsKICBybGltLnJsaW1fY3VyID0gcmxp bS5ybGltX21heCA9IDEzNiA8PCAyMDsKICBzZXRybGltaXQoUkxJTUlUX0ZTSVpFLCAmcmxpbSk7 CiAgcmxpbS5ybGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSAxIDw8IDIwOwogIHNldHJsaW1pdChS TElNSVRfU1RBQ0ssICZybGltKTsKICBybGltLnJsaW1fY3VyID0gcmxpbS5ybGltX21heCA9IDEy OCA8PCAyMDsKICBzZXRybGltaXQoUkxJTUlUX0NPUkUsICZybGltKTsKICBybGltLnJsaW1fY3Vy ID0gcmxpbS5ybGltX21heCA9IDI1NjsKICBzZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsaW0p OwogIGlmICh1bnNoYXJlKENMT05FX05FV05TKSkgewogIH0KICBpZiAobW91bnQoTlVMTCwgIi8i LCBOVUxMLCBNU19SRUMgfCBNU19QUklWQVRFLCBOVUxMKSkgewogIH0KICBpZiAodW5zaGFyZShD TE9ORV9ORVdJUEMpKSB7CiAgfQogIGlmICh1bnNoYXJlKDB4MDIwMDAwMDApKSB7CiAgfQogIGlm ICh1bnNoYXJlKENMT05FX05FV1VUUykpIHsKICB9CiAgaWYgKHVuc2hhcmUoQ0xPTkVfU1lTVlNF TSkpIHsKICB9CiAgdHlwZWRlZiBzdHJ1Y3QgewogICAgY29uc3QgY2hhciogbmFtZTsKICAgIGNv bnN0IGNoYXIqIHZhbHVlOwogIH0gc3lzY3RsX3Q7CiAgc3RhdGljIGNvbnN0IHN5c2N0bF90IHN5 c2N0bHNbXSA9IHsKICAgICAgeyIvcHJvYy9zeXMva2VybmVsL3NobW1heCIsICIxNjc3NzIxNiJ9 LAogICAgICB7Ii9wcm9jL3N5cy9rZXJuZWwvc2htYWxsIiwgIjUzNjg3MDkxMiJ9LAogICAgICB7 Ii9wcm9jL3N5cy9rZXJuZWwvc2htbW5pIiwgIjEwMjQifSwKICAgICAgeyIvcHJvYy9zeXMva2Vy bmVsL21zZ21heCIsICI4MTkyIn0sCiAgICAgIHsiL3Byb2Mvc3lzL2tlcm5lbC9tc2dtbmkiLCAi MTAyNCJ9LAogICAgICB7Ii9wcm9jL3N5cy9rZXJuZWwvbXNnbW5iIiwgIjEwMjQifSwKICAgICAg eyIvcHJvYy9zeXMva2VybmVsL3NlbSIsICIxMDI0IDEwNDg1NzYgNTAwIDEwMjQifSwKICB9Owog IHVuc2lnbmVkIGk7CiAgZm9yIChpID0gMDsgaSA8IHNpemVvZihzeXNjdGxzKSAvIHNpemVvZihz eXNjdGxzWzBdKTsgaSsrKQogICAgd3JpdGVfZmlsZShzeXNjdGxzW2ldLm5hbWUsIHN5c2N0bHNb aV0udmFsdWUpOwp9CgpzdGF0aWMgaW50IHdhaXRfZm9yX2xvb3AoaW50IHBpZCkKewogIGlmIChw aWQgPCAwKQogICAgZXhpdCgxKTsKICBpbnQgc3RhdHVzID0gMDsKICB3aGlsZSAod2FpdHBpZCgt MSwgJnN0YXR1cywgX19XQUxMKSAhPSBwaWQpIHsKICB9CiAgcmV0dXJuIFdFWElUU1RBVFVTKHN0 YXR1cyk7Cn0KCnN0YXRpYyB2b2lkIGRyb3BfY2Fwcyh2b2lkKQp7CiAgc3RydWN0IF9fdXNlcl9j YXBfaGVhZGVyX3N0cnVjdCBjYXBfaGRyID0ge307CiAgc3RydWN0IF9fdXNlcl9jYXBfZGF0YV9z dHJ1Y3QgY2FwX2RhdGFbMl0gPSB7fTsKICBjYXBfaGRyLnZlcnNpb24gPSBfTElOVVhfQ0FQQUJJ TElUWV9WRVJTSU9OXzM7CiAgY2FwX2hkci5waWQgPSBnZXRwaWQoKTsKICBpZiAoc3lzY2FsbChT WVNfY2FwZ2V0LCAmY2FwX2hkciwgJmNhcF9kYXRhKSkKICAgIGV4aXQoMSk7CiAgY29uc3QgaW50 IGRyb3AgPSAoMSA8PCBDQVBfU1lTX1BUUkFDRSkgfCAoMSA8PCBDQVBfU1lTX05JQ0UpOwogIGNh cF9kYXRhWzBdLmVmZmVjdGl2ZSAmPSB+ZHJvcDsKICBjYXBfZGF0YVswXS5wZXJtaXR0ZWQgJj0g fmRyb3A7CiAgY2FwX2RhdGFbMF0uaW5oZXJpdGFibGUgJj0gfmRyb3A7CiAgaWYgKHN5c2NhbGwo U1lTX2NhcHNldCwgJmNhcF9oZHIsICZjYXBfZGF0YSkpCiAgICBleGl0KDEpOwp9CgpzdGF0aWMg aW50IGRvX3NhbmRib3hfbm9uZSh2b2lkKQp7CiAgaWYgKHVuc2hhcmUoQ0xPTkVfTkVXUElEKSkg ewogIH0KICBpbnQgcGlkID0gZm9yaygpOwogIGlmIChwaWQgIT0gMCkKICAgIHJldHVybiB3YWl0 X2Zvcl9sb29wKHBpZCk7CiAgc2V0dXBfY29tbW9uKCk7CiAgc2FuZGJveF9jb21tb24oKTsKICBk cm9wX2NhcHMoKTsKICBpbml0aWFsaXplX25ldGRldmljZXNfaW5pdCgpOwogIGlmICh1bnNoYXJl KENMT05FX05FV05FVCkpIHsKICB9CiAgd3JpdGVfZmlsZSgiL3Byb2Mvc3lzL25ldC9pcHY0L3Bp bmdfZ3JvdXBfcmFuZ2UiLCAiMCA2NTUzNSIpOwogIGluaXRpYWxpemVfbmV0ZGV2aWNlcygpOwog IHNldHVwX2JpbmRlcmZzKCk7CiAgbG9vcCgpOwogIGV4aXQoMSk7Cn0KCnN0YXRpYyB2b2lkIGtp bGxfYW5kX3dhaXQoaW50IHBpZCwgaW50KiBzdGF0dXMpCnsKICBraWxsKC1waWQsIFNJR0tJTEwp OwogIGtpbGwocGlkLCBTSUdLSUxMKTsKICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7 CiAgICBpZiAod2FpdHBpZCgtMSwgc3RhdHVzLCBXTk9IQU5HIHwgX19XQUxMKSA9PSBwaWQpCiAg ICAgIHJldHVybjsKICAgIHVzbGVlcCgxMDAwKTsKICB9CiAgRElSKiBkaXIgPSBvcGVuZGlyKCIv c3lzL2ZzL2Z1c2UvY29ubmVjdGlvbnMiKTsKICBpZiAoZGlyKSB7CiAgICBmb3IgKDs7KSB7CiAg ICAgIHN0cnVjdCBkaXJlbnQqIGVudCA9IHJlYWRkaXIoZGlyKTsKICAgICAgaWYgKCFlbnQpCiAg ICAgICAgYnJlYWs7CiAgICAgIGlmIChzdHJjbXAoZW50LT5kX25hbWUsICIuIikgPT0gMCB8fCBz dHJjbXAoZW50LT5kX25hbWUsICIuLiIpID09IDApCiAgICAgICAgY29udGludWU7CiAgICAgIGNo YXIgYWJvcnRbMzAwXTsKICAgICAgc25wcmludGYoYWJvcnQsIHNpemVvZihhYm9ydCksICIvc3lz L2ZzL2Z1c2UvY29ubmVjdGlvbnMvJXMvYWJvcnQiLAogICAgICAgICAgICAgICBlbnQtPmRfbmFt ZSk7CiAgICAgIGludCBmZCA9IG9wZW4oYWJvcnQsIE9fV1JPTkxZKTsKICAgICAgaWYgKGZkID09 IC0xKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYgKHdyaXRlKGZkLCBhYm9y dCwgMSkgPCAwKSB7CiAgICAgIH0KICAgICAgY2xvc2UoZmQpOwogICAgfQogICAgY2xvc2VkaXIo ZGlyKTsKICB9IGVsc2UgewogIH0KICB3aGlsZSAod2FpdHBpZCgtMSwgc3RhdHVzLCBfX1dBTEwp ICE9IHBpZCkgewogIH0KfQoKc3RhdGljIHZvaWQgc2V0dXBfdGVzdCgpCnsKICBwcmN0bChQUl9T RVRfUERFQVRIU0lHLCBTSUdLSUxMLCAwLCAwLCAwKTsKICBzZXRwZ3JwKCk7CiAgd3JpdGVfZmls ZSgiL3Byb2Mvc2VsZi9vb21fc2NvcmVfYWRqIiwgIjEwMDAiKTsKfQoKc3RhdGljIHZvaWQgY2xv c2VfZmRzKCkKewogIGZvciAoaW50IGZkID0gMzsgZmQgPCBNQVhfRkRTOyBmZCsrKQogICAgY2xv c2UoZmQpOwp9CgpzdGF0aWMgdm9pZCBleGVjdXRlX29uZSh2b2lkKTsKCiNkZWZpbmUgV0FJVF9G TEFHUyBfX1dBTEwKCnN0YXRpYyB2b2lkIGxvb3Aodm9pZCkKewogIGludCBpdGVyID0gMDsKICBm b3IgKDs7IGl0ZXIrKykgewogICAgaW50IHBpZCA9IGZvcmsoKTsKICAgIGlmIChwaWQgPCAwKQog ICAgICBleGl0KDEpOwogICAgaWYgKHBpZCA9PSAwKSB7CiAgICAgIHNldHVwX3Rlc3QoKTsKICAg ICAgZXhlY3V0ZV9vbmUoKTsKICAgICAgY2xvc2VfZmRzKCk7CiAgICAgIGV4aXQoMCk7CiAgICB9 CiAgICBpbnQgc3RhdHVzID0gMDsKICAgIHVpbnQ2NF90IHN0YXJ0ID0gY3VycmVudF90aW1lX21z KCk7CiAgICBmb3IgKDs7KSB7CiAgICAgIGlmICh3YWl0cGlkKC0xLCAmc3RhdHVzLCBXTk9IQU5H IHwgV0FJVF9GTEFHUykgPT0gcGlkKQogICAgICAgIGJyZWFrOwogICAgICBzbGVlcF9tcygxKTsK ICAgICAgaWYgKGN1cnJlbnRfdGltZV9tcygpIC0gc3RhcnQgPCA1MDAwKQogICAgICAgIGNvbnRp bnVlOwogICAgICBraWxsX2FuZF93YWl0KHBpZCwgJnN0YXR1cyk7CiAgICAgIGJyZWFrOwogICAg fQogIH0KfQoKdWludDY0X3QgclszXSA9IHsweGZmZmZmZmZmZmZmZmZmZmYsIDB4MCwgMHhmZmZm ZmZmZmZmZmZmZmZmfTsKCnZvaWQgZXhlY3V0ZV9vbmUodm9pZCkKewogIGludHB0cl90IHJlcyA9 IDA7CiAgcmVzID0gc3lzY2FsbChfX05SX3NvY2tldCwgLypkb21haW49Ki8weDExdWwsIC8qdHlw ZT0qLzB4ODAwMDAwMDAzdWwsCiAgICAgICAgICAgICAgICAvKnByb3RvPSovMCk7CiAgaWYgKHJl cyAhPSAtMSkKICAgIHJbMF0gPSByZXM7CiAgbWVtY3B5KCh2b2lkKikweDIwMDAwNjAwLCAidGVh bTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCIsCiAgICAgICAg IDE2KTsKICByZXMgPSBzeXNjYWxsKF9fTlJfaW9jdGwsIC8qZmQ9Ki9yWzBdLCAvKmNtZD0qLzB4 ODkzMywgLyphcmc9Ki8weDIwMDAwNjAwdWwpOwogIGlmIChyZXMgIT0gLTEpCiAgICByWzFdID0g Kih1aW50MzJfdCopMHgyMDAwMDYxMDsKICByZXMgPSBzeXNjYWxsKF9fTlJfc29ja2V0LCAvKmRv bWFpbj0qLzB4MTB1bCwgLyp0eXBlPSovM3VsLCAvKnByb3RvPSovMCk7CiAgaWYgKHJlcyAhPSAt MSkKICAgIHJbMl0gPSByZXM7CiAgKih1aW50NjRfdCopMHgyMDAwMDdjMCA9IDA7CiAgKih1aW50 MzJfdCopMHgyMDAwMDdjOCA9IDA7CiAgKih1aW50NjRfdCopMHgyMDAwMDdkMCA9IDB4MjAwMDA3 ODA7CiAgKih1aW50NjRfdCopMHgyMDAwMDc4MCA9IDB4MjAwMDAxNDA7CiAgKih1aW50MzJfdCop MHgyMDAwMDE0MCA9IDB4YjA7CiAgKih1aW50MTZfdCopMHgyMDAwMDE0NCA9IDB4MjQ7CiAgKih1 aW50MTZfdCopMHgyMDAwMDE0NiA9IDB4ZjBiOwogICoodWludDMyX3QqKTB4MjAwMDAxNDggPSAw OwogICoodWludDMyX3QqKTB4MjAwMDAxNGMgPSAwOwogICoodWludDhfdCopMHgyMDAwMDE1MCA9 IDA7CiAgKih1aW50OF90KikweDIwMDAwMTUxID0gMDsKICAqKHVpbnQxNl90KikweDIwMDAwMTUy ID0gMHgxMjsKICAqKHVpbnQzMl90KikweDIwMDAwMTU0ID0gclsxXTsKICAqKHVpbnQxNl90Kikw eDIwMDAwMTU4ID0gMDsKICAqKHVpbnQxNl90KikweDIwMDAwMTVhID0gMDsKICAqKHVpbnQxNl90 KikweDIwMDAwMTVjID0gLTE7CiAgKih1aW50MTZfdCopMHgyMDAwMDE1ZSA9IC0xOwogICoodWlu dDE2X3QqKTB4MjAwMDAxNjAgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxNjIgPSAwOwogICoo dWludDE2X3QqKTB4MjAwMDAxNjQgPSAweGI7CiAgKih1aW50MTZfdCopMHgyMDAwMDE2NiA9IDE7 CiAgbWVtY3B5KCh2b2lkKikweDIwMDAwMTY4LCAidGFwcmlvXDAwMCIsIDcpOwogICoodWludDE2 X3QqKTB4MjAwMDAxNzAgPSAweDgwOwogICoodWludDE2X3QqKTB4MjAwMDAxNzIgPSAyOwogICoo dWludDE2X3QqKTB4MjAwMDAxNzQgPSAweDU2OwogICoodWludDE2X3QqKTB4MjAwMDAxNzYgPSAx OwogICoodWludDhfdCopMHgyMDAwMDE3OCA9IDI7CiAgKih1aW50OF90KikweDIwMDAwMTc5ID0g MDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAxN2EgPSAwOwogICoodWludDhfdCopMHgyMDAwMDE3YiA9 IDA7CiAgKih1aW50OF90KikweDIwMDAwMTdjID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAxN2Qg PSAwOwogICoodWludDhfdCopMHgyMDAwMDE3ZSA9IDA7CiAgKih1aW50OF90KikweDIwMDAwMTdm ID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAxODAgPSAwOwogICoodWludDhfdCopMHgyMDAwMDE4 MSA9IDA7CiAgKih1aW50OF90KikweDIwMDAwMTgyID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAx ODMgPSAwOwogICoodWludDhfdCopMHgyMDAwMDE4NCA9IDA7CiAgKih1aW50OF90KikweDIwMDAw MTg1ID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAwMDAxODYgPSAwOwogICoodWludDhfdCopMHgyMDAw MDE4NyA9IDA7CiAgKih1aW50OF90KikweDIwMDAwMTg4ID0gMDsKICAqKHVpbnQ4X3QqKTB4MjAw MDAxODkgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxOGEgPSA4OwogICoodWludDE2X3QqKTB4 MjAwMDAxOGMgPSA0OwogICoodWludDE2X3QqKTB4MjAwMDAxOGUgPSAweDgxOwogICoodWludDE2 X3QqKTB4MjAwMDAxOTAgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxOTIgPSAwOwogICoodWlu dDE2X3QqKTB4MjAwMDAxOTQgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxOTYgPSAwOwogICoo dWludDE2X3QqKTB4MjAwMDAxOTggPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxOWEgPSAwOwog ICoodWludDE2X3QqKTB4MjAwMDAxOWMgPSAweDgwMDA7CiAgKih1aW50MTZfdCopMHgyMDAwMDE5 ZSA9IDA7CiAgKih1aW50MTZfdCopMHgyMDAwMDFhMCA9IDA7CiAgKih1aW50MTZfdCopMHgyMDAw MDFhMiA9IDA7CiAgKih1aW50MTZfdCopMHgyMDAwMDFhNCA9IDA7CiAgKih1aW50MTZfdCopMHgy MDAwMDFhNiA9IDA7CiAgKih1aW50MTZfdCopMHgyMDAwMDFhOCA9IDA7CiAgKih1aW50MTZfdCop MHgyMDAwMDFhYSA9IDA7CiAgKih1aW50MTZfdCopMHgyMDAwMDFhYyA9IDg7CiAgKih1aW50MTZf dCopMHgyMDAwMDFhZSA9IC0xOwogICoodWludDE2X3QqKTB4MjAwMDAxYjAgPSAwOwogICoodWlu dDE2X3QqKTB4MjAwMDAxYjIgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxYjQgPSAwOwogICoo dWludDE2X3QqKTB4MjAwMDAxYjYgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxYjggPSAwOwog ICoodWludDE2X3QqKTB4MjAwMDAxYmEgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxYmMgPSAw OwogICoodWludDE2X3QqKTB4MjAwMDAxYmUgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxYzAg PSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxYzIgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAx YzQgPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxYzYgPSAwOwogICoodWludDE2X3QqKTB4MjAw MDAxYzggPSAwOwogICoodWludDE2X3QqKTB4MjAwMDAxY2MgPSAweDEwOwogIFNUT1JFX0JZX0JJ VE1BU0sodWludDE2X3QsICwgMHgyMDAwMDFjZSwgMiwgMCwgMTQpOwogIFNUT1JFX0JZX0JJVE1B U0sodWludDE2X3QsICwgMHgyMDAwMDFjZiwgMCwgNiwgMSk7CiAgU1RPUkVfQllfQklUTUFTSyh1 aW50MTZfdCwgLCAweDIwMDAwMWNmLCAxLCA3LCAxKTsKICAqKHVpbnQxNl90KikweDIwMDAwMWQw ID0gMHhjOwogIFNUT1JFX0JZX0JJVE1BU0sodWludDE2X3QsICwgMHgyMDAwMDFkMiwgMSwgMCwg MTQpOwogIFNUT1JFX0JZX0JJVE1BU0sodWludDE2X3QsICwgMHgyMDAwMDFkMywgMCwgNiwgMSk7 CiAgU1RPUkVfQllfQklUTUFTSyh1aW50MTZfdCwgLCAweDIwMDAwMWQzLCAxLCA3LCAxKTsKICAq KHVpbnQxNl90KikweDIwMDAwMWQ0ID0gODsKICAqKHVpbnQxNl90KikweDIwMDAwMWQ2ID0gNDsK ICAqKHVpbnQzMl90KikweDIwMDAwMWQ4ID0gMHg3ZWIyNDU0ODsKICAqKHVpbnQxNl90KikweDIw MDAwMWRjID0gODsKICAqKHVpbnQxNl90KikweDIwMDAwMWRlID0gNTsKICAqKHVpbnQzMl90Kikw eDIwMDAwMWUwID0gMTsKICAqKHVpbnQxNl90KikweDIwMDAwMWU0ID0gMHhjOwogICoodWludDE2 X3QqKTB4MjAwMDAxZTYgPSA4OwogICoodWludDY0X3QqKTB4MjAwMDAxZTggPSA5OwogICoodWlu dDY0X3QqKTB4MjAwMDA3ODggPSAweGIwOwogICoodWludDY0X3QqKTB4MjAwMDA3ZDggPSAxOwog ICoodWludDY0X3QqKTB4MjAwMDA3ZTAgPSAwOwogICoodWludDY0X3QqKTB4MjAwMDA3ZTggPSAw OwogICoodWludDMyX3QqKTB4MjAwMDA3ZjAgPSAwOwogIHN5c2NhbGwoX19OUl9zZW5kbXNnLCAv KmZkPSovclsyXSwgLyptc2c9Ki8weDIwMDAwN2MwdWwsIC8qZj0qLzB1bCk7Cn0KaW50IG1haW4o dm9pZCkKewogIHN5c2NhbGwoX19OUl9tbWFwLCAvKmFkZHI9Ki8weDFmZmZmMDAwdWwsIC8qbGVu PSovMHgxMDAwdWwsIC8qcHJvdD0qLzB1bCwKICAgICAgICAgIC8qZmxhZ3M9Ki8weDMydWwsIC8q ZmQ9Ki8tMSwgLypvZmZzZXQ9Ki8wdWwpOwogIHN5c2NhbGwoX19OUl9tbWFwLCAvKmFkZHI9Ki8w eDIwMDAwMDAwdWwsIC8qbGVuPSovMHgxMDAwMDAwdWwsIC8qcHJvdD0qLzd1bCwKICAgICAgICAg IC8qZmxhZ3M9Ki8weDMydWwsIC8qZmQ9Ki8tMSwgLypvZmZzZXQ9Ki8wdWwpOwogIHN5c2NhbGwo X19OUl9tbWFwLCAvKmFkZHI9Ki8weDIxMDAwMDAwdWwsIC8qbGVuPSovMHgxMDAwdWwsIC8qcHJv dD0qLzB1bCwKICAgICAgICAgIC8qZmxhZ3M9Ki8weDMydWwsIC8qZmQ9Ki8tMSwgLypvZmZzZXQ9 Ki8wdWwpOwogIGRvX3NhbmRib3hfbm9uZSgpOwogIHJldHVybiAwOwp9Cg== ------=ALIBOUNDARY_11946_7f1fa17ff700_65bdda30_37ac01--